C++ Arabic
C++ Arabic
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
…Prog
اﻋﺪاد
أ.هﺸﺎم ﺣﺴﻦ
1
ﺗﻤﻬﻴﺪ
ﻳﺘﻜﻮن اﻟﺤﺎﺳﺐ ﺑﺼﻮرة أﺳﺎﺳﻴﺔ ﻣﻦ اﻟﻤﻜﻮﻧﺎت اﻟﻤﺎدﻳﺔ Hardwareواﻟﻤﻜﻮﻧﺎت اﻟﺒﺮﻣﺠﻴﺔ Softwareواﻟﺘﻲ ﺗﺘﺄﻟﻒ
ﻣﻦ ﻧﻈﻢ ﺗﺸﻐﻴﻞ وﺑﺮاﻣﺞ ﺗﻄﺒﻴﻘﻴﺔ ،اﻷداة اﻟﻤﺴﺘﺨﺪﻣﺔ ﻹﻧﺘﺎج هﺬﻩ اﻟﻤﻜﻮﻧﺎت هﻲ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ.
وهﺬﻩ ﺑﻌﺾ اﻷﻣﺜﻠﺔ ﻋﻠﻰ اﻟﺒﺮﻣﺠﻴﺎت:
.1ﻧﻈﻢ ﻗﻮاﻋﺪ اﻟﺒﻴﺎﻧﺎت.
.2اﻟﻨﻈﻢ اﻟﺨﺒﻴﺮة
.3ﻧﻈﻢ اﻟﺘﺤﻜﻢ اﻟﻤﺒﺮﻣﺞ
.4ﻧﻈﻢ اﻟﺘﺸﻐﻴﻞ
.5ﺑﺮاﻣﺞ اﻟﺤﻮاﺳﺐ اﻟﺸﺨﺼﻴﺔ آﺎﻟﺒﺮﻣﺠﻴﺎت اﻟﻤﻜﺘﺒﻴﺔ واﻷﻟﻌﺎب
.6ﺑﺮﻣﺠﺔ ﺷﺒﻜﺎت اﻟﺤﺎﺳﺐ
.7ﺑﺮﻣﺠﺔ ﺻﻔﺤﺎت اﻹﻧﺘﺮﻧﺖ
ﻳﻤﻜﻦ ﺗﻘﺴﻴﻢ ﻣﺴﺘﻮﻳﺎت ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ إﻟﻰ ﺛﻼث ﻣﺴﺘﻮﻳﺎت آﺎﻵﺗﻲ:
.1ﻟﻐﺔ اﻟﻤﺴﺘﻮى اﻟﻤﻨﺨﻔﺾ أو ﻣﺎ ﻳﻌﺮف ﺑﻠﻐﺔ اﻵﻟﺔ Machine Languageوهﻲ ﻟﻐﺔ اﻟﺼﻔﺮ واﻟﻮاﺣﺪ
ﺣﻴﺚ ﻳﻤﺜﻞ اﻟﺼﻔﺮ اﻟﺠﻬﺪ اﻟﻜﻬﺮﺑﻲ اﻟﻤﻨﺨﻔﺾ واﻟﻮاﺣﺪ اﻟﺠﻬﺪ اﻟﻜﻬﺮﺑﻲ اﻟﻌﺎﻟﻲ.
.2ﻟﻐﺔ اﻟﺘﺠﻤﻴﻊ Assembly Languageوﺗﺤﺘﻮي ﻋﻠﻰ أواﻣﺮ ﻣﻘﺘﺒﺴﺔ ﻣﻦ اﻟﻠﻐﺔ اﻹﻧﺠﻠﻴﺰﻳﺔ ﻣﺜﻞ add,
. sub
.3ﻟﻐﺎت اﻟﻤﺴﺘﻮى اﻟﻌﺎﻟﻲ وهﻲ اﻷﻗﺮب ﻟﻤﺴﺘﻮى اﻟﻤﺒﺮﻣﺞ وﺗﺤﺘﻮي أﻳﻀﺎ ﻋﻠﻰ أواﻣﺮ ﻣﻘﺘﺒﺴﺔ ﻣﻦ اﻟﻠﻐﺔ
اﻹﻧﺠﻠﻴﺰﻳﺔ ،وهﻲ اﻟﻠﻐﺎت اﻟﺘﻲ ﻳﺴﺘﺨﺪﻣﻬﺎ اﻟﻤﺒﺮﻣﺠﻮن ﻓﻲ ﺗﻨﻔﻴﺬ اﻟﺘﻄﺒﻴﻘﺎت اﻟﻤﺨﺘﻠﻔﺔ ،ﺑﻌﺾ هﺬﻩ اﻟﻠﻐﺎت
ﻋﺎﻣﺔ اﻟﻐﺮض ﻣﺜﻞ ﻟﻐﺎت ....basic, c, c+وﺑﻌﻀﻬﺎ ﺧﺎص اﻟﻐﺮض ﻣﺜﻞ Cobol, simula, prolog
.......
ﺗﻌﺮﻳﻒ :
اﻟﺒﺮﻧﺎﻣﺞ هﻮ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷواﻣﺮ واﻟﺘﺮآﻴﺒﺎت اﻟﺒﺮﻣﺠﻴﺔ واﻟﺘﻲ ﺗﺘﻢ ﺗﺮﺟﻤﺘﻬﺎ إﻟﻰ ﻟﻐﺔ اﻵﻟﺔ ﺛﻢ ﺗﻨﻔﻴﺬهﺎ.
آﻞ اﻟﺘﻄﺒﻴﻘﺎت اﻟﺘﻲ ﺗﻘﻮم ﺑﻬﺎ ﻋﻠﻰ اﻟﺤﺎﺳﺐ ﻟﻴﺴﺖ إﻻ ﺗﻨﻔﻴﺬًا ﻟﺒﺮاﻣﺞ آﺘﺒﺖ ﺑﺈﺣﺪى ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﺑﻌﺪ أن ﺗﻤﺖ
ﺗﺮﺟﻤﺘﻬﺎ إﻟﻰ ﻟﻐﺔ اﻵﻟﺔ.
اﻷﻣﺮ اﻟﺒﺮﻣﺠﻲ :هﻮ ﻋﺒﺎرة ﻋﻦ ﻣﻘﻄﻊ ﻟﻐﻮي ﻳﻜﺘﺐ ﺑﺼﻴﻐﻪ ﻣﺤﺪدة ﻟﺘﻨﻔﻴﺬ ﻣﻬﻤﺔ ﻣﻌﻴﻨﻪ.
ﺑﻌﺾ اﻷﻣﺜﻠﺔ ﻋﻠﻰ اﻷواﻣﺮ اﻟﺒﺮﻣﺠﻴﺔ:
أواﻣﺮ اﻹدﺧﺎل وهﻲ اﻟﺘﻲ ﺗﺴﻤﺢ ﻟﻠﻤﺴﺘﺨﺪم إدﺧﺎل ﺑﻴﺎﻧﺎت ﻟﻠﺤﺎﺳﺐ ﻋﺒﺮ وﺣﺪات اﻹدﺧﺎل.
أواﻣﺮ اﻹﺧﺮاج وهﻲ اﻟﺘﻲ ﺗﺴﻤﺢ ﻟﻠﻤﺴﺘﺨﺪم ﺑﺈﻇﻬﺎر اﻟﺒﻴﺎﻧﺎت ﻋﺒﺮ وﺣﺪات اﻹﺧﺮاج اﻟﻤﺨﺘﻠﻔﺔ.
اﻷواﻣﺮ اﻟﺘﻲ ﺗﺴﻤﺢ ﺑﻔﺘﺢ اﻟﻤﻠﻔﺎت وﻗﺮاءة ﺑﻴﺎﻧﺎت ﻣﻨﻬﺎ أو آﺘﺎﺑﺔ ﺑﻴﺎﻧﺎت ﻋﻠﻴﻬﺎ.
أدوات اﻟﺘﺤﻜﻢ ﻓﻲ ﻣﺴﺎر اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ ﺣﻴﺚ ﺗﻨﻔﻴﺬ أﻣﺮ ﻋﻨﺪ ﺗﻮﻓﺮ ﺷﺮط ﻣﺤﺪد أو ﺗﻜﺮار ﺗﻨﻔﻴﺬ أﻣﺮ ﻣﻌﻴﻦ.
و ﺑﺎﻟﻄﺒﻊ ﻟﻜﻞ ﻟﻐﺔ ﺑﺮﻣﺠﺔ أﺳﻠﻮﺑﻬﺎ اﻟﺨﺎص ﻓﻲ اﻟﺘﻌﺒﻴﺮ ﻋﻦ هﺬﻩ اﻷواﻣﺮ.
ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﻋﺎﻟﻴﺔ اﻟﻤﺴﺘﻮى ﻳﻤﻜﻦ ﺗﺼﻨﻴﻔﻬﺎ إﻟﻰ ﺛﻼﺛﺔ ﺗﺼﻨﻴﻔﺎت ﻣﻦ ﺣﻴﺚ اﻟﺘﺮآﻴﺒﻪ اﻟﻌﺎﻣﺔ آﺎﻵﺗﻲ:
.1اﻟﻠﻐﺎت اﻹﺟﺮاﺋﻴﺔ " "procedural languagesوﻳﺘﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ ﻓﻴﻬﺎ ﻣﻦ ﻋﺪة أواﻣﺮ ﺑﺮﻣﺠﻴﻪ
ﻣﺘﺘﺎﺑﻌﺔ ،وﻣﻦ أﻣﺜﻠﺔ هﺬﻩ اﻟﻠﻐﺎت ...........fortoran,basic,cobol
.2اﻟﻠﻐﺎت اﻟﻬﻴﻜﻠﻴﺔ " "structural languagesوﻳﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ ﻓﻴﻬﺎ ﻣﻬﻴﻜﻞ أي ﻣﺘﻜﻮن ﻣﻦ ﺗﺮآﻴﺒﺎت
داﺧﻠﻴﺔ ﺗﺴﻤﻰ دوال و اﻟﺪاﻟﺔ ﺗﺤﺘﻮي ﻋﻠﻰ اﻷواﻣﺮ اﻟﺒﺮ ﻣﺠﻴﻪ ،وﻣﻦ أﻣﺜﻠﺔ هﺬﻩ اﻟﻠﻐﺎت
...........prolog,C,pascal
.3اﻟﻠﻐﺎت آﺎﺋﻨﻴﺔ اﻟﺘﻮﺟﻪ " "object oriented languagesوﻳﺘﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ ﻓﻴﻬﺎ ﻣﻦ ﺗﺮآﻴﺒﺎت
ﺑﺮﻣﺠﻴﻪ ﺗﺴﻤﻰ ﺻﻔﻮف ﺗﺤﺘﻮي ﻋﻠﻰ دوال و ﻣﺘﻐﻴﺮات ،وﻳﺘﻤﻴﺰ هﺬا اﻟﻨﻮع ﺑﻌﺪة ﻣﻮاﺻﻔﺎت ﺑﺮﻣﺠﻴﻪ ﺟﺪﻳﺪة
آﺈﻋﺎدة اﻻﺳﺘﺨﺪام واﻟﻮراﺛﺔ وﺗﻐﻠﻴﻒ اﻟﻜﻮد واﻟﺘﻌﺪدﻳﺔ اﻟﺸﻜﻠﻴﺔ وﺑﺎﻟﻄﺒﻊ ﺳﺘﺘﻀﺢ هﺬﻩ اﻟﻤﺴﻤﻴﺎت ﻻﺣﻘًﺎ ﻋﻨﺪ
دراﺳﺘﻬﺎ ﻋﻠﻰ اﻋﺘﺒﺎر أن اﻟﻠﻐﺔ اﻟﺘﻲ ﺳﻨﺴﺘﺨﺪﻣﻬﺎ ﻓﻲ دراﺳﺔ هﺬﻩ اﻟﻤﺎدة ﻣﻦ هﺬا اﻟﻨﻮع ،وﻣﻦ أﻣﺜﻠﺔ هﺬﻩ
اﻟﻠﻐﺎت….Java,C++
ﻳﻌﺘﺒﺮ هﺬا اﻟﺘﺼﻨﻴﻒ ﻟﻠﻐﺎت اﻟﻌﺎﻟﻴﺔ ﻣﺘﺘﺎﺑﻊ زﻣﻨﻴًﺎ ﺣﻴﺚ آﺎﻧﺖ اﻟﺒﺮﻣﺠﺔ اﻹﺟﺮاﺋﻴﺔ هﻲ أوﻟﻰ أﺳﺎﻟﻴﺐ اﻟﺒﺮﻣﺠﺔ اﻟﺘﻲ
اﺳﺘﺨﺪﻣﺖ ﺛﻢ ﻇﻬﺮت اﻟﺒﺮﻣﺠﺔ اﻟﻬﻴﻜﻠﻴﺔ ﺛﻢ ﺁﺧﺮهﺎ ﻓﻲ اﻟﻈﻬﻮر اﻟﺒﺮﻣﺠﺔ اﻟﻜﺎﺋﻨﻴﺔ.
ﺧﻄﻮات ﺣﻞ اﻟﻤﺸﻜﻠﺔ وﺑﻨﺎء اﻟﻨﻈﺎم:
ﻻ ﺷﻚ أن هﺪف اﻟﺒﺮﻣﺠﺔ هﻮ إﻳﺠﺎد اﻟﺤﻞ ﻟﻤﺸﻜﻠﺔ ﻣﺎ ،وﻣﻦ ﺛﻢ ﺑﻨﺎء ﻧﻈﺎم ﻳﻤﺜﻞ اﻟﺤﻞ ﻟﻬﺬة اﻟﻤﺸﻜﻠﺔ وﻟﻬﺬا اﻷﻣﺮ
ﺧﻄﻮات ﻣﺘﺘﺎﺑﻌﺔ ﻻ ﻳﻤﻜﻦ اﻟﺒﺪء ﻓﻲ ﺧﻄﻮة إﻻ إذا اﻧﺘﻬﻴﻨﺎ ﻣﻦ اﻟﺘﻲ ﺗﺴﺒﻘﻬﺎ:
.1ﺗﻌﺮﻳﻒ اﻟﻤﺸﻜﻠﺔ وﺟﻤﻊ اﻟﺒﻴﺎﻧﺎت وﺗﺤﺪﻳﺪ اﻟﻤﺘﻄﻠﺒﺎت ،واﻟﻤﻘﺼﻮد ﺑﺎﻟﻤﺘﻄﻠﺒﺎت هﻨﺎ ﻣﺎذا ﻧﺮﻳﺪ ﻣﻦ أن ﻧﻔﻌﻞ.
.2ﺗﺤﻠﻴﻞ اﻟﻨﻈﺎم وهﻨﺎ ﻳﺘﻢ ﺗﺤﺪﻳﺪ اﻟﻤﺆﺛﺮات اﻷﺳﺎﺳﻴﺔ ﻓﻲ اﻟﻨﻈﺎم ودور آﻞ ﻣﺆﺛﺮ وهﺬا ﻣﺎ ﻳﻌﺮف ﻓﻲ اﻟﺘﺤﻠﻴﻞ
اﻟﻜﺎﺋﻨﻲ ﺑﺎﻟـ , use-caseآﺬﻟﻚ ﺗﺤﺪﻳﺪ ﻣﺨﻄﻂ اﻟﺤﺎﻟﺔ state diagramﻟﻜﻞ ﻋﻨﺼﺮ ﻣﻦ ﻋﻨﺎﺻﺮ اﻟﻨﻈﺎم.
2
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
ﺗﺼﻤﻴﻢ اﻟﻨﻈﺎم :وهﻨﺎ ﻳﺘﻢ ﺑﻨﺎء اﻟﻤﻜﻮﻧﺎت اﻟﺒﺮﻣﺠﻴﺔ ﻟﻠﻨﻈﺎم وﺗﺨﻄﻴﻄﻬﺎ ﻋﻠﻰ اﻟﻮرق ﺑﺎﺳﺘﺨﺪام اﻟﻤﺨﻄﻄﺎت .3
اﻻﻧﺴﻴﺎﺑﻴﺔ flow chartsأو اﻟﺨﻮارزﻣﻴﺎت algorithmsوآﻠﻴﻬﻤﺎ ﻳﻤﺜﻞ وﺻﻒ ﻟﺨﻄﻮات اﻟﺒﺮﻧﺎﻣﺞ ﻏﻴﺮ
أن اﻟﻤﺨﻄﻄﺎت اﻹﻧﺴﻴﺎﺑﻴﺔ ﺗﺨﻄﻴﻄﺎت ﺑﻴﺎﻧﻴﻪ ﻟﻠﺘﻌﺒﻴﺮ ﻋﻦ هﺬﻩ اﻟﺨﻄﻮات وﺳﻨﺘﻨﺎول هﺬﻩ اﻟﻤﺨﻄﻄﺎت ﻣﻊ
ﻋﺮض أﻣﺜﻠﻪ ﻣﻨﺎﺳﺒﺔ ﺧﻼل هﺬا اﻟﻔﺼﻞ إﻧﺸﺎء اﷲ.
آﺘﺎﺑﺔ اﻟﻜﻮد :وهﻨﺎ ﺗﻜﺘﺐ أواﻣﺮ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺼﻮرﻩ ﻓﻌﻠﻴﺔ ﺑﺈﺳﺘﺨﺪام إﺣﺪى ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﻋﺎﻟﻴﺔ اﻟﻤﺴﺘﻮى. .4
إﺧﺘﺒﺎر اﻟﻨﻈﺎم :وﻳﺘﻢ ﺗﺠﺮﻳﺐ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻌﻠﻴًﺎ وﺗﻨﻔﻴﺬة وإآﺘﺸﺎف اﻷﺧﻄﺎء ،وﻳﻤﻜﻦ ﺗﺼﻨﻴﻒ اﻷﺧﻄﺎء .5
اﻟﻤﺘﻮﻗﻌﺔ إﻟﻰ:
أ .أﺧﻄﺎء ﻓﻲ اﻟﺼﻴﻐﺔ syntax errorوهﻲ أﺧﻄﺎء ﻓﻲ ﺻﻴﻐﺔ آﺘﺎﺑﺔ أﻣﺮ ﻣﻌﻴﻦ ،ﻣﻤﺎ ﻳﺆدي ﻟﻌﺪم
ﺗﺮﺟﻤﺔ اﻟﺒﺮﻧﺎﻣﺞ وﺗﻨﻔﻴﺬة ،وﺑﻴﺌﺔ اﻟﻌﻤﻞ اﻟﺒﺮﻣﺠﻴﺔ ﻏﺎﻟﺒﺎ ﻣﺎ ﺗﻨﺒﻪ ﻟﻬﺬا اﻟﻨﻮع ﻣﻦ اﻷﺧﻄﺎء وأﺣﻴﺎﻧًﺎ
ﺗﺤﺪﻳﺪ ﻣﻮﻗﻊ و ﺷﻜﻞ اﻟﺨﻄﺄ
ب .أﺧﻄﺎء ﻓﻲ ﺗﻐﻄﻴﺔ ﻣﺘﻄﻠﺒﺎت اﻟﻨﻈﺎم ،وهﺬا اﻟﻨﻮع ﻣﻦ اﻷﺧﻄﺎء ﻻ ﻳﻤﻜﻦ اآﺘﺸﺎﻓﻪ ﺑﻮاﺳﻄﺔ ﺑﻴﺌﺔ
اﻟﻌﻤﻞ اﻟﺒﺮﻣﺠﻴﺔ ،وﻟﻜﻦ ﻳﻤﻜﻦ ﻣﺮاﺟﻌﺔ أداء اﻟﻨﻈﺎم ﻣﻊ اﻟﻤﺘﻄﻠﺒﺎت اﻟﺘﻲ ﺗﻢ ﺗﻌﺮﻳﻔﻬﺎ ﻓﻲ اﻟﺨﻄﻮة
اﻷوﻟﻰ.
ﺗﺪرﻳﺐ اﻟﻜﻮادر اﻟﺒﺸﺮﻳﺔ ﻋﻠﻰ إﺳﺘﺨﺪام اﻟﻨﻈﺎم اﻟﺠﺪﻳﺪ وﺗﻄﺒﻴﻖ اﻟﻨﻈﺎم ﻓﻌﻠﻴًﺎ ﻋﻠﻰ أرض اﻟﻮاﻗﻊ. .6
اﻟﻤﺨﻄﻄﺎت اﻹﻧﺴﻴﺎﺑﻴﺔ flow charts
آﻤﺎ ذآﺮﻧﺎ ﻣﻦ ﻗﺒﻞ أن هﺬﻩ اﻟﻤﺨﻄﻄﺎت هﻲ وﺿﻊ ﺧﻄﻮات اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﺷﻜﻞ ﻣﺨﻄﻄﺎت وﺗﺴﺘﺨﺪم ﺑﻌﺾ اﻟﺮﻣﻮز
اﻟﻤﺘﻔﻖ ﻋﻠﻴﻬﺎ ﻓﻲ هﺬﻩ اﻟﻤﺨﻄﻄﺎت ﻟﺘﻤﺜﻴﻞ اﻷواﻣﺮ اﻟﺒﺮﻣﺠﻴﺔ آﻤﺎ هﻮ ﻣﻮﺿﺢ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ:
اﻟﻤﺪﻟﻮل اﻟﺮﻣﺰ
ﺑﺪاﻳﺔ /ﻧﻬﺎﻳﺔ اﻟﺒﺮﻧﺎﻣﺞ
ﻣﻌﺎﻟﺠﺔ
ﻗﺮار
ﻣﺜﺎل)(1.1
أﻧﺸﻲ ﻣﺨﻄﻄًﺎ اﻧﺴﻴﺎﺑﻴًﺎ ﻟﺒﺮﻧﺎﻣﺞ ﺣﺴﺎب اﻟﻤﺠﻤﻮع واﻟﻤﺘﻮﺳﻂ:
• ﻷي ﺛﻼﺛﺔ أرﻗﺎم ﻣﺪﺧﻠﺔ؟
• ﻷي ﻋﺪد ﻣﻦ اﻷرﻗﺎم
اﻟﺤﻞ:
اﻟﺒﺪاﻳﺔ • ﺧﻮارزﻣﻴﺔ اﻟﺤﻞ ﻟﻬﺬﻩ اﻟﻤﺸﻜﻠﺔ ﻟﺜﻼﺛﺔ أرﻗﺎم هﻲ:
.1أدﺧﻞ أي 3أرﻗﺎم
.2أﺣﺴﺐ اﻟﻤﺠﻤﻮع واﻟﻤﺘﻮﺳﻂ ﻟﻬﺬﻩ اﻷرﻗﺎم
أدﺧﻞ أي ﺛﻼﺛﺔ .3أﻃﺒﻊ اﻟﻤﺠﻤﻮع واﻟﻤﺘﻮﺳﻂ
أرﻗﺎم أ،ب،ج وﻳﻤﻜﻦ ﺗﻮﺿﻴﺢ هﺬﻩ اﻟﺨﻄﻮات ﻓﻲ ﺷﻜﻞ ﻣﺨﻄﻂ إﻧﺴﻴﺎﺑﻲ:
اﻟﻤﺠﻤﻮع=أ+ب+ج
اﻟﻤﺘﻮﺳﻂ=)أ+ب+ج(3/
إﻃﺒﻊ اﻟﻤﺠﻤﻮع
،اﻟﻤﺘﻮﺳﻂ
اﻟﻨﻬﺎﻳﺔ
3
ﻹﻳﺠﺎد اﻟﺤﻞ ﻷي ﻋﺪد ﻣﻦ اﻷرﻗﺎم ﻧﺴﺘﺨﺪم اﻟﺤﻠﻘﺎت اﻟﺘﻜﺮارﻳﺔ أي ﻧﻜﺮر ﺗﻨﻔﻴﺬ أواﻣﺮ إدﺧﺎل اﻟﺮﻗﻢ وﺣﺴﺎب •
اﻟﻤﻌﺎدﻟﺔ ﻟﻌﺪد "ن" ﻣﺮة.
اﻟﺒﺪاﻳﺔ
أدﺧﻞ ﻋﺪد
اﻷرﻗﺎم ن
اﻟﻤﺠﻤﻮع=0
اﻟﻌﺪاد =0
أدﺧﻞ أي
رﻗﻢ أ
ﺣﻠﻘﻪ ﺗﻜﺮارﻳﻪ
ﻧﻌﻢ
اﻟﻌﺪاد>ن
ﻻ
اﻟﻤﺘﻮﺳﻂ= اﻟﻤﺠﻤﻮع/ن
اﻃﺒﻊ اﻟﻤﺠﻤﻮع،
اﻟﻤﺘﻮﺳﻂ
اﻟﻨﻬﺎﻳﺔ
4
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
آﻠﻤﺔ voidﺗﺸﻴﺮ إﻟﻰ ﻋﺪم إرﺟﺎع اﻟﺪاﻟﺔ ﻷي ﻗﻴﻤﻪ واﻷﻗﻮاس اﻟﻤﺴﺘﺪﻳﺮة ﻋﺎد ًة ﺗﻮﺿﻊ ﻓﻴﻬﺎ وﺳﺎﺋﻂ اﻟﺪاﻟﺔ وﻓﻲ هﺬﻩ
اﻟﺤﺎﻟﺔ ﻻ ﺗﻮﺟﺪ وﺳﺎﺋﻂ ،أﻣﺎ اﻷﻗﻮاس اﻟﻤﻌﻘﻮﻓﺔ { } ﻓﻬﻲ ﺗﻤﺜﻞ ﺑﺪاﻳﺔ وﻧﻬﺎﻳﺔ ﺟﺴﻢ اﻟﺪاﻟﺔ اﻟﺮﺋﻴﺴﻴﺔ.
أواﻣﺮ إدﺧﺎل و إﺧﺮاج اﻟﺒﻴﺎﻧﺎت:
ﻳﺴﺘﺨﺪم اﻟﺘﻌﺒﻴﺮ coutﻟﻺﺧﺮاج و cinﻟﻺدﺧﺎل وآﻼهﻤﺎ ﻣﻌﺮﻓﻴﻦ ﻓﻲ ﻣﻠﻒ اﻹدﺧﺎل واﻹﺧﺮاج
اﻟﻤﺴﻤﻰ iostream
اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ ﻹﺳﺘﺨﺪام coutهﻲ .....
.....
;"cout<<" text
ﺣﻴﺚ ﻳﻜﺘﺐ ﺑﻴﻦ ﻋﻼﻣﺘﻲ اﻟﺘﻨﺼﻴﺺ اﻟﻨﺺ اﻟﻤﺮاد إﻇﻬﺎرة ﻋﻠﻰ اﻟﺸﺎﺷﺔ ،أﻣﺎ ﻋﻨﺪ اﻟﺮﻏﺒﻪ ﻓﻲ إﻇﻬﺎر ﻗﻴﻢ ﻣﺘﻐﻴﺮات ﻓﻼ
ﺗﺴﺘﺨﺪم ﻋﻼﻣﺎت اﻟﺘﻨﺼﻴﺺ.
اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ ﻹﺳﺘﺨﺪام cinهﻲ .....
.....
;cin>>variable
واﻟﻤﻘﺼﻮد ﺑـ variableاﻟﻤﺘﻐﻴﺮ اﻟﺬي ﻧﺮﻳﺪ إدﺧﺎل ﻗﻴﻤﺘﻪ ﻋﻦ ﻃﺮﻳﻖ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ.
اﻟﺼﻴﻐﻪ اﻟﻌﺎﻣﻪ ﻹدراج ﻣﻠﻒ ﻓﻲ ﺑﺮﻧﺎﻣﺞ ﻣﺎ:
>#include<file_name
و file_nameهﻮ إﺳﻢ اﻟﻤﻠﻒ اﻟﻤﺮاد إدراﺟﻪ ﺿﻤﻦ اﻟﺒﺮﻧﺎﻣﺞ
اﻟﺒﺮﻧﺎﻣﺞ اﻷول ﻓﻲ C++
اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﻳﻘﻮم ﺑﺈﻇﻬﺎر ﻧﺺ ﻋﻠﻰ ﺷﺎﺷﺔ اﻹﻇﻬﺎر
Prog1
>#include<iostream.h
)(void main اﻟﻨﺎﺗﺞ welcome to C++
{
;"cout<<"welcome to C++ world
}
ﻧﻼﺣﻆ أن ﻣﻠﻒ اﻹدﺧﺎل واﻹﺧﺮاج iostreamاﺗﺨﺬ اﻻﻣﺘﺪاد ،hوهﺬا ﺷﺄن آﻞ ﻣﻠﻔﺎت اﻟﺘﺮوﻳﺴﻪ
أدوات اﻟﻬﺮوب:
هﻲ أدوات ﺗﺴﺘﺨﺪم ﻟﻠﺘﺤﻜﻢ ﻓﻲ ﻣﻮﻗﻊ اﻟﻤﺨﺮﺟﺎت ﻣﻦ ﺣﻴﺚ اﻟﺘﺤﺮك اﻷﻓﻘﻲ أو اﻟﺮأﺳﻲ ﻋﺒﺮ اﻟﺴﻄﻮر ﺣﻴﺚ ﺗﺴﺘﺨﺪم
\nﻟﻠﻨﺰول ﺳﻄﺮًا ،و \tﻟﻠﺘﺤﺮك ﻣﺴﺎﻓﺔ أﻓﻘﻴﺔ.
أدوات اﻟﺘﻌﻠﻴﻖ:
ﻳﻤﻜﻦ اﻟﺘﻌﻠﻴﻖ ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ ﻟﺘﻮﺿﻴﺢ ﻋﻤﻞ داﻟﻪ أو أﻣﺮ ﻣﻌﻴﻦ ﻟﻤﻦ ﻳﻘﺮأ اﻟﺒﺮﻧﺎﻣﺞ دون أن ﻳﺆﺛﺮ ذﻟﻚ ﻋﻠﻰ ﻋﻤﻞ
اﻟﺒﺮﻧﺎﻣﺞ ﺣﻴﺚ ﻻ ﻳﻌﺘﺒﺮ اﻟﺘﻌﻠﻴﻖ ﺟﺰ ًء ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ ،ﺗﺴﺘﺨﺪم اﻷداة //ﻹﺿﺎﻓﺔ ﺗﻌﻠﻴﻖ ﻓﻲ ﺳﻄﺮ واﺣﺪ ،ﺑﻴﻨﻤﺎ ﻳﻮﺿﻊ
اﻟﺘﻌﻠﻴﻖ ﻣﺘﻌﺪد اﻷﺳﻄﺮ ﺑﻴﻦ اﻟﻌﻼﻣﺘﻴﻦ */اﻟﺘﻌﻠﻴﻖ. */
Prog2 ﻳﻤﻜﻦ إﻋﺎدة آﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ ﻣﻊ إﺿﺎﻓﺔ أدوات اﻟﻬﺮوب واﻟﺘﻌﻠﻴﻖ:
>#include<iostream.h
Welcome
)(void main اﻟﻨﺎﺗﺞ to C++ world
{ //start of main function
;"cout<<"\twelcome\n to C++ world
} /*end of main function
this a multi_line comment */
ﺗﻤﺮﻳﻦ 1
.1أﻧﺸﻲ ﻣﺨﻄﻄًﺎ اﻧﺴﻴﺎﺑﻴًﺎ ﻟﺒﺮﻧﺎﻣﺞ ﻳﺤﺴﺐ ﻣﺴﺎﺣﺔ وﻣﺤﻴﻂ اﻟﻤﺴﺘﻄﻴﻞ ﻋﻨﺪ إدﺧﺎل اﻟﻄﻮل و اﻟﻌﺮض؟
.2أآﺘﺐ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ C++ﻳﻈﻬﺮ ﻋﻠﻰ اﻟﺸﺎﺷﺔ اﻟﻨﺺ:
This is my first program in
C++ language
5
Variables & Constants اﻟﻤﺘﻐﻴﺮات واﻟﺜﻮاﺑ ﺖ
اﻟﻤﺘﻐﻴﺮ ه ﻮ ﻣﻮﻗ ﻊ ﻓ ﻲ اﻟ ﺬاآﺮة ﺣﻴ ﺚ ﻳﻤﻜ ﻦ ﺗﺨ ﺰﻳﻦ اﻟﻘ ﻴﻢ واﺳ ﺘﺮﺟﺎﻋﻬﺎ ﻋﻨ ﺪ اﻟﺤﺎﺟ ﺔ ،ﺳ ﻌﺔ اﻟ ﺬاآﺮة اﻟﺘ ﻲ ﺗﺨ ﺼﺺ
ﻟﻠﻤﺘﻐﻴﺮ ﺗﻌﺘﻤﺪ ﻋﻠﻰ ﻧﻮﻋﻪ ،واﻟﺬي ﻳﻤﻜﻦ أن ﻳﻜ ﻮن ﻋ ﺪدًا ﺻ ﺤﻴﺤًﺎ أو ﺣﻘﻴﻘﻴ ًﺎ أو ﻣﺘﻐﻴ ﺮًا ﺣﺮﻓﻴ ًﺎ اﻟﺠ ﺪول اﻟﺘ ﺎﻟﻲ ﻳﻮﺿ ﺢ
أﻧﻮاع اﻟﻤﺘﻐﻴﺮات ﻓﻲ ﻟﻐﺔ :C++
اﻟﻘﻴﻢ اﻟﺘﻤﺜﻴﻞ اﻟﺤﺠﻢ اﻟﻨﻮع
-32768إﻟﻰ 32767إﻻ ﻓﻲ ﺣﺎﻟﺔ 4ﺑﺎﻳﺖ ﻓﺎﻟﻘﻴﻢ 2ﺑﺎﻳﺖ ﻋﺪا ﻓﻲ وﻳﻨﺪوز 95أو وﻳﻨﺪوز NTاﻷﻋﺪاد
int
ﻣﻦ -2147483648إﻟﻰ2147483647 اﻟﺼﺤﻴﺤﺔ ﻓﺤﺠﻤﻪ 4ﺑﺎﻳﺖ
اﻷﻋﺪاد short
-32768إﻟﻰ32767 2ﺑﺎﻳﺖ
اﻟﺼﺤﻴﺤﺔ int
اﻷﻋﺪاد long
-2147483648إﻟﻰ2147483647 4ﺑﺎﻳﺖ
اﻟﺼﺤﻴﺤﺔ int
اﻷﻋﺪاد
-1.2e-38إﻟﻰ3.4e38 4ﺑﺎﻳﺖ float
اﻟﺤﻘﻴﻘﻴﺔ
اﻷﻋﺪاد
-2.2e-308إﻟﻰ 1.8e308 8ﺑﺎﻳﺖ double
اﻟﺤﻘﻴﻘﻴﺔ
256ﺣﺮﻓﺎ " أﺣﺮف ﺁﺳﻜﻲ " اﻷﺣﺮف 1ﺑﺎﻳﺖ char
ﻣﻠﺤﻮﻇﺎت:
ﻳﺴﺘﺨﺪم اﻟﺘﻌﺒﻴﺮ signedو unsignedﻟﻠﻤﺘﻐﻴﺮات اﻟﺮﻗﻤﻴﺔ ﻟﺘﺤﺪﻳﺪ هﻞ ﺗﺸﻤﻞ اﻷرﻗﺎم اﻟﻤﻮﺟﺒﺔ واﻟ ﺴﺎﻟﺒﺔ
أم ﻻ ،ﻓﺎﻟﺘﻌﺒﻴﺮ unsignedﻳﺪل ﻋﻠﻰ اﻷﻋﺪاد اﻟﻤﻮﺟﺒﺔ ﻓﻘﻂ ﻣﻤﺎ ﻳﻌﻨﻲ ﺗﺨ ﺼﻴﺺ ﻣ ﺪى اﻟﻘ ﻴﻢ ﻓ ﻲ اﻷرﻗ ﺎم
اﻟﻤﻮﺟﺒﺔ ﻓﻘﻂ ،أﻣﺎ signedﻓﺘﺪل ﻋﻠﻰ اﻷﻋﺪاد اﻟﻤﻮﺟﺒ ﺔ واﻟ ﺴﺎﻟﺒﺔ وإذا ﻟ ﻢ ﻳ ﺬآﺮ أي ﻣ ﻦ اﻟﺘﻌﺒﻴ ﺮﻳﻦ ﻓﻴﺆﺧ ﺬ
ﻋﻠﻰ أﻧﻪ .signed
ﻼ اﻟﺘﻌﺒﻴﺮ unsigned short intﻳﻤﺜﻞ ﻣﻦ 0إﻟﻰ. 65535 ﻣﺜ ً
أﻣﺎ اﻟﺘﻌﺒﻴﺮ signed short intأو short intﻓﻴﻤﺜﻞ اﻷﻋﺪاد ﻣﻦ -32768إﻟﻰ.32767
اﻷﻧﻮاع int, short int, long intﺟﻤﻴﻌﻬﺎ ﺗﻤﺜﻞ اﻷﻋﺪاد اﻟﺼﺤﻴﺤﺔ واﻹﺧﺘﻼف ﻓﻲ اﻟﻤﺪي اﻟﺬي ﺗﻤﺜﻠﺔ.
اﻷﻧﻮاع float, doubleﺟﻤﻴﻌﻬﺎ ﺗﻤﺜﻞ اﻷﻋﺪاد اﻟﺤﻘﻴﻘﻴﺔ واﻹﺧﺘﻼف ﻓﻲ اﻟﻤﺪي اﻟﺬي ﺗﻤﺜﻠﺔ.
Charﺗﻤﺜﻞ آﻞ أﺣﺮف ﺁﺳ ﻜﻲ وه ﻲ ﺗ ﺸﻤﻞ اﻟﺤ ﺮوف اﻟﻠﻐﻮﻳ ﺔ واﻟﻌﻼﻣ ﺎت واﻷﻗ ﻮاس واﻷرﻗ ﺎم ﻏﻴ ﺮ أﻧﻬ ﺎ
ﻳﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻋﻠﻰ أﻧﻬﺎ أﺣﺮف أي ﻻ ﺗﺨﻀﻊ ﻟﻠﻌﻤﻠﻴﺎت اﻟﻤﻨﻄﻘﻴﺔ واﻟﺤﺴﺎﺑﻴﺔ.
ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮات:
ﻳﺘﻢ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ ﺑﺬآﺮ ﻧﻮﻋﻪ ﺛﻢ اﺳﻤﻪ ﺑﺤﻴﺚ ﻳﻔﺼﻞ ﺑﻴﻨﻬﻤﺎ ﻓﺮاغ وآﺄي ﺳﻄﺮ ﺑﺮﻣﺠﻲ ﻻﺑﺪ ﻣﻦ اﻻﻧﺘﻬﺎء ﺑﻔﺎﺻﻠﺔ ﻣﻨﻘﻮﻃﺔ
;variable_type variable_name اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ ﻟﺘﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮات .....
.....
ﻼ اﻟﺘﻌﺮﻳﻒ ; int xﻳﺨﺺ ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ إﺳﻤﻪ xﻋﻠﻰ أﻧﻪ ﻋﺪد ﺻﺤﻴﺢ ،واﻟﺘﻌﺮﻳﻒ ; float areaﻟﻌﺪد ﺣﻘﻴﻘﻲ .area
ﻣﺜ ً
ﻳﻤﻜﻦ ﺗﻌﺮﻳﻒ ﻋﺪة ﻣﺘﻐﻴﺮات ﻓﻲ ﺳﻄﺮ واﺣﺪ إذ 1آﺎﻧﺖ ﻣﻦ ﻧﻮع واﺣﺪ ﻓﺎﻟﺘﻌﺮﻳﻒ
; char a,b,cﻳﻌﻨﻲ أن a,b,cﻣﺘﻐﻴﺮات ﺣﺮﻓﻴﻪ.
ﻗﻴﻮد ﻋﻠﻰ إﺳﻢ اﻟﻤﺘﻐﻴﺮ
ﻳﺠﺐ أﻻ ﻳﺤﺘﻮي اﻹﺳﻢ ﻋﻠﻰ ﻓﺮاغ. .1
ﻳﺠﺐ أﻻ ﻳﺤﺘﻮي اﻹﺳﻢ ﻋﻠﻰ اﻟﻌﻼﻣﺎت اﻟﺨﺎﺻﻪ ﻣﺜﻞ ............@،#./،*،-،+ .2
ﻳﺠﺐ أﻻ ﻳﺒﺘﺪئ اﻹﺳﻢ ﺑﺮﻗﻢ. .3
ﻳﺠﺐ أﻻ ﻳﻤﺜﻞ اﻹﺳﻢ آﻠﻤﻪ ﻣﻦ آﻠﻤﺎت اﻟﻠﻐﻪ اﻟﻤﺤﺠﻮزة وهﻲ اﻟﻜﻠﻤﺎت اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓ ﻲ اﻷواﻣ ﺮ ﻣﺜ ﻞ for, .4
........................ if, else, int, float, long,
ﻣﻠﺤﻮﻇﺎت:
ﻳﻤﻜﻦ أن ﻳﻜﻮن اﻟﺮﻗﻢ ﻓﻲ وﺳﻂ أو ﺁﺧﺮ اﻹﺳﻢ.
اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة ﺗﻈﻬﺮ ﺑﺘﻨﺴﻴﻖ ﻣﻤﻴﺰ ﻓﻲ ﻣﻌﻈﻢ اﻟﻤﺼﺮﻓﺎت اﻟﺘﻲ ﺗﻜﺘﺐ ﻓﻴﻬﺎ اﻟﺒﺮاﻣﺞ.
ﻼ ﺗﺨﺘﻠﻒ ﻋﻦ .AREA
هﻨﺎﻟﻚ ﺣﺴﺎﺳﻴﺔ ﻟﺤﺎﻟﺔ اﻟﺤﺮف ﻓﻲ ﺗﺴﻤﻴﺔ اﻟﻤﺘﻐﻴﺮ أي أن areaﻣﺜ ً
6
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
ﺗﻌﻴﻴﻦ ﻗﻴﻢ اﻟﻤﺘﻐﻴﺮات:
ﺗﺘﻢ ﻧﺴﺒﺔ اﻟﻘﻴﻢ إﻟﻰ اﻟﻤﺘﻐﻴﺮات ﺑﺈﺳﺘﺨﺪام ﻣﻌﺎﻣﻞ اﻹﺳﻨﺎد = واﻟﺬي ﻳﻨﺴﺐ اﻟﻘﻴﻤﺔ اﻟﺘﻲ ﻋﻠ ﻲ ﻳﻤﻴﻨ ﻪ ﻟﻠﻤﺘﻐﻴ ﺮ ﻋﻠ ﻲ ﻳ ﺴﺎرﻩ،
آﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ:
;x=5ﺣﻴﺚ ﺗﻨﺴﺐ اﻟﻘﻴﻤﺔ 5ﻟﻠﻤﺘﻐﻴﺮ xوهﺬا ﻳﻌﻨﻲ ﺗﺨﺰﻳﻦ هﺬﻩ اﻟﻘﻴﻤﺔ ﻟﻠﻤﻮﻗﻊ اﻟﻤﺤﺠﻮز ﻟـ .x
اﻟﻤﻌﺎﻣﻼت اﻟﺮﻳﺎﺿﻴﺔ Mathematical Operators
ﻟﻜﺘﺎﺑﺔ اﻟﻘﻮاﻧﻴﻦ واﻟﻤﻌ ﺎدﻻت اﻟﺨﺎﺻ ﺔ ﺑﻨﻈ ﺎم ﻣﻌ ﻴﻦ ﺗ ﺴﺘﺨﺪم ه ﺬﻩ اﻟﻤﻌ ﺎﻣﻼت اﻟﺮﻳﺎﺿ ﻴﺔ ،وه ﻲ ﻣﻮﺿ ﺤﺔ ﻓ ﻲ اﻟﺠ ﺪول
اﻟﺘﺎﻟﻲ:
اﻟﻌﻤﻠﻴﺔ اﻟﺮﻳﺎﺿﻴﺔ اﻟﻤﻌﺎﻣﻞ
اﻟﺠﻤﻊ +
اﻟﻄﺮح -
اﻟﻀﺮب *
اﻟﻘﺴﻤﺔ /
ﻼ 23%7=2 ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ اﻟﺼﺤﻴﺢ ﻣﺜ ً %
آﻞ هﺬﻩ اﻷدوات ﺗﻌﻤﻞ ﻓﻲ اﻻﺗﺠﺎﻩ ﻣﻦ اﻟﻴﺴﺎر إﻟﻰ اﻟﻴﻤﻴﻦ
اﻷوﻟﻮﻳﺔ ﻓﻲ ﺗﻨﻔﻴﺬ اﻟﻌﻤﻠﻴﺎت اﻟﺮﻳﺎﺿﻴﺔ
ﺗﺠﻌ ﻞ ﻟﻐ ﺔ C++اﻷوﻟﻮﻳ ﺔ اﻷوﻟ ﻰ ﻓ ﻲ اﻟﺘﻨﻔﻴ ﺬ ﻟﻌﻤﻠﻴ ﺎت اﻟ ﻀﺮب واﻟﻘ ﺴﻤﺔ وﺑ ﺎﻗﻲ اﻟﻘ ﺴﻤﺔ اﻟ ﺼﺤﻴﺢ ﻋﻠ ﻰ اﻟ ﺴﻮاء ﺛ ﻢ
ﻋﻤﻠﻴﺘﻲ اﻟﺠﻤﻊ واﻟﻄﺮح .وإذا اﺣﺘﻮى ﺗﻌﺒﻴﺮ رﻳﺎﺿﻲ ﻋﻠﻰ أآﺜﺮ ﻣﻦ ﻋﻤﻠﻴﺔ ﻟﻬ ﺎ ﻧﻔ ﺲ اﻷوﻟﻮﻳ ﺔ ﻓ ﺈن اﻟﻌﻤﻠﻴ ﺔ اﻟﺘ ﻲ ﻋﻠ ﻰ
ﻻ.
ﻻ .وﻓﻲ آﻞ اﻷﺣﻮال ﻓﺈن اﻟﻌﻤﻠﻴﺎت داﺧﻞ اﻷﻗﻮاس ﺗﻨﻔﺬ أو ًاﻟﻴﺴﺎر ﺗﻨﻔﺬ أو ً
ﻣﺜﺎل)(2.1ﻣﺎ ﻗﻴﻤﺔ xﻓﻲ آﻞ ﻣﻤﺎ ﻳﺄﺗﻲ:
أX=4+2*5 .
بX=5%3*7+2 .
جX=5+(4%3) .
اﻟﺤﻞ:
أX=4+10=14 .
بX=2*7+2=14+2=16 .
جX=5+1=6 .
ﻣﻠﺤﻮﻇﺔ:
ﻳﻤﻜﻦ اﺳﺘﺨﺪام ﻣﻌﺎﻣﻞ اﻹﺳﻨﺎد= ﻣ ﻊ أي ﻣ ﻦ اﻟﻤﻌ ﺎﻣﻼت اﻟﺮﻳﺎﺿ ﻴﺔ ﻋﻨ ﺪﻣﺎ ﻳ ﺮاد إﺳ ﻨﺎد ﻗﻴﻤ ﻪ ﻟﻤﺘﻐﻴ ﺮ ﻣﻌ ﻴﻦ
ﺑﺪﻻﻟﺔ ﻧﻔﺲ اﻟﻤﺘﻐﻴﺮ آﻤﺎ هﻮ ﻣﺒﻴﻦ ﻓﻲ اﻟﺠﺪول:
اﻟﺘﻌﺒﻴﺮ اﻟﻤﺨﺘﺼﺮ اﻟﺘﻌﺒﻴﺮ
x+=3 x=x+3
a*=2 a=a*2
ﻣﺜﺎل) (2.2أآﺘﺐ ﺑﺮﻧﺎﻣﺠًﺎ ﺑﻠﻐﺔ C++ﻳﺤﺴﺐ ﻣﺴﺎﺣﺔ وﻣﺤﻴﻂ اﻟﻤﺴﺘﻄﻴﻞ ﻋﻨﺪ إدﺧﺎل اﻟﻄﻮل و اﻟﻌﺮض؟
اﻟﺤ ﻞ :ﻓ ﻲ ه ﺬا اﻟﺒﺮﻧ ﺎﻣﺞ ﻧﺘﻌﺎﻣ ﻞ ﻣ ﻊ أرﺑﻌ ﺔ ﻣﺘﻐﻴ ﺮات ه ﻲ اﻟﻄ ﻮل ، lengthاﻟﻌ ﺮض width,اﻟﻤ ﺴﺎﺣﻪ،area
واﻟﻤﺤﻴﻂ . perimeterهﺬﻩ اﻟﻤﺘﻐﻴﺮات ﻻ ﻳﺸﺘﺮط أن ﺗﻜﻮن أﻋﺪادًا ﺻﺤﻴﺤﺔ intﺑ ﻞ ﻳﻤﻜ ﻦ أن ﺗﺤﺘ ﻮي ﻋﻠ ﻰ آ ﺴﻮر
ﻟﺬا ﻓﺈن ﻣﻦ اﻟﻤﻨﺎﺳﺐ ﻟﻬﺎ أن ﺗﻌﺮف أﻋﺪادًا ﺣﻘﻴﻘﻴﺔ ، floatواﻟﻄﻮل واﻟﻌﺮض ﺳﻨﺤﺼﻞ ﻋﻠﻰ ﻗﻴﻤﻬﺎ ﻋﻦ ﻃﺮﻳﻖ إدﺧ ﺎل
اﻟﻤﺴﺘﺨﺪم .أﻣﺎ اﻟﻤﺴﺎﺣﺔ و اﻟﻤﺤﻴﻂ ﻓﺘﺤﺴﺒﺎن ﺑﺎﻟﻌﻼﻗﺘﻴﻦ اﻟﻤﻌﺮوﻓﺘﻴﻦ:
Prog3 اﻟﻤﺴﺎﺣﺔ=اﻟﻄﻮل * اﻟﻌﺮض
اﻟﻤﺤﻴﻂ=)*2اﻟﻄﻮل +اﻟﻌﺮض(
ﻟﺬا ﻳﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ آﺎﻵﺗﻲ
7
اﻟﻤﻌﺎﻣﻼت اﻟﺨﺎﺻﺔ ﺑﺘﻐﻴﻴﺮ ﻗﻴﻤﺔ ﻣﺘﻐﻴﺮ
ﻣﻌﺎﻣﻞ اﻟﺰﻳﺎدة ﺑﻮاﺣﺪ" "++وﻳﻤﻜﻦ أن ﻳﻜﻮن ﻗﺒﻠﻲ pre_ incriminationﺑﺤﻴﺚ ﺗﺘﻢ اﻟﺰﻳﺎدة ﻗﺒﻞ ﺗﻨﻔﻴﺬ
اﻷﻣﺮ اﻟﺤﺎﻟﻲ وﻳﻜﺘﺐ اﻟﻤﻌﺎﻣﻞ ﻗﺒﻞ اﺳﻢ اﻟﻤﺘﻐﻴﺮ أو ﺑﻌﺪي post_ incriminationﺑﺤﻴﺚ ﺗﺘﻢ اﻟﺰﻳﺎدة ﺑﻌﺪ
ﺗﻨﻔﻴﺬ اﻷﻣﺮ اﻟﺤﺎﻟﻲ ﻣﺒﺎﺷﺮ ًة وﻳﻜﺘﺐ اﻟﻤﻌﺎﻣﻞ ﺑﻌﺪ اﺳﻢ اﻟﻤﺘﻐﻴﺮ.
ﻣﻌﺎﻣﻞ اﻟﻨﻘﺼﺎن ﺑﻮاﺣﺪ" "--وﻳﻤﻜﻦ أن ﻳﻜﻮن ﻗﺒﻠﻲ pre_ decrimintationﺑﺤﻴﺚ ﻳﻜﻮن اﻟﻨﻘﺼﺎن ﻗﺒﻞ
ﺗﻨﻔﻴﺬ اﻷﻣﺮ اﻟﺤﺎﻟﻲ وﻳﻜﺘﺐ اﻟﻤﻌﺎﻣﻞ ﻗﺒﻞ اﺳﻢ اﻟﻤﺘﻐﻴﺮ أو ﺑﻌﺪي post_ decrimintationﺑﺤﻴﺚ ﻳﺘﻢ اﻟﻨﻘﺼﺎن
ﺑﻌﺪ ﺗﻨﻔﻴﺬ اﻷﻣﺮ اﻟﺤﺎﻟﻲ ﻣﺒﺎﺷﺮ ًة وﻳﻜﺘﺐ اﻟﻤﻌﺎﻣﻞ ﺑﻌﺪ اﺳﻢ اﻟﻤﺘﻐﻴﺮ.
Prog4 ﺑﺮﻧﺎﻣﺞ ﻳﻮﺿﺢ اﻟﻔﺮق ﺑﻴﻦ " "++و" –":
a=6
اﻟﻨﺎﺗﺞ b=8
after incrimination b=9
Constants اﻟﺜﻮاﺑﺖ
اﻟﺜﺎﺑﺖ ﻳﺄﺧﺬ ﻧﻔﺲ اﻟﺤﻴﺰ اﻟﺘﺨﺰﻳﻨﻲ ﻟﻠﻤﺘﻐﻴﺮ ﻏﻴﺮ أن ﻗﻴﻤﺘﻪ ﻏﻴﺮ ﻗﺎﺑﻠﻪ ﻟﻠﺘﻐﻴﺮ .ﻳﺘﻢ اﻹﻋﻼن ﻋﻦ اﻟﻤﺘﻐﻴﺮ ﺑﺎﺳﺘﺨﺪام
اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزﻩ constﻳﻌﻘﺒﻬﺎ ﻧﻮع اﻟﺜﺎﺑﺖ ﺛﻢ اﺳﻨﺎد ﻗﻴﻤﻪ ﻟﻬﺬا اﻟﺜﺎﺑﺖ آﻤﺎ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ اﻟﺬي ﻳﺤﺴﺐ ﻣﺴﺎﺣﺔ
اﻟﺪاﺋﺮﻩ ﻋﻨﺪ إدﺧﺎل ﻗﻴﻤﺔ ﻧﺼﻒ ﻗﻄﺮهﺎ.
Prog5
ﻣﻠﺤﻮﻇﺎت
ﻻﺑﺪ ﻣﻦ اﺳﻨﺎد ﻗﻴﻤﻪ ﻟﻠﺜﺎﺑﺖ ﻋﻨﺪ اﻹﻋﻼن ﻋﻨﻪ.
إذا ﻟﻢ ﻳﺤﺪد ﻧﻮع اﻟﺜﺎﺑﺖ ﻓﺈﻧﻪ ﻳﻌﺘﺒﺮ اﻓﺘﺮاﺿﻴﺎ ﻋﺪد ﺻﺤﻴﺢ .int
8
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
ﺗﻤﺮﻳﻦ 2
.1إذا آﺎن yﻣﺘﻐﻴﺮًا ﻣﻦ ﻧﻮع intﻓﻤﺎ ﻗﻴﻤﺘﻪ ﻓﻲ آﻞ ﻣﻤﺎ ﻳﺄﺗﻲ:
أy=10*7%(5+8-3) .
بy=18/5+4 .
.2اآﺘﺐ ﺑﺮﻧﺎﻣﺠ ًﺎ ﻟﺤﺴﺎب اﻟﺪﺧﻞ اﻹﺟﻤﺎﻟﻲ total_incomeﻟﻤﻮﻇﻒ إذا ﻋﻠﻢ اﻟﺮاﺗﺐ
اﻷﺳﺎﺳﻲ ،bsﺑﺪل اﻟﻨﻘﻞ %5" tﻣﻦ اﻟﺮاﺗﺐ اﻷﺳﺎﺳﻲ" ،ﺑﺪل ﺧﺒﺮﻩ ،eﺣﻴﺚ ﻳﺤﺴﺐ اﻟﺪﺧﻞ
اﻹﺟﻤﺎﻟﻲ آﺎﻵﺗﻲtotal_income=bs+t+e :
.3ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﺗﻮﺟﺪ ﺛﻼﺛﻪ أﺧﻄﺎء اﺳﺘﺨﺮﺟﻬﺎ ،ﻣﻊ ﺗﺤﺪﻳﺪ ﺳﺒﺐ اﻟﺨﻄﺄ ،ﺛﻢ أﻋﺪ آﺘﺎﺑﺔ
اﻟﺒﺮﻧﺎﻣﺞ ﺑﻌﺪ ﺗﺼﺤﻴﺢ اﻷﺧﻄﺎء:
9
Control Structures ُﺑ َﻨﻰ اﻟﺘﺤﻜﻢ
اﻟﻤﻘﺼﻮد ﺑﺬﻟﻚ اﻟﺘﺮآﻴﺒﻪ اﻟﺘﻲ ﺗﺘﺤﻜﻢ ﻓﻲ ﻣﺴﺎر ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ،ﻓﺈﻟﻰ اﻵن ﻳﺘﻢ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺼﻮرة ﺗﺘﺎﺑﻌﻴﻪ إﻻ إذا
اﺳﺘﺨﺪﻣﺖ هﺬﻩ اﻟﺒﻨﻲ ،وﺑﻨﻰ اﻟﺘﺤﻜﻢ ﺗﺸﻤﻞ اﻟﺸﺮط واﻟﺤﻠﻘﺎت اﻟﺘﻜﺮارﻳﺔ.
ﺑﻨﻴﺔ اﻟﺸﺮط ﻓﻲ:C++
اﻟﺸﺮط هﻮ رﺑﻂ ﺗﻨﻔﻴﺬ أﻣﺮ ﻣﻌﻴﻦ " أو ﻋﺪة أواﻣﺮ " ﺑﺘﻮﻓﺮ ﺷﺮط ﻣﻌﻴﻦ أوﻋﺪﻣﻪ.
اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﻪ: .....
.....
)if(condition
{
statements if true
.................... ﻻ……….ﺗﻌﻠﻴﻤﺎت اﻟﺸﺮط ﻧﻌﻢ ﺗﻌﻠﻴﻤﺎت
………
}
else
{
statements if false
……….
………
}
ﻧﻼﺣﻆ ﻣﻦ اﻟﺼﻴﻐﻪ اﻟﻌﺎﻣﻪ اﺳﺘﺨﺪام أداة اﻟﺸﺮط ifﻳﻌﻘﺒﻬﺎ اﻟﺸﺮط ﺛﻢ اﻷﻣﺮ أو اﻷواﻣﺮ اﻟﻤﻄﻠﻮب ﺗﻨﻔﻴﺬهﺎ ﻋﻨﺪ ﺗﻮﻓﺮ
هﺬا اﻟﺸﺮط ،ﻻﺣﻆ أن هﺬﻩ اﻷواﻣﺮ ﻟﻦ ﺗﻨﻔﺬ إﻻ ﻋﻨﺪ ﺗﻮﻓﺮ اﻟﺸﺮط وهﺬﻩ اﻷﺟﺰاء إﺟﺒﺎرﻳﺔ ﻓﻲ ﺑﻨﻴﺔ اﻟﺸﺮط " أي ﻳﻤﻜﻦ
أن ﻧﻜﺘﻔﻲ ﺑﺎﻟﺸﺮط واﻟﺘﻌﻠﻴﻤﺎت اﻟﺘﻲ ﺗﻨﻔﺬ ﻋﻨﺪ ﺗﻮﻓﺮﻩ دون ﻃﺮح ﺧﻴﺎر ﺁﺧﺮ .وﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻷداة elseﻟﺮﺑﻂ
اﻷواﻣﺮ اﻟﺘﻲ ﻳﺮاد ﻟﻬﺎ أن ﺗﻨﻔﺬ ﻋﻨﺪ اﻧﺘﻔﺎء اﻟﺸﺮط.
ﻣﻠﺤﻮﻇﺎت:
ﻋﻨﺪﻣﺎ ﺗﻜﻮن اﻷواﻣﺮ ﻣﺘﻌﺪدة ﻳﺠﺐ اﺳﺘﺨﺪام اﻷﻗﻮاس اﻟﺤﺼﺮﻳﻪ } { ،وﻳﻤﻜﻦ اﻻﺳﺘﻐﻨﺎء ﻋﻨﻬﺎ ﻓﻲ
ﺣﺎﻟﺔ اﻷﻣﺮ اﻟﻮاﺣﺪ.
ﺗﺴﺘﺨﺪم اﻟﻤﻌﺎﻣﻼت اﻟﻌﻼﺋﻘﻴﺔ ﻟﺼﻴﺎﻏﺔ اﻟﺸﺮط وهﻲ ﻣﺒﻴﻨﻪ ﻓﻲ ﺟﺪول ﻻﺣﻖ.
ﻋﻨﺪﻣﺎ ﻳﻜﻮن اﻟﺸﺮط ﻣﺮآﺒًﺎ ﺗﺴﺘﺨﺪم اﻟﻤﻌﺎﻣﻼت اﻟﻤﻨﻄﻘﻴﺔ ﻟﻠﺮﺑﻂ ﺑﻴﻦ اﻟﺸﺮوط.
Relational Operators اﻟﻤﻌﺎﻣﻼت اﻟﻌﻼﺋﻘﻴﺔ
وهﻲ ﺗﺤﺪد ﻋﻼﻗﺔ ﻣﺘﻐﻴﺮ ﺑﻜﻤﻴﻪ ،أو ﻣﺘﻐﻴﺮ ﺑﻤﺘﻐﻴﺮ ﺁﺧﺮ وهﻲ ﺳﺘﺔ ﺗﺸﻤﻞ أآﺒﺮ ﻣﻦ ،أآﺒﺮ ﻣﻦ أو ﻳﺴﺎوي،
أﺻﻐﺮ ﻣﻦ ،أﺻﻐﺮ ﻣﻦ أو ﻳﺴﺎوي ،ﻳﺴﺎوي ،ﻻ ﻳﺴﺎوي وهﻲ ﻣﻮﺿﺤﻪ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ.
اﻟﻤﻌﻨﻰ اﻷداة
أآﺒﺮ ﻣﻦ >
أآﺒﺮ ﻣﻦ أو ﻳﺴﺎوي =>
أﺻﻐﺮ ﻣﻦ <
أﺻﻐﺮ ﻣﻦ أو ﻳﺴﺎوي =<
ﻳﺴﺎوي ==
ﻻ ﻳﺴﺎوي =!
10
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
ﻣﺜﺎل) (1.3ﻋﺒﺮ ﻋﻦ اﻟﺸﺮوط اﻟﺘﺎﻟﻴﻪ ﺑﺼﻴﻐﺔ ﺗﻨﺎﺳﺐ ﻟﻐﺔ .C++
.1إذا آﺎﻧﺖ xأآﺒﺮ ﻣﻦ yﻓﺈن .d=5
.2إذا آﺎﻧﺖ اﻟﺪرﺟﺔ dأآﺒﺮ أو ﻳﺴﺎوي 60اﻃﺒﻊ ﻧﺎﺟﺢ ” ”passوإﻻ اﻃﺒﻊ راﺳﺐ ”.“fail
.3إذا آﺎﻧﺖ ﻗﻴﻤﺔ اﻟﺠﺬر اﻟﺮﺑﻴﻌﻲ srأﻗﻞ ﻣﻦ 0اﻃﺒﻊ ﻋﺪد ﺗﺨﻴﻠﻲ"."imaginary number
.4إذا آﺎﻧﺖ aﻻ ﺗﺴﺎوي 5ﻓﺈن ،b=2a+3و ،c=3a-4bوإﻻ ﻓﺈن ، b=2a-11و.c=3a+b
اﻟﺤﻞ:
)1. if(x>y
;d=5
)2. if(d>=60
;”cout<<”pass
else
;”cout<<”fail
)3. if(sr<0
;”cout<<” imaginary number
)4. if(a!=5
{
;b=2a+3
;c=3a-4b
}
else
{
;b=2a-11
;c=3a+b
}
ﻣﻠﺤﻮﻇﻪ:
أوﻟﻮﻳﺔ اﻟﺘﻨﻔﻴﺬ ﻟﻬﺬﻩ اﻟﻤﻌﺎﻣﻼت ﻟﻠﺘﻲ ﺗﻜﻮن داﺧﻞ أﻗﻮاس وإﻻ ﻓﺈن اﻷوﻟﻮﻳﺔ ﺗﻜﻮن ﻣﻦ
اﻟﻴﺴﺎر ﻟﻠﻴﻤﻴﻦ.
ﺟﺪاول اﻟﺤﻘﻴﻘﺔ Truth Tables
آﻤﺎ هﻮ ﻣﻌﻠﻮم أن ﻧﺘﻴﺠﺔ اﻟﺸﺮط إﻣﺎ ﺻﻮاب أو ﺧﻄﺄ ،true or falseوﻓﻲ ﺣﺎﻟﺔ اﻟﺠﻤﻠﻪ اﻟﺸﺮﻃﻴﻪ اﻟﻤﺮآﺒﻪ ﻓﺈن اﻟﻨﺎﺗﺞ
ﻳﻌﺘﻤﺪ ﻋﻠﻰ اﻟﺸﺮﻃﻴﻦ اﻟﻤﻜﻮﻧﻴﻦ ﻟﻠﺠﻤﻠﻪ وﻧﻮع اﻟﺮاﺑﻂ اﻟﻤﻨﻄﻘﻲ ،وهﺬا ﻣﻮﺿﺢ ﻓﻴﻤﺎ ﻳﻌﺮف ﻓﻲ ﻋﻠﻢ اﻟﺮﻳﺎﺿﻴﺎت
اﻟﻤﺘﻘﻄﻌﻪ discrete mathematicsﺑﺠﺪاول اﻟﺨﻄﺄ واﻟﺼﻮاب أو ﺟﺪاول اﻟﺤﻘﻴﻘﻪ truth tablesواﻟﻤﻮﺿﺤﻪ
أدﻧﺎﻩ" .ﺳﻨﺮﻣﺰ ﻟﻠﺸﺮﻃﻴﻦ ﺑﺎﻟﺤﺮﻓﻴﻦ A,Bوﻟﻠﺼﻮاب ﺑﺎﻟﺤﺮف Tواﻟﺨﻄﺄ ﺑﺎﻟﺤﺮف"F
أو ًﻻ ﺟﺪول اﻟﺤﻘﻴﻘﻪ ﻟﻠﺮاﺑﻂ اﻟﻤﻨﻄﻘﻲ &&
A B Result
T T T
T F F
F T F
F F F
11
ﺛﺎﻧﻴًﺎ ﺟﺪول اﻟﺤﻘﻴﻘﻪ ﻟﻠﺮاﺑﻂ اﻟﻤﻨﻄﻘﻲ ||
A B Result
T T T
T F T
F T T
F F F
12
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
اﻟﺮاﺑﻂ ﻓﻴﻤﺎ ﺑﻴﻨﻬﺎ هﻮ && أﻣﺎ اﻟﺸﺮوط D,C,B,Aﻓﺘﺨﺺ اﻟﺤﺮآﺔ ﻓﻲ اﻻﺗﺠﺎﻩ Lاﻟﺮواﺑﻂ ﺑﻴﻦ هﺬﻩ اﻟﺸﺮوط ﻳﻤﻜﻦ
اﺳﺘﻨﺘﺎﺟﻬﺎ ﻋﻦ ﻃﺮﻳﻖ ﺧﺮاﺋﻂ آﺎرﻧﻮ ﺣﻴﺚ ﺗﻮﺿﻊ آﻞ اﻻﺣﺘﻤﺎﻻت اﻟﻤﻤﻜﻨﺔ ﻟﻠﻌﻼﻗﺎت ﺑﻴﻦ اﻟﺸﺮوط D,C,B,A
وﻋﺪدهﺎ 24واﻟﻌﺪد 4ﻳﺸﻴﺮ إﻟﻰ ﻋﺪد اﻟﺸﺮوط ،أﻣﺎ اﻟﻌﺪد 2ﻳﺸﻴﺮ إﻟﻰ اﺣﺘﻤﺎﻟﻲ اﻟﺼﻮاب واﻟﺨﻄﺄ ﻟﻜﻞ ﺷﺮط ،ﻓﻲ
ﺧﺮاﺋﻂ آﺎرﻧﻮ ﻳﻮﺿﻊ ﺷﺮﻃﻴﻦ ﻋﻠﻰ آﻞ ﺟﺎﻧﺐ وﺗﺆﺧﺬ اﻹﺣﺘﻤﺎﻻت اﻟﻤﻤﻜﻨﻪ ﻟﻜﻞ ﻣﻨﻬﻤﺎ آﻤﺎ هﻮ ﻣﻮﺿﺢ:
ﻧﻼﺣﻆ اﺳﺘﺨﺪام 0ﻟﻠﺪﻻﻟﻪ ﻋﻠﻰ ﻋﺪم إﻣﻜﺎﻧﻴﺔ هﺬا اﻻﺣﺘﻤﺎل ،واﺳﺘﺨﺪام 1ﻟﻠﺪﻻﻟﻪ ﻋﻠﻰ ﺗﺤﻘﻖ اﻹﺣﺘﻤﺎل ،ﻟﺬا ﻧﺠﺪ أن
اﻟﺠﻤﻠﻪ اﻟﻤﻨﻄﻘﻴﻪ ﻳﻤﻜﻦ أن ﺗﺼﺎغ ﺑﺪﻻﻟﺔ اﻟﺤﺮوف D,C,B,Aآﺎﻵﺗﻲ:
)(A &&!B&&!C&&D)||(!A&&B&&C&&!D
وﺑﻌﺪ إﺿﺎﻓﺔ ﺷﺮوط وﺟﻮد اﻟﻘﻄﻌﻪ ﻋﻠﻰ اﻟﺮﻗﻌﺔ ﺗﻜﻮن اﻟﺠﻤﻠﻪ اﻟﻤﻨﻄﻘﻴﻪ:
])(E&&F&&G&&H)&&[ (A &&!B&&!C&&D)||(!A&&B&&C&&!D
ﺛﻢ ﺑﻌﺪ ذﻟﻚ ﻳﺘﻢ اﻟﺘﻌﻮﻳﺾ ﻋﻦ اﻟﺤﺮوف A,B,C,D,E,F,G,Hﺑﺎﻟﺸﺮوط ،وﺑﺎﻟﺘﺎﻟﻲ ﻳﻜﻮن اﻟﺸﺮط آﺎﻵﺗﻲ:
])if[(x+nx<=8&&x-nx>=1&&y+ny<=8&&y-ny>=1)]&&[(nx==1&&ny==2)||(nx==2&&ny==1
ﻧﻼﺣﻆ أﻧﻪ ﺑﺎﻟﺮﻏﻢ ﻣﻦ ﺗﻌﻘﻴﺪ اﻟﺸﺮط اﻟﻨﺎﺗﺞ إﻻ أﻧﻪ أﻣﻜﻦ اﻟﻮﺻﻮل إﻟﻴﺔ ﺑﺼﻮرﻩ ﺳﺮﻳﻌﺔ ﺑﻮاﺳﻄﺔ ﺧﺮاﺋﻂ آﺎرﻧﻮ.
اﻻﺧﺘﻴﺎر اﻟﻤﺘﻌﺪد:
اﻟﻤﻼﺣﻆ ﻋﻠﻰ ﺟﻤﻠﺔ if-elseوﺟﻮد ﻣﺴﺎرﻳﻦ ﻓﻘﻂ ﻳﺠﺐ أن ﻳﻨﻔﺬ أﺣﺪهﻤﺎ أﻣﺎ إن آﺎﻧﺖ اﻟﻤﺴﺎرات " اﻟﺨﻴﺎرات" أآﺜﺮ
ﻣﻦ اﺛﻨﻴﻦ ﻓﺘﺴﺘﺨﺪم ﺟﻤﻠﺔ .switch-case
)switch(variable .....اﻟﺼﻴﻐﻪ اﻟﻌﺎﻣﻪ
{ .....
case value1:
statement/statements
;break
case value2:
statement/statements
;break
case value3:
statement/statements
;break
.
.
default:
statement/statements
;break
}
ﻻﺣﻆ أن value3 ،value2 ،value1هﻲ ﻗﻴﻢ ﻟﻠﻤﺘﻐﻴﺮ variableاﻟﻤﺬآﻮر ﻣﻊ اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة، switch
وﺗﻤﺜﻞ آﻞ caseﺧﻴﺎر ،إذن ﻓﻘﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ﺗﺤﺪد اﻟﺨﻴﺎر اﻟﺬي ﺳﻴﻨﻔﺬ "أي ﺗﻘﻮم ﻣﻘﺎم اﻟﺸﺮط" وإذا ﻓﺸﻠﺖ آﻞ اﻟﻘﻴﻢ ﻓﺈن
اﻷواﻣﺮ اﻟﺘﻲ ﺗﻠﻲ اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة defaultﺳﺘﻨﻔﺬ ﺗﻠﻘﺎﺋﻴًﺎ ،ﻧﻼﺣﻆ أن آﻞ ﺗﻌﻠﻴﻤﻪ ﺧﺘﻤﺖ ﺑﺎﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة break
ﻟﻺﺷﺎرة إﻟﻰ اﻧﺘﻬﺎء اﻟﺘﻌﻠﻴﻤﺎت اﻟﺒﺮﻣﺠﻴﻪ ﻟﻠﺨﻴﺎر اﻟﻤﻌﻴﻦ.
ﻣﺜﺎل)(3.4
اآﺘﺐ ﺑﺮﻧﺎﻣﺠًﺎ ﺑﻠﻐﺔ C++ﻳﺤﺴﺐ اﻟﺪﺧﻞ اﻟﻜﻠﻲ ﻟﻤﻮﻇﻒ , total_incomeإذا ﻋﻠﻤﺖ درﺟﺘﻪ اﻟﻮﻇﻴﻔﻴﺔ grade
ﺣﻴﺚ ﻳﺤﺴﺐ اﻟﺪﺧﻞ اﻟﻜﻠﻲ ﺑﺎﻟﻤﻌﺎدﻟﺔ:
total_income=bsaic_salary+bonus+fees
و bsaic_salaryهﻮ اﻟﺮاﺗﺐ اﻷﺳﺎﺳﻲ bonus ،ﻳﻤﺜﻞ اﻟﻌﻼوة ،و feesاﻟﺒﺪﻻت وﻗﻴﻢ هﺬﻩ اﻟﻤﺘﻐﻴﺮات ﺗﻌﺘﻤﺪ ﻋﻠﻰ
اﻟﺪرﺟﺔ اﻟﻮﻇﻴﻔﻴﺔ ﺣﺴﺐ اﻟﺠﺪول اﻟﺘﺎﻟﻲ:
13
grade bsaic_salary bonus fees
1 6000 =.04*bsaic_salary 700
2 5200 =.04*bsaic_salary 700
3 5000 =.03*bsaic_salary 500
4 3000 =.02*bsaic_salary 400
Other grades 2000 =.01*bsaic_salary 200
:اﻟﺤﻞ
ﻻ ﺑﺘﺤﺪﻳﺪ اﻟﻤﺘﻐﻴﺮات اﻟﺘﻲ ﺳﻨﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ
ً ﻧﺒﺪأ أو
وﻳﺘﻢ إدﺧﺎﻟﻪ ﻋﻦ ﻃﺮﻳﻖ اﻟﻤﺴﺘﺨﺪم وﻳﺘﻢ ﺗﻌﺮﻳﻔﻪ آﻌﺪد ﺻﺤﻴﺢGrade
وهﺬﻩ اﻟﻤﺘﻐﻴﺮات ﺗﺤﺴﺐ ﺣﺴﺐ اﻟﺠﺪول أﻋﻼﻩfees ،bonus ،bsaic_salary
: ﺑﺎﻟﺘﺎﻟﻲ ﻳﻤﻜﻦ ﺗﺼﻤﻴﻢ اﻟﻤﺨﻄﻂ اﻻﻧﺴﻴﺎﺑﻲ آﺎﻵﺗﻲ. وﻳﺤﺴﺐ ﺣﺴﺐ اﻟﻤﻌﺎدﻟﻪ أﻋﻼﻩtotal_income
اﺑﺪأ
ادﺧﻞ اﻟـ
grade
yes
bsaic_salary=6000;
grade=1 bonus=.04*bsaic_salary;
fees=700;
No
yes
bsaic_salary=5200;
grade=2 bonus=.04*bsaic_salary;
fees=700;
No
yes bsaic_salary=5000;
grade=3 bonus=.03*bsaic_salary;
fees=500;
No
yes bsaic_salary=3000;
grade=4 bonus=.02*bsaic_salary;
fees=400;
No
No
bsaic_salary=2000;
bonus=.01*bsaic_salary;
fees=200;
total_income=bsaic_salary+bonus+fees
total_income اﻃﺒﻊ
اﻟﻨﻬﺎﻳﺔ
14
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
Prog6 :وﺑﺎﻟﺘﺎﻟﻲ ﻳﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ آﺎﻵﺗﻲ
#include<iostream.h>
void main()
{
int grade;
float bonus, total_income,bsaic_salary,fees;
cout<<"\n enter the employee grade: ";
cin>>grade;
switch(grade)
{
case 1:
bsaic_salary=6000;
bonus=.04*bsaic_salary;
fees=700;
break;
case 2:
bsaic_salary=5200;
bonus=.04*bsaic_salary;
fees=700;
break;
case 3:
bsaic_salary=5000;
bonus=.03*bsaic_salary;
fees=500;
break;
case 4:
bsaic_salary=3000;
bonus=.02*bsaic_salary;
fees=400;
break;
default:
bsaic_salary=2000;
bonus=.01*bsaic_salary;
fees=200;
break;
}
total_income=bsaic_salary+bonus+fees;
cout<<" the total income for this employee is "<<total_income;
}
:ﻣﻠﺤﻮﻇﻪ
، ﺑﻴﻨﻬﺎ ﻓﻮاﺻﻞswitch ﺗﻜﺘﺐ هﺬﻩ اﻟﻤﺘﻐﻴﺮات ﻣﻊ ﻋﺒﺎرة،ﻋﻨﺪ ارﺗﺒﺎط اﻟﺨﻴﺎرات ﺑﺄآﺜﺮ ﻣﻦ ﻣﺘﻐﻴﺮ
15
Loops اﻟﺤﻠﻘﺎت اﻟﺘﻜﺮارﻳﺔ
ﺗﻤﺜﻞ هﺬﻩ اﻟﺤﻠﻘﺎت اﻟﺠﺰء اﻟﺜﺎﻧﻲ ﻣﻦ ﺑﻨﻰ اﻟﺘﺤﻜﻢ ﻓﻌﻨﺪ اﻟﺮﻏﺒﺔ ﻓﻲ ﺗﻜﺮار أﻣﺮ" أو أواﻣﺮ" ﻣﻌﻴﻨﻪ ﺗﺴﺘﺨﺪم هﺬﻩ
اﻟﺤﻠﻘﺎت ،و ﺳﻨﺘﻨﺎول ﻓﻲ هﺬا اﻟﺪرس ﺛﻼﺛﺔ أﻧﻮاع ﻣﻦ هﺬﻩ اﻟﺤﻠﻘﺎت .ﻳﺠﺐ ﻋﻨﺪ ﺗﺼﻤﻴﻢ اﻟﺤﻠﻘﺔ ﺗﺤﺪﻳﺪ اﻵﺗﻲ:
♦ اﻷواﻣﺮ اﻟﺘﻲ ﺗﺤﺘﺎج إﻟﻰ ﺗﻜﺮار ﻟﺘﻮﺿﻊ داﺧﻞ ﺟﺴﻢ اﻟﺤﻠﻘﺔ.
♦ ﻋﺪد ﻣﺮات ﺗﻨﻔﻴﺬ اﻟﺤﻠﻘﺔ ،وذﻟﻚ ﻋﻦ ﻃﺮﻳﻖ ﻣﺘﻐﻴﺮ ﻣﻦ ﻧﻮع intﻳﺴﻤﻰ ﻋﺪاد اﻟﺤﻠﻘﺔ وﺻﻴﺎﻏﺔ ﺷﺮط اﺳﺘﻤﺮار
اﻟﺤﻠﻘﺔ أو ﺗﻮﻗﻔﻬﺎ.
-1ﺣﻠﻘﺔ for
اﻟﺼﻴﻐﻪ اﻟﻌﺎﻣﺔ .....
)for(counter_initial_value;condition;counter_incrementation/decrementation .....
{
. "statements " loop body
.
}
اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ ﺗﺤﺘﻮي ﻋﻠﻰ :
forوهﻲ آﻠﻤﻪ ﻣﺤﺠﻮزة وﺑﻴﻦ اﻟﻘﻮﺳﻴﻦ اﻟﻤﺴﺘﺪﻳﺮﻳﻦ ﺗﻮﺟﺪ ﺛﻼﺛﺔ ﺟﻤﻞ ﺑﺮﻣﺠﻴﺔ:
counter_initial_valueوهﻲ اﻟﺠﻤﻠﺔ اﻟﻤﺤﺘﻮﻳﺔ ﻋﻠﻰ إﻋﻄﺎء ﻋﺪاد اﻟﺤﻠﻘﺔ counterاﻟﻘﻴﻤﻪ اﻹﺑﺘﺪاﺋﻴﺔ،
وﻳﻤﻜﻦ أن ﺗﺤﺘﻮي هﺬﻩ اﻟﺨﻄﻮة ﻋﻠﻰ ﺗﻌﺮﻳﻒ اﻟﻌﺪاد إذا ﻟﻢ ﻳﻜﻦ أﻋﻠﻦ ﻋﻦ ﺗﻌﺮﻳﻔﻪ ﻣﻦ ﻗﺒﻞ ،وﻳﻤﻜﻦ أن ﺗﺘﻢ ﻋﻤﻠﻴﺘﻲ
اﻟﺘﻌﺮﻳﻒ وإﻋﻄﺎء اﻟﻘﻴﻤﻪ اﻹﺑﺘﺪاﺋﻴﺔ ﻗﺒﻞ اﻟﺤﻠﻘﺔ وﺑﺎﻟﺘﺎﻟﻲ ﻧﺴﺘﻐﻨﻲ ﻋﻦ هﺬا اﻟﺘﻌﺒﻴﺮ هﻨﺎ.
conditionوهﻮ ﺷﺮط اﺳﺘﻤﺮار اﻟﺤﻠﻘﺔ أي أن اﻟﺤﻠﻘﻪ ﺗﺴﺘﻤﺮ إذا آﺎن اﻟﺸﺮط ﺻﺤﻴﺢ وﺗﺘﻮﻗﻒ إذا اﻧﺘﻔﻰ
اﻟﺸﺮط ،وهﺬا اﻟﺸﺮط ﻳﻜﺘﺐ ﺑﺎﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻼت اﻟﻌﻼﺋﻘﻴﻪ ﺁﻧﻔﺔ اﻟﺬآﺮ ،آﻤﺎ ﻳﻤﻜﻦ أن ﻳﻜﻮن اﻟﺸﺮط ﻣﺮآﺒًﺎ.
counter_incrimintation/decrimintationوهﻮ ﻣﻌﺪل اﻟﺰﻳﺎدة incriminationأو اﻟﻨﻘﺼﺎن
decrimintationﻓﻲ ﻗﻴﻤﺔ ﻋﺪاد اﻟﺤﻠﻘﻪ ،وﻳﻤﻜﻦ أن ﺗﺘﻢ هﺬﻩ اﻟﺨﻄﻮة ﺿﻤﻦ اﻷواﻣﺮ داﺧﻞ ﺟﺴﻢ اﻟﺤﻠﻘﺔ
وﺑﺎﻟﺘﺎﻟﻲ ﻧﺴﺘﻐﻨﻲ ﻋﻦ هﺬا اﻟﺘﻌﺒﻴﺮ هﻨﺎ ،وﻳﺴﺘﺨﺪم ﻟﺬﻟﻚ ﻣﻌﺎﻣﻼت ﺧﺎﺻﺔ آﻤﺎ هﻮ ﻣﻮﺿﺢ:
x++ x=x+1
x-- x=x-1
"x=variable "mathematical_operator" " value
"x"mathematical_operator"= " value
أﻣﺜﻠﻪ ﺗﻮﺿﻴﺤﻴﻪ
• ﺗﻢ ﺗﻌﺮﻳﻒ اﻟﻌﺪاد وإﻋﻄﺎء اﻟﻘﻴﻤﻪ اﻹﺑﺘﺪاﺋﻴﺔ ﻟﻪ داﺧﻞ ﺗﺮآﻴﺒﺔ for(int i=3;i<=8;i++) {…….} for
• ;int i=3 ﺗﻢ ﺗﻌﺮﻳﻒ اﻟﻌﺪاد ﻓﻲ اﻟﺪاﻟﺔ اﻟﺮﺋﻴﺴﻴﺔ وإﻋﻄﺎء اﻟﻘﻴﻤﻪ اﻹﺑﺘﺪاﺋﻴﺔ ﻟﻪ داﺧﻞ ﺗﺮآﻴﺒﺔfor
}for( ;i<=8;i--) {…….
• }for(int i=3;i<=8;) { i*=3;…. ﻣﻌﺪل اﻟﺘﻐﻴﺮ ﻓﻲ اﻟﻌﺪاد ﻣﻮﺿﻮع داﺧﻞ ﺟﺴﻢ اﻟﺤﻠﻘﻪ
• ﺗﻢ ﺗﻌﺮﻳﻒ اﻟﻌﺪاد وإﻋﻄﺎء اﻟﻘﻴﻤﻪ اﻹﺑﺘﺪاﺋﻴﺔ ﻟﻪ ﻓﻲ اﻟﺪاﻟﺔ اﻟﺮﺋﻴﺴﻴﺔ ووﺿﻊ ﻣﻌﺪل اﻟﺘﻐﻴﺮ ﻓﻴﻪ ﻓﻲ ;int i=3
}for( ;i<=8;) { i/=3;…. ﺟﺴﻢ اﻟﺤﻠﻘﻪ
16
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
-2ﺣﻠﻘﺔ while
اﻟﺼﻴﻐﻪ اﻟﻌﺎﻣﻪ .....
)while(condition .....
{
. "statements " loop body
.
}
ﻧﻔﺲ اﻟﻮﺿﻊ اﻟﻘﺎﺋﻢ ﻓﻲ اﻟﺤﻠﻘﻪ اﻟﺴﺎﺑﻘﺔ ﻏﻴﺮ أن ﻣﻌﺪل اﻟﺘﻐﻴﺮ ﻓﻲ ﻗﻴﻤﺔ اﻟﻌﺪاد ﻳﻜﻮن داﺧﻞ ﺟﺴﻢ اﻟﺤﻠﻘﻪ ،وﺗﻌﺮﻳﻒ اﻟﻌﺪاد
وإﻋﻼن ﻗﻴﻤﺘﻪ اﻹﺑﺘﺪاﺋﻴﺔ ﻗﺒﻞ اﻟﺤﻠﻘﻪ ،ﻳﻤﻜﻦ إﻋﺎدة آﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ ﺑﺎﺳﺘﺨﺪام ﺣﻠﻘﺔ :while
Prog8
-3ﺣﻠﻘﺔ do-while
اﻟﺼﻴﻐﻪ اﻟﻌﺎﻣﻪ .....
.....
do
{
. "statements " loop body
.
}
;)while(condition
ﻧﻔﺲ اﻟﻮﺿﻊ اﻟﻘﺎﺋﻢ ﻓﻲ اﻟﺤﻠﻘﻪ اﻟﺴﺎﺑﻘﺔ ﻏﻴﺮ أن ﻣﻌﺪل اﻟﺘﻐﻴﺮ ﻓﻲ ﻗﻴﻤﺔ اﻟﻌﺪاد ﻳﻜﻮن داﺧﻞ ﺟﺴﻢ اﻟﺤﻠﻘﻪ ،وﺗﻌﺮﻳﻒ اﻟﻌﺪاد
وإﻋﻼن ﻗﻴﻤﺘﻪ اﻹﺑﺘﺪاﺋﻴﺔ ﻗﺒﻞ اﻟﺤﻠﻘﻪ ،ﻧﺠﺪ أن هﺬﻩ اﻟﺤﻠﻘﻪ ﻋﻜﺲ ﺣﻠﻘﺔ whileﺣﻴﺚ اﺧﺘﺒﺎر اﻟﺸﺮط ﻣﺆﺧﺮ ﺑﻌﺪ ﺟﺴﻢ
اﻟﺤﻠﻘﻪ ﻣﻤﺎ ﻳﻌﻨﻲ أن ﺣﻠﻘﺔ do-whileﻻﺑﺪ أن ﺗﻨﻔﺬ ﻣﺮﻩ ﻋﻠﻰ اﻷﻗﻞ ﺣﺘﻰ وﻟﻮ اﻧﺘﻔﻰ ﺷﺮط اﻟﺤﻠﻘﻪ ،ﻳﻤﻜﻦ إﻋﺎدة آﺘﺎﺑﺔ
اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ ﺑﺎﺳﺘﺨﺪام ﺣﻠﻘﺔ :do-while
Prog9
17
ﻣﺜﺎل) (3.6اآﺘﺐ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﻳﻌﻄﻲ اﻟﺨﺮج اﻟﺘﺎﻟﻲ:
Prog10
اﻟﺤﻞ:
18
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
ﺗﻤﺮﻳﻦ 3
.1آﻢ ﻋﺪد ﻣﺮات ﺗﻨﻔﻴﺬ اﻟﺤﻠﻘﺎت اﻟﺘﺎﻟﻴﺔ:
)a. for(i=1;i<15;i=i+3
)b. for(int i=0,int j=9;i<=16&&j>6;i++,j-=2
;c. int t=4
)while(t<=17
{….
};t+=3
;d. int t=4
do
{….
;)t+=3;} while(t>17
)e. for(i=9;i>5;i++
)f. while(6>3
}{……….
.2أﻋﺪ آﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ prog5ﻟﻴﺼﻠﺢ ﻟﻌﺪد nﻣﻮﻇﻒ؟
.3اآﺘﺐ ﺑﺮﻧﺎﻣﺠًﺎ ﺑﻠﻐﺔ C++ﻳﻄﺒﻊ اﻷﻋﺪاد اﻷوﻟﻴﺔ " "primary numbersﻓﻲ اﻟﻤﺪى ﻣﻦ 10و100
.4اآﺘﺐ ﺑﺮﻧﺎﻣﺠًﺎ ﺑﻠﻐﺔ C++ﻳﻄﻠﺐ إدﺧﺎل درﺟﺔ ﻃﺎﻟﺐ ﻓﻲ ﻣﺎدة وﻳﺨﺮج اﻟﺘﻘﺪﻳﺮ ﺣﺴﺐ اﻟﺠﺪول اﻟﺘﺎﻟﻲ:
19
int float
20
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
Arrays اﻟﻤﺼﻔﻮﻓﺎت
اﻟﻤﺼﻔﻮﻓﺎت هﻲ أﺣﺪ ﺑﻨﻰ اﻟﺒﻴﺎﻧﺎت اﻟﻬﺎﻣﻪ ،وهﻲ ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﻪ ﻣﻦ ﺧﺎﻧﺎت اﻟﺬاآﺮﻩ اﻟﻤﺘﺘﺎﻟﻴﺔ اﻟﺘﻲ ﻟﻬﺎ ﻧﻔﺲ
اﻻﺳﻢ وﻧﻔﺲ ﻧﻮع اﻟﺒﻴﺎﻧﺎت .وﻣﻦ أﺟﻞ اﻟﺮﺟﻮع إﻟﻰ ﺧﺎﻧﻪ ﻣﻌﻴﻨﻪ ﻣﻦ هﺬﻩ اﻟﺨﺎﻧﺎت ﻧﺴﺘﺨﺪم اﺳﻢ اﻟﻤﺼﻔﻮﻓﻪ ورﻗﻢ
اﻟﻌﻨﺼﺮ ﻓﻲ اﻟﻤﺼﻔﻮﻓﻪ اﻟﺬي ﻳﺒﺪأ ﻣﻦ .0
اﻟﺼﻴﻐﻪ اﻟﻌﺎﻣﻪ ﻟﻺﻋﻼن ﻋﻦ اﻟﻤﺼﻔﻮﻓﻪ: .....
.....
;]array_type array_name[elements_number
ﻼ اﻹﻋﻼن ;] ، int x[5ﻳﻤﺜﻞ إﻋﻼن ﻋﻦ ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻷﻋﺪاد اﻟﺼﺤﻴﺤﻪ ﺑﻬﺎ ﺧﻤﺴﻪ ﻋﻨﺎﺻﺮ وﺗﺘﻤﻴﺰ ﻋﻨﺎﺻﺮ ﻣﺜ ً
اﻟﻤﺼﻔﻮﻓﻪ ﺑﺎﻟﺮﻗﻢ اﻟﻤﺤﺼﻮر ﺑﻴﻦ ﻗﻮﺳﻲ اﻟﻤﺼﻔﻮﻓﻪ آﺎﻵﺗﻲ.x[0],x[1],x[2],x[3],x[4]:
ﻳﻤﻜﻦ أن ﺗﻘﺮأ ﻗﻴﻢ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﻪ ﻋﻦ ﻃﺮﻳﻖ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ أو ﺗﺴﻨﺪ ﻟﻬﺎ اﻟﻘﻴﻢ ﻋﻦ ﻃﺮﻳﻖ ﻣﻌﺎﻣﻞ اﻹﺳﻨﺎد"=" آﻤﺎ
ﻳﻠﻲ:
;}array_type array_name[elements_number]={values
ﻳﻔﺘﺮض أن ﻳﻜﻮن ﻋﺪد اﻟﻌﻨﺎﺻﺮ ﻣﻄﺎﺑﻘﺎ ﻟﻌﺪد اﻟﻘﻴﻢ وﺗﺴﻨﺪ اﻟﻘﻴﻢ ﻟﻠﻌﻨﺎﺻﺮ ﻋﻠﻰ اﻟﺘﻮاﻟﻲ اﺑﺘﺪا ًء ﻣﻦ اﻟﻌﻨﺼﺮ اﻷول ]،[0
ﻟﻜﻦ ﻋﻨﺪﻣﺎ ﻳﻜﻮن ﻋﺪد اﻟﻘﻴﻢ أﻗﻞ ﻣﻦ اﻟﻌﻨﺎﺻﺮ ﺗﺴﻨﺪ اﻟﻘﻴﻤﺔ 0ﺗﻠﻘﺎﺋﻴًﺎ ﻟﻠﻌﻨﺎﺻﺮ اﻟﻤﺘﺒﻘﻴﻪ.
ﻣﻠﺤﻮﻇﻪ:
ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﺤﻠﻘﺎت اﻟﺘﻜﺮارﻳﻪ ﻟﺘﺴﻬﻴﻞ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺼﻔﻮﻓﺎت ﻓﻲ ﻋﻤﻠﻴﺎت اﻹدﺧﺎل واﻹﺧﺮاج أو اﻟﻤﻌﺎﻟﺠﺔ
ﺑﺤﻴﺚ ﻳﺴﺘﺨﺪم ﻋﺪاد اﻟﺤﻠﻘﺔ ﻟﻠﺪﻻﻟﻪ ﻋﻠﻰ رﻗﻢ اﻟﻌﻨﺼﺮ.
Prog11 ﻣﺜﺎل )(1.4
اآﺘﺐ ﺑﺮﻧﺎﻣﺠًﺎ ﻟﺤﺴﺎب اﻟﻤﺠﻤﻮع واﻟﻤﺘﻮﺳﻂ ﻟﻌﺸﺮة أرﻗﺎم ﻣﺪﺧﻠﻪ؟
ﻣﻠﺤﻮﻇﻪ:
ﺗﺴﺘﺨﺪم اﻟﻤﺼﻔﻮﻓﺎت ﻓﻲ ﺗﻤﺜﻴﻞ ﺳﻼﺳﻞ اﻟﺤﺮوف آﺎﻷﺳﻤﺎء ﺣﻴﺚ ﻳﻜﻮن ﻧﻮع اﻟﻤﺼﻔﻮﻓﻪ .char
Multiple Subscripts Array اﻟﻤﺼﻔﻮﻓﺎت ﻣﺘﻌﺪدة اﻷﺑﻌﺎد
ﻳﻤﻜﻦ ﻟﻠﻤﺼﻔﻮﻓﺎت أن ﺗﺄﺧﺬ ﻋﺪة أﺑﻌﺎد .وﻣﻦ ﺑﻴﻦ اﻻﺳﺘﺨﺪاﻣﺎت اﻟﺸﺎﺋﻌﺔ ﻟﻬﺬا اﻟﻨﻮع ﻣﻦ اﻟﻤﺼﻔﻮﻓﺎت هﻮ اﻟﺠﺪاول
اﻟﺘﻲ ﺗﻨﺘﻈﻢ ﻓﻴﻬﺎ اﻟﺒﻴﺎﻧﺎت ﺿﻤﻦ ﻣﺠﻤﻮﻋﻪ ﻣﻦ اﻟﺼﻔﻮف و اﻷﻋﻤﺪة وﺑﺎﻟﺘﺎﻟﻲ ﻟﻨﺼﻞ ﻟﻤﻌﻠﻮﻣﻪ ﻣﻌﻴﻨﻪ ﻳﺠﺐ ﺗﺤﺪﻳﺪ اﻟﺴﻄﺮ
واﻟﻌﻤﻮد وآﻞ ﻣﻨﻬﻤﺎ ﻳﻤﺜﻞ ﺑﻌﺪًا ﻟﻠﻤﺼﻔﻮﻓﻪ .اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ اﻹﻋﻼن ﻋﻦ ﻣﺼﻔﻮﻓﻪ ذات ﺑﻌﺪﻳﻦ:
]float w[4][5
ﻓﻬﺬﻩ اﻟﻤﺼﻔﻮﻓﻪ ﺑﻬﺎ 20ﻋﻨﺼﺮًا " "5*4وﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ هﺬﻩ اﻟﻤﺼﻔﻮﻓﻪ ﻓﻲ ﻋﻤﻠﻴﺎت اﻹﺧﺮاج واﻹدﺧﺎل واﻟﻤﻌﺎﻟﺠﻪ
ﻧﺴﺘﺨﺪم اﻟﺤﻠﻘﺎت اﻟﺘﻜﺮارﻳﻪ اﻟﺘﻲ ﻣﺮت ﻣﻌﻨﺎ ﺳﺎﺑﻘًﺎ.
21
ﻣﺜﺎل) (2.4اآﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻳﺤﺴﺐ ﻣﺘﻮﺳﻂ درﺟﺎت اﻟﻄﺎﻟﺐ ﻓﻲ أرﺑﻌﻪ ﻣﻮاد
Prog12 اﻟﺤﻞ:
ﻧﻼﺣﻆ اﺳﺘﺨﺪام اﻟﻤﺼﻔﻮﻓﺎت ﻓﻲ ﺗﻤﺜﻴﻞ ﺳﻼﺳﻞ اﻟﺤﺮوف ﻓﻲ اﻻﺳﻢ اﻷول واﻟﺜﺎﻧﻲ ﻟﻠﻄﺎﻟﺐ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ.
ﻣﻠﺤﻮﻇﻪ
ﻋﻨﺪ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺳﻼﺳﻞ اﻟﺤﺮوف ،ﻳﺴﺘﺨﺪم اﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺤﺮﻓﻴﺔ ﻓﻘﻂ .
ﻣﺜﺎل ) (3.4اﻋﺪ آﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ ﻋﻠﻰ أن ﻳﺤﺴﺐ ﻣﺘﻮﺳﻂ اﻟﺪرﺟﺎت ﻟﻌﺪد 6ﻃﻼب آﻤﺎ ﻓﻲ اﻟﺠﺪول:
اﻟﻤﻮاد
اﻟﻤﺘﻮﺳﻂ اﺳﻢ اﻟﻄﺎﻟﺐ
ﺣﺎﺳﺐ اﺣﺼﺎء رﻳﺎﺿﻴﺎت ﻓﻴﺰﻳﺎء
38 56 78 34 ﺣﺴﻦ ﻋﻠﻲ
90 89 90 67 ﻋﻠﻲ ﺳﻌﺪ
76 78 23 45 ﺳﺎﻟﻢ ﻋﻠﻲ
34 56 78 89 ﺻﺎﻟﺢ ﺧﻠﻴﻞ
54 63 78 45 ﻓﻮاز ﻋﻠﻲ
63 78 58 47 ﻋﻤﺮ ﺧﻠﻴﻞ
اﻟﺠﺪول أﻋﻼﻩ ﻳﻮﺿﺢ درﺟﺎت ﻣﺠﻤﻮﻋﺔ ﻃﻼب ﻓﻲ ﺑﻌﺾ اﻟﻤﻮاد .ﻟﺘﻤﺜﻴﻞ هﺬﻩ اﻟﺒﻴﺎﻧﺎت ﻻﺑﺪ ﻟﻨﺎ ﻣﻦ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺑﻌﺪﻳﻦ
هﻤﺎ اﻟﻄﻼب واﻟﻤﻮاد آﻤﺎ ﻳﻈﻬﺮ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ:
22
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
Prog13
ﻧﻼﺣﻆ اﺳﺘﺨﺪام ﻣﺼﻔﻮﻓﺎت ذات ﺑﻌﺪﻳﻦ ﻟﺘﻤﺜﻴﻞ اﻟﺪرﺟﻪ degreeو اﻹﺳﻢ اﻷول first_nameواﻹﺳﻢ اﻷﺧﻴﺮ
.last_name
اﺳﺘﺨﺪام اﻟﻤﺼﻔﻮﻓﺎت ﻓﻲ ﻓﺮز اﻟﺒﻴﺎﻧﺎت:
ﻳﻌﺘﺒﺮ اﻟﻔﺮز ﻣﻦ أهﻢ ﻋﻤﻠﻴﺎت اﻟﻤﻌﺎﻟﺠﺔ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﻧﻈﻢ اﻟﺘﺸﻐﻴﻞ واﻟﺒﺮاﻣﺞ اﻟﺘﻄﺒﻴﻘﻴﺔ ،وﺗﻮﺟﺪ ﻋﺪة ﺧﻮارزﻣﻴﺎت
ﻟﻠﻔﺮز ،ﻣﻨﻬﺎ ﻣﺎ ﺳﻨﺘﻨﺎوﻟﻪ اﻵن وهﻮ اﻟﻔﺮز اﻟﻔﻘﺎﻋﻲ bubble sortواﻟﺬي ﻳﻌﺘﻤﺪ ﻋﻠﻰ ﻣﻘﺎرﻧﻪ اﻟﻤﺘﻐﻴﺮات ﻓﻴﻤﺎ ﺑﻴﻨﻬﺎ
وﺗﺒﺪﻳﻞ ﻣﻮاﻗﻌﻬﺎ ﺑﻤﺎ ﻳﺘﻨﺎﺳﺐ ﻣﻊ ﻧﻮع اﻟﺘﺮﺗﻴﺐ ﺳﻮا ًء آﺎن ﺗﺼﺎﻋﺪﻳًﺎ أم ﺗﻨﺎزﻟﻴًﺎ وهﺬا ﻳﺘﻄﻠﺐ ﻣﻘﺎرﻧﺔ آﻞ اﻟﻌﻨﺎﺻﺮ ﻓﻴﻤﺎ
ﺑﻴﻨﻬﺎ ﻣﻤﺎ ﻳﺴﺘﻮﺟﺐ اﺳﺘﺨﺪام ﺣﻠﻘﺘﻴﻦ ﻣﺘﺪاﺧﻠﺘﻴﻦ ﺗﻌﻤﻞ آﻞ ﻣﻨﻬﻤﺎ n-1ﻣﺮﻩ ﺣﻴﺚ nﻋﺪد اﻟﻤﺘﻐﻴﺮات اﻟﻤﺮاد ﺗﺮﺗﻴﺒﻬﺎ.
ﻋﻤﻠﻴﺔ اﻟﺘﺒﺪﻳﻞ ﺗﺘﻢ ﺑﺎﺳﺘﺨﺪام ﻣﻌﺎﻣﻞ اﻹﺳﻨﺎد= ﺣﻴﺚ ﺗﺴﻨﺪ اﻟﻘﻴﻤﺔ اﻷوﻟﻰ ﻟﻤﺘﻐﻴﺮ اﻟﺘﺒﺪﻳﻞ ﺛﻢ اﻟﻘﻴﻤﻪ اﻟﺜﺎﻧﻴﻪ ﻟﻸوﻟﻰ ﺛﻢ ﻗﻴﻤﺔ
ﻣﺘﻐﻴﺮ اﻟﺘﺒﺪﻳﻞ ﻟﻠﺜﺎﻧﻴﻪ آﻤﺎ ﻓﻲ اﻟﺮﺳﻢ ﻟﻠﺘﺒﺪﻳﻞ ﺑﻴﻦ ﻗﻴﻤﺘﻲ :x,y
1
X
SWAP
3 2
Y ﻳﻤﻜﻦ آﺘﺎﺑﺔ اﻟﺨﻮارزﻣﻴﺔ ﻟﻠﺘﺮﺗﻴﺐ اﻟﺘﺼﺎﻋﺪي آﺎﻵﺗﻲ:
)Loop(i=0 toi<n-1 أﻣﺎ اﻟﺘﺮﺗﻴﺐ اﻟﺘﻨﺎزﻟﻲ ﻓﻨﻔﺲ اﻟﺨﻮارزﻣﻴﻪ ﻣﻊ ﺗﻐﻴﻴﺮ اﻟﺸﺮط إﻟﻰ:
)Loop(j=0 toj<n-1 )]If(x[i]<x[i-1
)]If(x[i]>x[i-1
]Swap=x[i
]x[i]=x[i-1
x[i-1]=swap
ﺗﻤﺮﻳﻦ)(4
اآﺘﺐ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ C++ﻳﻘﻮم ﺑﺘﺮﺗﻴﺐ nرﻗﻢ ﺗﺮﺗﻴﺒًﺎ ﺗﺼﺎﻋﺪﻳًﺎ ؟ .1
أﻋﺪ آﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ 12ﻟﻌﺪد nﻃﺎﻟﺐ ﻓﻲ mﻣﺎدة ﺑﺤﻴﺚ ﻳﺤﺴﺐ ﻣﺘﻮﺳﻂ درﺟﺎت اﻟﻄﻼب ﻓﻲ آﻞ ﻣﺎدة؟ .2
23
Main( )
{
statements
………… Function A
…………. statements
Function D Function B
……… statements
……… return
}
return
………
………
return
24
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
Function اﻟﺪوال
اﻟﺪاﻟﻪ ﻋﺒﺎرﻩ ﻋﻦ ﺑﺮﻧﺎﻣﺞ ﻓﺮﻋﻲ ﻳﺤﺘﻮي ﻋﻠﻰ ﺗﻌﻠﻴﻤﻪ ﺑﺮﻣﺠﻴﻪ أو أآﺜﺮ وﻳﺘﻢ ﺗﻨﻔﻴﺬ اﻟﺪاﻟﻪ ﻋﻨﺪ اﺳﺘﺪﻋﺎﺋﻬﺎ ﻣﻦ ﻗﺒﻞ اﻟﺪاﻟﻪ
اﻟﺮﺋﻴﺴﻴﻪ أو أي داﻟﻪ أﺧﺮى ﺛﻢ ﺗﺮﺟﻊ اﻟﺪاﻟﻪ ﻗﻴﻤﻪ ﻟﻠﺪاﻟﺔ اﻟﺘﻲ ﻗﺎﻣﺖ ﺑﺎﻻﺳﺘﺪﻋﺎء آﻤﺎ هﻮ ﻣﻮﺿﺢ ﺑﺎﻟﺮﺳﻢ
اﻟﺒﺮﻧﺎﻣﺞ
) (Main
{
Function A statements
………… Function A
Function D statements
………….
Function D Function B
………
return statements
………
}
return
Function B
………
………
return
ﺗﺬﺧﺮ اﻟﻤﻜﺘﺒﻪ اﻟﻤﻌﻴﺎرﻳﻪ ﻟﻠﻐﻪ ﺑﻤﺠﻤﻮﻋﻪ آﺒﻴﺮﻩ ﻣﻦ اﻟﺪوال اﻟﺠﺎهﺰﻩ واﻟﺘﻲ ﺗﺘﺒﻊ آﻞ ﻣﺠﻤﻮﻋﻪ ﻣﻨﻬﺎ ﻟﻤﻠﻒ ﺗﺮوﻳﺴﻲ ﻻﺑﺪ
ﻼ اﻟﺪاﻟﻪ sqrtﻟﺤﺴﺎب اﻟﺠﺬر اﻟﺘﺮﺑﻴﻌﻲ
ﻣﻦ ﺿﻤﻪ ﻟﻠﺒﺮﻧﺎﻣﺞ ﻋﻨﺪ اﻟﺮﻏﺒﻪ ﻓﻲ اﺳﺘﺨﺪام اﺣﺪى دوال هﺬا اﻟﻤﻠﻒ ،ﻣﺜ ً
ﻻﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ اﻻ إذاﺗﻢ ﺿﻢ اﻟﻤﻠﻒ math.hﻟﻠﺒﺮﻧﺎﻣﺞ ،وﻳﻤﻜﻦ اﻹﻃﻼع ﻋﻠﻰ هﺬﻩ اﻟﻤﻠﻔﺎت و اﻟﺪوال اﻟﺘﻲ
ﺑﺪاﺧﻠﻬﺎ ﻣﻦ ﻗﺎﺋﻤﺔ اﻟﻤﺴﺎﻋﺪﻩ اﻟﻤﻮﺟﻮدﻩ ﻓﻲ ﺑﻴﺌﺔ اﻟﻌﻤﻞ وإﻟﻴﻚ ﺑﻌﺾ اﻟﺪوال اﻟﺮﻳﺎﺿﻴﻪ اﻟﻤﻨﻀﻮﻳﻪ ﺗﺤﺖ اﻟﻤﻠﻒ math
ﻣﺜﺎل اﻟﺼﻴﻐﻪ اﻟﻌﺎﻣﻪ اﻟﻤﻬﻤﻪ اﻟﺪاﻟﻪ
tan(0)=0 )tan(x ﺣﺴﺎب ﻃﻞ اﻟﺰاوﻳﻪ اﻟﻨﺼﻒ ﻗﻄﺮﻳﻪ tan
sin(0)=0 )sin(x ﺣﺴﺎب ﺟﻴﺐ اﻟﺰاوﻳﻪ اﻟﻨﺼﻒ ﻗﻄﺮﻳﻪ sin
cos(0)=1 )cos(x ﺣﺴﺎب ﺟﻴﺐ ﺗﻤﺎم اﻟﺰاوﻳﻪ اﻟﻨﺼﻒ ﻗﻄﺮﻳﻪ cos
abs(-7)=7 )abs(y ﺣﺴﺎب اﻟﻘﻴﻤﻪ اﻟﻤﻄﻠﻘﻪ ﻟﻸﻋﺪاد اﻟﺼﺤﻴﺤﻪ abs
ceil(4.2)=5, ceil(-4.2)=-4 )ceil(t ﺗﻘﺮﻳﺐ ﻷﻋﻠﻰ ceil
floor(4.2)=4, floor(-4.2)=-5 )floor(t ﺗﻘﺮﻳﺐ ﻷﺳﻔﻞ floor
pow(2,3)=8, pow(.16,.5)=.4 )pow(x,y ﻧﺎﺗﺞ رﻓﻊ ﻋﺪد ﺣﻘﻴﻘﻲ ﻵﺧﺮ pow
sqrt(9)=3, sqrt(.01)=.1 )sqrt(w اﻳﺠﺎد اﻟﺠﺬر اﻟﺘﺮﺑﻴﻌﻲ ﻟﻌﺪد ﺣﻘﻴﻘﻲ sqrt
fmod(5,3)=2,fmod(3,.7)=.2 )fmod(t,y اﻳﺠﺎد ﺑﺎﻗﻲ اﻟﻘﺴﻤﻪ ﻟﻌﺪد ﺣﻘﻴﻘﻲ fmod
Log(4)=1.38629 )log(x اﻳﺠﺎد اﻟﻠﻮﻏﺮﻳﺜﻢ اﻟﻄﺒﻴﻌﻲ ﻟﻌﺪد ﺣﻘﻴﻘﻲ log
Log10(100)=2 )Log10(x اﻳﺠﺎد اﻟﻠﻮﻏﺮﻳﺜﻢ اﻟﻌﺸﺮي ﻟﻌﺪد ﺣﻘﻴﻘﻲ Log10
وهﺬﻩ ﺑﻌﺾ اﻟﺪوال اﻟﻤﺘﻌﻠﻘﻪ ﺑﻤﻌﺎﻟﺠﺔ ﺳﻼﺳﻞ اﻟﺤﺮوف ﺿﻤﻦ اﻟﻤﻠﻒ string.h
ﻣﻠﺤﻮﻇﻪ اﻟﺼﻴﻐﻪ اﻟﻌﺎﻣﻪ اﻟﻤﻬﻤﻪ اﻟﺪاﻟﻪ
ﻧﺴﺦ s2ﻓﻲs1 )strcpy(s1,s2 ﻧﺴﺦ اﻟﻨﺺ strcpy
ﺗﻤﺜﻞ s1ﻧﺎﺗﺞ اﻟﺪﻣﺞ )strcat(s1,s2 دﻣﺞ ﻧﺺ ﻣﻊ ﺁﺧﺮ strcat
ﻧﺎﺗﺞ اﻟﺪاﻟﻪ ﻋﺪد ﺻﺤﻴﺢ )strlen(s1 ﺗﺤﺴﺐ ﻃﻮل اﻟﻨﺺ Strlen
ﺗﺮﺟﻊ 0إذا آﺎن اﻟﻨﺼﺎن ﻣﺘﻄﺎﺑﻘﺎن1،إذا آﺎن ﺗﺮﻣﻴﺰs1أآﺒﺮ ﻣﻘﺎرﻧﺔ ﻧﺺ ﻣﻊ ﺁﺧﺮ
)strcmp(s1,s2 strcmp
ﻣﻦ -1 s2إذا آﺎن ﺗﺮﻣﻴﺰ s1أﺻﻐﺮ ﻣﻦ s2 ﺣﺴﺐ ﺗﺮﻣﻴﺰ ﺁﺳﻜﻲ
ﺗﺮﺟﻊ ﻣﻌﻜﻮس اﻟﻨﺺ ﻣﺜﻼ carﺗﺼﺒﺢrac )strrev(s1 ﻋﻜﺲ اﻟﻨﺺ strrev
25
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
ﻣﺜﺎل)(2.5اﺳﺘﺨﺪم اﻟﺪاﻟﻪ strrevﻓﻲ ﺗﺸﻔﻴﺮ اﻟﻨﺺ
C++ programming language is an object oriented language
Prog15
اﻟﺤﻞ
اﻟﻨﺎﺗﺞ
27
ﻣﻠﺤﻮﻇﺎت:
إذا أﻋﻠﻦ ﻋﻦ اﻟﺪاﻟﻪ أﻧﻬﺎ voidﻓﺈن اﻟﺪاﻟﻪ ﻟﻦ ﺗﺮﺟﻊ ﺷﺊ وإﻧﻤﺎ ﺗﻨﺠﺰ ﻣﻬﺎﻣﻬﺎ ﻣﺒﺎﺷﺮ ًة.
إذا آﺎﻧﺖ اﻟﺪاﻟﻪ ﺗﺮﺟﻊ ﻗﻴﻤﻪ ،ﻟﺰم ذﻟﻚ اﺳﺘﺨﺪام اﻟﺘﻌﻠﻴﻤﻪ returnﻣﻠﺤﻘﻪ ﺑﻘﻴﻤﺔ اﻹرﺟﺎع ﻓﻲ ﺁﺧﺮ ﺟﺴﻢ اﻟﺪاﻟﻪ.
ﻼ ﻋﻦ اﻟﺪوال اﻷﺧﺮى.
ﺟﺴﻢ اﻟﺪاﻟﻪ ﻳﺠﺐ أن ﻳﻜﻮن ﻣﺴﺘﻘ ً
ﻣﺜﺎل) (4.5اآﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻳﺴﺘﺨﺪم اﻟﺪوال ﻓﻲ ﺗﺤﺪﻳﺪ اﻟﻘﻴﻤﻪ اﻷآﺒﺮ واﻟﻘﻴﻤﻪ اﻷﺻﻐﺮ ﺑﻴﻦ رﻗﻤﻴﻦ ﺻﺤﻴﺤﻴﻦ ﻣﺪﺧﻠﻴﻦ
ﺑﺤﻴﺚ ﺗﺴﻤﻰ اﻟﺪاﻟﺘﻴﻦ max, min؟
اﻟﺤﻞ:
ﻟﻮ ﺗﻤﻌﻨﺎ ﻓﻲ ﻣﻬﺎم اﻟﺪاﻟﺘﻴﻦ ﻧﺠﺪ أن آﻞ ﻣﻨﻬﻤﺎ ﺗﺤﺘﺎج إﻟﻰ وﺳﻴﻄﻴﻦ "اﻟﻌﺪدﻳﻦ اﻟﻤﺨﻠﻴﻦ" ﻣﻦ ﻧﻮع intوأن آﻞ ﻣﻨﻬﻤﺎ
ﺗﺮﺟﻊ ﻋﺪدًا ﺻﺤﻴﺤًﺎ أﻳﻀًﺎ هﻮ اﻟﻘﻴﻤﻪ اﻷآﺒﺮ ﻓﻲ maxأو اﻷﺻﻐﺮ ﻓﻲ minوﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ اﻟﺸﺮﻃﻲ ?:
Prog16 ﻓﻲ ﺑﻨﻴﺔ اﻟﺪوال ﻟﺘﺤﺪﻳﺪ اﻟﻘﻴﻤﻪ اﻷآﺒﺮ أو اﻷﺻﻐﺮ ،ﻟﺬا ﻳﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ آﺎﻵﺗﻲ:
اﻹﻋﻼن ﻋﻦ اﻟﺪوال
اﺳﺘﺪﻋﺎء اﻟﺪوال
ﺗﻌﺮﻳﻒ اﻟﺪوال
28
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
Prog17
29
Hanoi Tower ﻣﺸﻜﻠﺔ أﺑﺮاج هﺎﻧﻮي
ﻳﺴﺘﻌﻤﻞ هﺬا اﻟﻤﺜﺎل ﻟﺘﻮﺿﻴﺢ اﻟﺪوال اﻟﻌﻮدﻳﻪ واﻟﻤﺸﻜﻠﺔ ﺗﺘﻠﺨﺺ ﻓﻲ وﺟﻮد ﺛﻼﺛﺔ أﻋﻤﺪة A, B, Cوﻳﻮﺟﺪ ﻋﺪد ﻣﻦ
اﻷﻗﺮاص ﻣﺘﺪرﺟﺔ اﻟﻘﻄﺮ ﻋﻠﻰ اﻟﻌﻤﻮد Aﺑﺤﻴﺚ ﻳﻜﻮن اﻟﻘﺮص ذو اﻟﻘﻄﺮ اﻷآﺒﺮ أﺳﻔﻞ ،و اﻟﺬي أﻗﻞ ﻣﻨﻪ أﻋﻠﻰ ،آﻤﺎ
هﻮ ﻣﻮﺿﺢ ﺑﺎﻟﺸﻜﻞ ،واﻟﻤﻄﻠﻮب ﻧﻘﻞ اﻷﻗﺮاص إﻟﻰ اﻟﻌﻤﻮد Cﺑﻨﻔﺲ اﻟﻮﺿﻊ ﺑﺎﻹﺳﺘﻌﺎﻧﻪ ﺑﺎﻟﻌﻤﻮد Bﻣﻊ ﻣﺮاﻋﺎة ﻋﺪم
وﺿﻊ ﻗﺮص ﻋﻠﻰ ﺁﺧﺮ أﻗﻞ ﻣﻨﻪ ﻓﻲ اﻟﻘﻄﺮ.
اﻟﻤﻄﻠﻮب ﺑﺮﻧﺎﻣﺞ ﻳﺤﺪد ﺧﻄﻮات اﻟﺤﻞ ﺣﺴﺐ ﻋﺪد اﻷﻗﺮاص اﻟﻤﺪﺧﻞ؟
اﻟﺤﻞ:
ﻟﻮ ﺣﺎوﻟﻨﺎ ﺣﻞ اﻟﻤﺴﺄﻟﺔ ﻓﻲ ﺣﺎﻟﺔ وﺟﻮد ﻗﺮﺻﻴﻦ ﻧﺠﺪ اﻵﺗﻲ:
ﺣﺮك ﻗﺮص ﻣﻦ Aإﻟﻰ .B
ﺣﺮك ﻗﺮص ﻣﻦ Aإﻟﻰ .C
ﺣﺮك ﻗﺮص ﻣﻦ Bإﻟﻰ .C
إذن ﻳﺘﻢ اﻟﺤﻞ ﻓﻲ 3ﺧﻄﻮات ،أﻣﺎ إذا آﺎن ﻋﺪد اﻷﻗﺮاص 3ﻓﺈﻧﻨﺎ ﻧﺤﺘﺎج ﻟﻨﻘﻞ اﻟﻘﺮﺻﻴﻦ اﻟﻌﻠﻮﻳﻴﻦ ﻣﻦ Aإﻟﻰ B
" وهﺬا ﻳﺤﺘﺎج إﻟﻰ 3ﺧﻄﻮات" ﺛﻢ ﻳﻨﻘﻞ اﻟﻘﺮص اﻷﺧﻴﺮ ﻣﻦ Aإﻟﻰ Bﻓﻲ ﺧﻄﻮﻩ واﺣﺪﻩ ،ﺛﻢ ﻳﻨﻘﻞ اﻟﻘﺮﺻﻴﻦ
اﻟﻌﻠﻮﻳﻴﻦ ﻣﻦ Bإﻟﻰ “ Cوهﺬا ﻳﺤﺘﺎج إﻟﻰ 3ﺧﻄﻮات" ،إذن ﻳﺘﻢ اﻟﺤﻞ ﻓﻲ 7ﺧﻄﻮات ،ﻳﻤﻜﻦ ﺗﻠﺨﻴﺺ ﺧﻄﻮات
اﻟﺤﻞ آﺎﻵﺗﻲ:
أﻧﻘﻞ n-1ﻗﺮص ﻣﻦ Aإﻟﻰ B
اﻧﻘﻞ اﻟﻘﺮص اﻷﺧﻴﺮ ﻣﻦ Aإﻟﻰ C
أﻧﻘﻞ n-1ﻗﺮص ﻣﻦ Bإﻟﻰ C
ﻧﺠﺪ أن ﻓﻲ اﻟﺨﻄﻮﺗﻴﻦ اﻷوﻟﻰ واﻟﺜﺎﻟﺜﺔ ﺗﻄﺒﻴﻖ ﻟﻤﺒﺪأ اﻟﻌﻮدﻳﻪ ﺣﻴﺚ ﻳﺘﻢ اﺳﺘﺪﻋﺎء اﻟﺪاﻟﻪ ﻣﻦ داﺧﻠﻬﺎ.
ﻧﺠﺪ أن ﻋﺪد ﺧﻄﻮات اﻟﺤﻞ ﻳﺴﺎوي ﻋﺪد ﺧﻄﻮات اﻟﺤﻞ ﻟـ n-1ﻗﺮص ﻣﻀﺮوﺑًﺎ ﻓﻲ اﺛﻨﻴﻦ زاﺋﺪًا واﺣﺪ أي أن
د)ن(=*2د)ن1+(1-
ﻼ إذا ن= 5ﻓﺈن
ﻣﺜ ً
د)*2=(5د) 1+(4وهﺬا ﻻﻳﻤﻜﻦ اﻟﺤﺼﻮل ﻋﻠﻴﻪ إﻻ إذا ﺣﺴﺒﻨﺎ د)(4
د)*2=(4د)1+(3
د)*2=(3د)1+(2
د)*2=(2د)1+(1
د)1=(1
إذن د) 31=(5إذن هﺬﻩ اﻟﺪاﻟﻪ ﺗﺤﺘﺎج إﻟﻰ ﺗﻄﺒﻴﻖ ﻟﻤﺒﺪأ اﻟﻌﻮدﻳﻪ ،اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ ﺣﻞ هﺬﻩ اﻟﻤﺸﻜﻠﺔ:
30
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
Prog18
ﻣﺜﺎل)(6.5اآﺘﺐ ﺑﺮﻧﺎﻣﺤًﺎ ﻳﺤﺴﺐ اﻟﺤﺪ nﻣﻦ ﺳﻠﺴﻠﺔ ﻓﺎﻳﺒﻮﻧﺎﺗﺸﻲ Fibonacci Seriesاﻟﺘﻲ ﺗﻤﺜﻞ اﻷرﻗﺎم
…………0,1,1,2,3,5,8,13,21,
ﺣﻴﺚ اﻟﺤﺪ اﻟﻌﺎم ح)ن( ﻳﺤﺴﺐ ﺑﺎﻟﻌﻼﻗﺔ:
ح)ن(= ح)ن +(1-ح)ن (2+ﻣﻊ اﻟﻌﻠﻢ أن ح)،0=(0ح)1=(1
اﻟﺤﻞ:اﻟﻨﺴﺒﺔ ﺑﻴﻦ أي ﺣﺪ واﻟﺬي ﻳﺴﺒﻘﻪ ﺗﺴﻤﻰ ﺑﺎﻟﻨﺴﺒﻪ اﻟﺬهﺒﻴﻪ golden ratioوﺗﺴﺘﺨﺪم ﻓﻲ اﻟﺘﺼﻤﻴﻢ اﻟﻤﻌﻤﺎري
آﻨﺴﺒﻪ ﺑﻴﻦ اﻟﻄﻮل واﻟﻌﺮض ﻟﻠﻨﻮاﻓﺬ واﻟﻐﺮف ،ﻣﻦ ﺻﻴﻐﺔ اﻟﺤﺪ اﻟﻌﺎم ﻟﻬﺬﻩ اﻟﺴﻠﺴﻠﻪ ﻧﺠﺪ أن أي ﺣﺪ ﻣﻦ ﺣﺪودهﺎ هﻮ
داﻟﻪ ﻓﻲ اﻟﺤﺪﻳﻦ اﻟﺴﺎﺑﻘﻴﻦ ﻟﻪ "ﺣﺎﺻﻞ ﺟﻤﻌﻬﻤﺎ" أي أن اﻟﻌﻼﻗﻪ داﻟﻪ ﻓﻲ ﻧﻔﺴﻬﺎ ،ﻟﺬا ﻳﺴﺘﺤﺴﻦ أن ﺗﻜﻮن اﻟﺪاﻟﻪ
Fibonacciداﻟﻪ ﻋﻮدﻳﻪ ،ﻳﺒﺪأ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﻠﺐ إدﺧﺎل ﺗﺮﺗﻴﺐ اﻟﺤﺪ اﻟﻤﺮاد إﻳﺠﺎد ﻗﻴﻤﺘﻪ وﻓﻲ ﺣﺎل إدﺧﺎل ﻗﻴﻤﻪ 0أو1
ﻓﺈن اﻟﺪاﻟﻪ ﺗﺮﺟﻊ .n
Prog19
31
Function Overloading ﻓﺮط ﺗﺤﻤﻴﻞ اﻟﺪوال
اﻟﻤﻘﺼﻮد ﺑﺬﻟﻚ ﺗﻌﺪد اﻟﺪوال اﻟﺸﻜﻠﻲ ﺣﻴﺚ ﻳﻤﻜﻦ أن ﺗﻌﻄﻲ أآﺜﺮ ﻣﻦ داﻟﻪ اﻻﺳﻢ ﻧﻔﺴﻪ ﻣﻊ ﺗﻐﻴﻴﺮ ﻓﻲ ﻋﺪد اﻟﻮﺳﺎﺋﻂ أو
ﻧﻮﻋﻬﺎ وﻳﺮﺳﻞ اﺳﺘﺪﻋﺎء اﻟﺪاﻟﻪ ﺑﻌﺪ ﻣﻄﺎﺑﻘﺔ ﻋﺪد وﻧﻮع اﻟﻮﺳﺎﺋﻂ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻳﻤﺜﻞ ﻓﺮط ﺗﺤﻤﻴﻞ اﻟﺪاﻟﻪ ddﺣﻴﺚ ﺗﻈﻬﺮ
ﻣﺮﻩ ﺑﻮﺳﻴﻂ واﺣﺪ ﻣﻦ ﻧﻮع ،intوﻣﺮﻩ ﺑﻮﺳﻴﻂ ﻣﻦ ﻧﻮع ، doubleوﻣﺮﻩ ﺑﺪون وﺳﻴﻂ:
Prog20
32
اﻟﺒﺮﻣﺠﺔ
إﻟﻰ اﻟﺒﺮﻣﺠﺔ
ﻣﺪﺧﻞ إﻟﻰ
ﻣﺪﺧﻞ
إﻧﺸﺎء ﻣﻠﻔﺎت اﻟﺘﺮوﻳﺴﻪ اﻟﺨﺎﺻﻪ ﺑﺎﻟﻤﺒﺮﻣﺞ
آﻤﺎ ﻣﺮ ﻣﻌﻨﺎ ﺳﺎﺑﻘ ًﺎ وﺟﻮد ﻋﺪد ﻣﻦ ﻣﻠﻔﺎت اﻟﺘﺮوﻳﺴﻪ Header Filesﻓﻲ ﻣﻜﺘﺒﺔ اﻟﻠﻐﺔ اﻟﻤﻌﻴﺎرﻳﻪ وﺑﺈﻣﻜﺎن
اﻟﻤﺒﺮﻣﺞ اﻧﺸﺎء ﻣﻠﻔﺎت ﺧﺎﺻﻪ ﺑﻪ ﻋﻦ ﻃﺮﻳﻖ ﺣﻔﻆ اﻟﻤﻠﻒ ﺑﺎﻹﻣﺘﺪاد hوﻳﺘﻢ ﺿﻢ اﻟﻤﻠﻒ ﻷي ﺑﺮﻧﺎﻣﺞ ﻋﻦ
ﻃﺮﻳﻖ اﻟﺼﻴﻐﻪ"#include”file_name
ﺗﻤﺮﻳﻦ)(5
.1ﻣﺎ هﻮ ﻧﺎﺗﺞ اﻟﺘﻌﻠﻴﻤﺎت اﻟﺘﺎﻟﻴﻪ:
أcout<<strlen("I love C++ programming") .
بcout<<strrev("I love C++ programming") .
جstrcat("death to ","israil") .
دpow(4,2) .
ﻩsqrt(.36) .
وceil(2.05) .
زfloor(3.99) .
حceil(-8.2) .
طfloor(-.99) .
.2أﻋﻠﻦ ﻋﻦ اﻟﺪوال اﻟﺘﺎﻟﻴﻪ:
أ .اﻟﺪاﻟﻪ aaﻟﻬﺎ وﺳﻴﻂ واﺣﺪ ﺣﺮﻓﻲ وﻻ ﺗﺮﺟﻊ ﺷﺊ.
ب .اﻟﺪاﻟﻪ bbﻟﻬﺎ وﺳﻴﻂ ﻋﺪد ﺣﻘﻴﻘﻲ وﺗﺮﺟﻊ ﻋﺪد ﺻﺤﻴﺢ.
.3اﺳﺘﺨﺪم اﻟﺪوال اﻟﻌﻮدﻳﻪ ﻟﺤﺴﺎب ﻣﻀﺮوب اﻟﻌﺪد؟
33