Professional Documents
Culture Documents
Cplusplus
Cplusplus
اﻟﺒﻮﺻﻠﺔ اﻟﺘﻘﻨﻴﺔ
www.boosla.com
اﻟﻤﺆﻟﻒ :ﻣﺠﻼد ﻣﺸﺎري اﻟﺴﺒﻴﻌﻲ
اﻟﺒﺮﻳﺪ اﻹﻟﻜﺘﺮوﻧﻲmagedxl@hotmail.com :
ﻳﻤﻜﻨﻜﻢ ﻣﺮاﺳﻠﺘﻲ إذا ﻛﺎن ﻫﻨﺎك آي ﻣﺸﺎﻛﻞ ﻣﺘﻌﻠﻘﺔ ﺑﻌﺪم اﻟﺘﻮﺿﻴﺢ أو ﻧﺤﻮه ﻣﻤﺎ ﻳﻮﺟﺪ ﻓﻲ ﻫﺬا اﻟﻜﺘﺎب ...
ﻣﻤﻨﻮع ﻣﻨﻌﺎ ﺑﺎﺗﺎ ﻃﺒﺎﻋﺔ أو اﻗﺘﺒﺎس أي ﺟﺰء ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب ﺑﺪون أذن ﺧﻄﻲ ﻣﻦ اﻟﻤﺆﻟﻒ
* اﻟﺒﺮاﻣﺞ اﻟﻤﺬﻛﻮرة ﻓ ﻲ ﻫ ﺬا اﻟﻜﺘ ﺎب ﻣﺜ ﻞ " "visual c++" "Windowsوﻏﻴﺮﻫ ﺎ ﻋﻼﻣ ﺎت ﺗﺠﺎرﻳ ﺔ أو ﻋﻼﻣ ﺎت
ﻣﺴ ﺠﻠﺔ ﻻﺻ ﺤﺎﺑﻬﺎ ،واﻟﻤﺆﻟ ﻒ ﻳﺤﺘ ﺮم ﻫ ﺬه اﻟﻌﻼﻣ ﺎت وﻳﻘ ﺮ ﺑﻬ ﺎ ﻻﺻ ﺤﺎﺑﻬﺎ ،وﻟ ﻢ ﻳ ﺬﻛﺮﻫﺎ ﺗﺼ ﺮﻳﺤﺎ ﻓ ﻲ اﻟﻜﺘ ﺎب ﻃﻠﺒ ﺎ
ﻟﻼﺧﺘﺼﺎر.
* اﻟﻤﺆﻟ ﻒ ﻻ ﻳﻌ ﺪ ﻣﺴ ﺆوﻻ ﺑ ﺄي ﺷ ﻜﻞ ﺻ ﺮﻳﺤﺎ أو ﺿ ﻤﻨﻴﺎ ﻋ ﻦ أي ﻧﺘ ﺎﺋﺞ ﺗﺘﺮﺗ ﺐ ﻋ ﻦ اﺳ ﺘﺨﺪام اﻟﻤﻌﻠﻮﻣ ﺎت اﻟﺘ ﻲ
ﻳﺤﺘﻮﻳﻬﺎ اﻟﻜﺘﺎب أو آي ﺗﻌﺪﻳﻼت ﻳﺠﺮﻳﻬﺎ اﻟﻘﺎرئ ﻋﻠﻴﻬﺎ.
* ﺟﻤﻴﻊ اﻵراء وﻣﺎ ﻛﺘﺐ ﻓﻲ ﻫﺬا اﻟﻜﺘﺐ ﺗﻌﺒﺮ ﻋﻦ رأي اﻟﻤﺆﻟﻒ ﺷﺨﺼﻴﺎ.
* اﻟﻜﺘﺎب ﻣﺠﺎﻧﻲ % 100وﻻ ﻳﺤﻖ ﻻﺣﺪ ﺑﻴﻌﻪ أو اﺳﺘﻐﻼﻟﻪ ﺗﺠﺎرﻳﺎ.
ﻋﻨﻮان اﻟﻜﺘﺎب............................................................................أ
إﻫﺪاء.......................................................................................ب
ﻣﻘﺪﻣﺔ ....................................................................................د
اﻟﺒﺎب اﻷول
اﻷﺳﺎﺳﻴﺎت ﻣﻜﻮﻧﺎت c++وادواﺗﻬﺎ
رﻣﻮز ﻟﻐﺔ ٧......................................................................... c++
اﻟﻤﺘﻐﻴﺮات١٣................................................................................
اﻷدوات اﻟﻤﺴﺘﻌﻤﻠﺔ ﻓﻲ ﻟﻐﺔ ١٥.................................................... c++
اﻷدوات اﻟﺤﺴﺎﺑﻴﺔ ١٥......................................................................
اﻷدوات اﻷﺣﺎدﻳﺔ واﻟﺜﻨﺎﺋﻴﺔ١٧............................................................
اﻟﺰﻳﺎدة واﻟﻨﻘﺼﺎن١٧.......................................................................
أوﻟﻴﺎت اﻟﻌﻤﻠﻴﺎت ﻟﻸدوات اﻟﺤﺴﺎﺑﻴﺔ١٩..................................................
اﻷدوات اﻟﻌﻼﻗﻴﺔ واﻟﻤﻨﻘﻄﻴﺔ ٢٠..........................................................
اﻷدوات اﻟﺪﻗﻴﻘﺔ٢٢.........................................................................
أداة اﻟﻨﻔﻲ٢٣.................................................................................
أداة اﻟﺠﻤﻊ٢٤...............................................................................
أداة اﻻﺧﺘﻴﺎر٢٤............................................................................
أداة اﻻﺧﺘﻴﺎر اﻻﺳﺘﺜﻨﺎﺋﻲ٢٥...............................................................
أداة اﻹزاﺣﺔ٢٦.............................................................................
اﻷداة اﻟﺸﺮﻃﻴﺔ ٢٨.........................................................................
أداة اﻟﻌﻨﻮان٢٩..............................................................................
أداة ﺗﻌﻴﻴﻦ اﻟﻄﻮل٣٠ .......................................................................
اﻟﻔﺎﺻﻠﺔ ﻛﺄداة٣١...........................................................................
ﺟﻤﻞ اﻟﺘﻌﺮﻳﻒ٣٢..........................................................................
اﻟﺜﻮاﺑﺖ اﻟﺮﻣﺰﻳﺔ ذات اﻟﺸﺮط اﻟﻤﻌﻜﻮﺳﺔ٣٣...........................................
اﻟﻤﻼﺣﻈﺎت واﻟﺘﻌﻠﻴﻘﺎت ﻓﻲ ٣٤ ...................................................c++
اﻟﺒﺎب اﻟﺜﺎﻧﻲ
ﺗﺸﻐﻴﻞ Visual C++6.0
ﺧﻄﻮات ﺗﺸﻐﻴﻞ ﺑﺮﻧﺎﻣﺞ ٣٥.......................................... Visual C++
اﻟﺒﺎب اﻟﺜﺎﻟﺚ
أﺳﺎﻟﻴﺐ اﻹدﺧﺎل واﻹﺧﺮاج
ﻣﻘﺪﻣﺔ٤٠..................................................................................
اﻹدﺧﺎل واﻹﺧﺮاج٤١...................................................................
اﻟﺒﺎب اﻟﺮاﺑﻊ
ﺟﻤﻞ اﻟﺘﺤﻜﻢ واﻟﺸﺮط واﻟﺘﻜﺮار
ﻣﻘﺪﻣﺔ ٥٣..................................................................................
اﻟﺠﻤﻞ اﻟﺸﺮﻃﻴﺔ٥٣.......................................................................
ﺟﻤﻠﺔ اﻟﺸﺮط إذا وأﺧﻮاﺗﻬﺎ ٥٤......................................if statements
ﺟﻤﻠﺔ اﻟﺘﻮزﻳﻊ ٥٩............................................. switch statement
ﺟﻤﻠﺔ أداة اﻟﺸﺮط ؟٦٠...................................................................
اﻟﺘﻜﺮار وﺣﻠﻘﺎت اﻟﺘﻜﺮار٦١............................................................
أﺳﻠﻮب اﻟﺘﻜﺮار ﺑﺎﺳﺘﻌﻤﺎل ﺣﻠﻘﺔ ٦١............................................. For
ﺣﻠﻘﺎت اﻟﺘﻜﺮار اﻟﻤﺘﺪاﺧﻠﺔ ٦٦.......................................... for Loops
أﺳﻠﻮب اﻟﺘﻜﺮار ﺑﺎﺳﺘﻌﻤﺎل ﺣﻠﻘﺔ ٦٩................................While & Do
ﺣﻠﻘﺎت Whileاﻟﻤﺘﺪاﺧﻠﺔ٧٢...........................................................
ﺟﻤﻠﺔ اﻹﻳﻘﺎف ٧٣...............................................................Break
ﺟﻤﻠﺔ اﻻﺳﺘﻤﺮار ٧٥...................................................... continue
ﺟﻤﻠﺔ اﻟﺨﺮوج )(٧٧.............................................................. exit
ﺟﻤﻠﺔ اﻻﻧﺘﻘﺎل ٧٨................................................................ goto
اﻟﺒﺎب اﻟﺨﺎﻣﺲ
اﻟﻤﺘﻐﻴﺮات اﻟﻤﺮﻗﻤﺔ واﻟﻤﺼﻔﻮﻓﺎت
ﻣﻘﺪﻣﺔ٧٩..................................................................................
إﻋﻄﺎء ﻗﻴﻤﺔ أوﻟﻴﺔ ﻟﻠﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ٨٣..................................
ﻋﻨﻮان ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻲ اﻟﺬاﻛﺮة٨٥ ............................................
اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪﻳﻦ٨٦.............................................................
اﻟﺒﺎب اﻟﺴﺎدس
اﻟﺪوال
ﻣﻘﺪﻣﺔ٨٨.................................................................................
ﺗﻄﺒﻴﻘﺎت ﻋﻠﻰ اﻟﺪوال٩٠ ...............................................................
اﻟﺒﺎب اﻟﺴﺎﺑﻊ
ﺗﻘﻨﻴﺔ اﻷﻗﺮاص و دوال اﻟﻤﻠﻔﺎت اﻻﻧﺘﻘﺎﻟﻴﺔ
ﻣﻘﺪﻣﺔ٩٤................................................................................
داﻟﺔ ﻓﺘﺢ اﻟﻤﻠﻒ )(٩٥....................................................... fopen
داﻟﺔ اﻟﻜﺘﺎﺑﺔ داﺧﻞ اﻟﻤﻠﻒ )(٩٧............................................ fprintf
داﻟﺔ إﻏﻼق اﻟﻤﻠﻒ )(٩٨.................................................... fclose
اﻟﺪاﻟﺘﺎن )(٩٩.......................................................putw() getw
اﻟﻨﻬﺎﻳﺔ١٠١...............................................................................
وﻣﻦ اﻟﺠﺪﻳﺮ ﺑﺎﻟﺬﻛﺮ ،أن ﻟﻐ ﺔ C++ﺗﻔ ﺮق ﺑ ﻴﻦ اﻟﺤ ﺮوف اﻷﺑﺠﺪﻳ ﺔ اﻟﺼ ﻐﻴﺮة واﻟﻜﺒﻴ ﺮة ،
ﻓﻤ ﺜﻼ اﻷﺳ ﻤﺎء SYSTEM , system, System :ﺗﻌﺎﻣ ﻞ ﻛﺄﺳ ﻤﺎء ﻣﺨﺘﻠﻔ ﺔ ﻋ ﻦ
ﺑﻌﻀﻬﺎ اﻟﺒﻌﺾ ﺑﺴﺒﺐ اﺧﺘﻼف ﻣﻌﺎﻣﻠﺔ اﻟﻤﺘﺮﺟﻢ ﻟﻠﺤﺮوف اﻟﺼﻐﻴﺮة واﻟﻜﺒﻴﺮة.
ﺗﻌ ﺪ ﻟﻐ ﺔ ﺻ ﻐﻴﺮة إذ ﺗﺘﻜ ﻮنC++ أن ﻟﻐ ﺔ، وﻛﻤ ﺎ ﺗﻼﺣ ﻆ ﻣ ﻦ ﻗﺎﺋﻤ ﺔ اﻟﻜﻠﻤ ﺎت اﻟﻤﺤﺠ ﻮزة
. ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﻓﻘﻂ٥٢ ﻣﻦ ﻋﺪد ﻗﻠﻴﻞ ﻣﻦ اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة ﺗﻘﺮﻳﺒﺎ
، C++ﺣﺴ ﺐ ﻃﻮﻟﻬ ﺎ ،واﻟﺴ ﻌﺔ ﻛﻤ ﺎ ﻳﻤﻜ ﻦ ﺗﺼ ﻨﻴﻒ اﻷﻋ ﺪاد اﻟﺼ ﺤﻴﺤﺔ ﻓ ﻲ ﻟﻐ ﺔ
اﻟﺘﺨﺰﻳﻨﻴﺔ ﻟﻬﺎ ﻓﻲ اﻟﺬاﻛﺮة ﻣﺜﻼ-:
اﻟﺜﻮاﺑﺖ اﻟﺼﺤﻴﺤﺔ 40000 , 19897ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﻃﻮﻳﻠﺔ .long int
اﻟﺜﻮاﺑﺖ 45 , 80 , -16ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﻗﺼﻴﺮة .short int
اﻟﺜﻮاﺑﺖ 967 , 20000ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﺑﺪون إﺷﺎرة .unsigned int
واﻟﻔﺮق ﺑﻴﻦ اﻟﺜﻮاﺑﺖ اﻟﻄﻮﻳﻠﺔ واﻟﻘﺼ ﻴﺮة ﻫ ﻮ ﻓ ﻲ ﻋ ﺪد اﻟﻮﺣ ﺪات اﻟﺘﺨﺰﻳﻨﻴ ﺔ اﻟﻤﻄﻠﻮﺑ ﺔ ﻟﻜ ﻞ
ﻧﻮع ﻓﻲ اﻟﺬاﻛﺮة ،ﻓﺎﻟﻄﻮﻳﻠﺔ ﺗﺄﺧﺬ ﺣﻴﺰا اﻛﺒﺮ ،واﻟﻘﺼ ﻴﺮة ﺗ ﻮﻓﺮ ﻋ ﺪد اﻟﻮﺣ ﺪات اﻟﺘﺨﺰﻳﻨﻴ ﺔ
اﻟﻤﺴﺘﻌﻤﻠﺔ ،أﻣﺎ اﻟﺜﻮاﺑﺖ اﻟﺼﺤﻴﺤﺔ ﺑ ﺪون إﺷ ﺎرة ، unsigned intﻓ ﺎن اﺳ ﺘﻌﻤﺎﻟﻬﺎ ﻳ ﻮﻓﺮ
وﺣ ﺪة ﺗﺨﺰﻳﻨﻴ ﺔ واﺣ ﺪة ﺗﺴ ﺘﻌﻤﻞ ﻟﻼﺷ ﺎره ﻋﻨ ﺪﻣﺎ ﺗ ﺬﻛﺮ ﻛﻠﻤ ﺔ ، unsignedﻗﺒ ﻞ ، int
وذﻟ ﻚ ﺑﺈزاﺣ ﺔ اﻟﻘﻴﻤ ﺔ إﻟ ﻰ ﻗﻴﻤ ﺔ ﻣﻮﺟﺒ ﺔ ﺑ ﺪون إﺷ ﺎرة ،وﻟﻜ ﻞ ﻧ ﻮع ﻣ ﻦ اﻷﻧ ﻮاع اﻟﺴ ﺎﺑﻘﺔ
ﺗﻄﺒﻴﻘﺎﺗﻪ اﻟﻤﻨﺎﺳﺒﺔ.
أﻣﺜﻠﺔ ﻋﻠﻰ ﺛﻮاﺑﺖ ﻋﺪد ﺣﻘﻴﻘﻲ ﺗﺴﺘﻌﻤﻞ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺸﺮﻳﺔ ﺑﺸﻜﻞ ﺻﺤﻴﺢ -:
421.5
10.6
0.0
0
01
-68.0
وﺗﻼﺣﻆ أﻧﻨﺎ ﺳﻤﻴﻨﺎ أي ﻧﺺ ﻣﻮﺿﻮع ﺑﻴﻦ ﺣﺎﺻﺮﺗﻴﻦ ﻣ ﺰدوﺟﺘﻴﻦ ﺛﺎﺑﺘ ﺎ رﻣﺰﻳ ﺎ واﻟﺼ ﺤﻴﺢ
أن ﺗﺴﻤﻴﺘﻪ ﺛﺎﺑﺘﺎ رﻣﺰﻳﺎ ﻫﻲ ﻣﻦ ﻗﺒﻴﻞ اﻟﻤﺠﺎز واﻻﺻﻄﻼح ﻻ اﻟﺤﻘﻴﻘ ﺔ ،واﻣ ﺎ ﻛﻠﻤ ﺔ رﻣ ﺰي
:ﻓ ﻼن اﻟ ﻨﺺ ﻣﻜ ﻮن ﻣ ﻦ ﻋ ﺪد ﻣ ﻦ اﻟﺮﻣ ﻮز ،وﺗﺴ ﻤﻴﺔ ﺑﻌ ﺾ اﻟﻜﺘ ﺐ ﺑﺎﻟﺜﺎﺑ ﺖ ﻏﻴ ﺮ اﻟﻌ ﺪد
.Non-numeric
ﻣﻼﺣﻈﺔ/
ﻛﻞ اﻟﺜﻮاﺑ ﺖ اﻟﺮﻣﺰﻳ ﺔ اﻟ ﻮاردة أﻋ ﻼه ،وان اﺳ ﺘﺨﺪﻣﺖ ارﻗﺎﻣ ﺎ ﺣﺴ ﺎﺑﻴﺔ داﺧﻠﻬ ﺎ ،أﻻ أﻧ ﺎ ﻻ
ﺗﺤﻤ ﻞ أي ﻗﻴﻤ ﺔ ﺣﺴ ﺎﺑﻴﺔ ،وﻟ ﻴﺲ ﻟﻬ ﺎ ﻣﻌﻨ ﻰ ﺣﺴ ﺎﺑﻲ ،وﺗﺴ ﺘﺨﺪم ﻣﺜ ﻞ ﻫ ﺬه اﻟﺜﻮاﺑ ﺖ ﻋ ﺎدة
ﻛﻤﻌﻠﻮﻣﺎت ﺗﻮﺿﻴﺤﻴﺔ ﻣﻊ ﻧﺘﺎﺋﺞ اﻟﺒﺮﻧﺎﻣﺞ.
وﺑﻤ ﺎ أن أﻧ ﻮاع اﻟﻤﻌﻠﻮﻣ ﺎت اﻟﻤ ﺮاد ﺗﺨﺰﻳﻨﻬ ﺎ ﺗﻜ ﻮن ﻋ ﺎدة ﻣﺨﺘﻠﻔ ﺔ ﻣﺜ ﻞ اﻟﻘ ﻴﻢ اﻟﺼ ﺤﻴﺤﺔ أو
اﻟﺤﻘﻴﻘﻴﺔ أو اﻟﺮﻣﺰﻳﺔ ...اﻟــﺦ ﻓﺎﻧﻚ ﺗﺤﺘﺎج أن ﺗﻌﻠﻢ اﻟﻤﺘﺮﺟﻢ ﻓﻲ ﺑﺪاﻳ ﺔ اﻟﺒﺮﻧ ﺎﻣﺞ ﻋ ﻦ أﻧ ﻮاع
اﻟﻤﺘﻐﻴ ﺮات اﻟﺘ ﻲ ﺗﺮﻳ ﺪ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ﻓ ﻲ اﻟﺒﺮﻧ ﺎﻣﺞ ،ﻓﻤ ﺜﻼ ﻓ ﻲ اﻟﺴ ﻄﻮر اﻟﺘﺎﻟﻴ ﺔ ﺗﺒ ﻴﻦ أن
اﻟﻤﺘﻐﻴﺮﻳﻦ xو yﺣﻘﻴﻘﻴﺎن ،واﻟﻤﺘﻐﻴﺮ kﺻﺤﻴﺢ ،واﻟﻤﺘﻐﻴﺮ c,b,aرﻣﺰﻳﺔ.
;X=2.0
;Y=10.6*x
;K=100
;A=t
;B=f
;C=4
-٢ﻣﺘﻐﻴﺮات رﻣﺰﻳﺔ
وﻫﻲ ﻣﻮاﻗﻊ ﻓﻲ اﻟﺬاﻛﺮة ﺗﺨﺰن ﺑﻬﺎ رﻣﻮز.
-٣ﻣﺘﻐﻴﺮات ﻣﻨﻄﻘﻴﺔ
وﺗﺨﺰن ﺑﻬﺎ ﻗﻴﻤﺔ ﻣﻨﻄﻘﻴﺔ أﻣﺎ FALSE =0أو TRUE=1
وﻇﻴﻔﺘﻬﺎ اﻷداة
ﻟﻠﻄﺮح أو ﻛﺄﺷﺎره ﺳﺎﻟﺒﺔ -
ﻟﻠﺠﻤﻊ +
ﻟﻠﻀﺮب *
ﻟﻠﻘﺴﻤﺔ /
ﻟﺒﺎﻗﻲ اﻟﻘﺴﻤﺔ اﻟﺼﺤﻴﺤﺔ %
ﻟﻠﻨﻘﺼﺎن --
ﻟﻠﺰﻳﺎدة ++
اﻟﺠﺪول١-٣
) (Main
{
;int n = 33000
;n = n * 3
}
ﻋﻨ ﺪ ﻃﺒﺎﻋ ﺔ اﻟﻨﺘﻴﺠ ﺔ nاﻟﻨﻬﺎﺋﻴ ﺔ ﻧﺘﻮﻗ ﻊ أن ﻳﻜ ﻮن اﻟﺠ ﻮاب ، 99000أﻻ أن اﻟﺠ ﻮاب ﻓ ﻲ
ﻫ ﺬه اﻟﺤﺎﻟ ﺔ ﻟ ﻦ ﻳﺘﻌ ﺪى ، 30464وﻫ ﻮ اﻟﺤ ﺪ اﻻﻋﻠ ﻰ اﻟﻤﺴ ﻤﻮح ﺑ ﻪ ﻟﻠﻘﻴﻤ ﺔ اﻟﺼ ﺤﻴﺤﺔ ،
وﻫﻨﺎك أﻣﺮ أﺧﺮى ﻳﺘﻌﻠﻖ ﺑﺎﻟﻘﺴﻤﺔ ﻓﻌﻨﺪﻣﺎ ﻧﻘﺴﻢ 8ﻋﻠﻰ 3ﻗﺴ ﻤﺔ ﺻ ﺤﻴﺤﺔ 8/3ﻓ ﺎن اﻟﻨ ﺎﺗﺞ
ﻳﻜ ﻮن ﺻ ﺤﻴﺤﺎ وﻫ ﻮ 2ﻓﻘ ﻂ ،وإذا ﻣ ﺎ رﻏﺒ ﺖ أن ﺗﺤ ﺎﻓﻆ ﻋﻠ ﻰ اﻟﺠ ﺰء اﻟﻜﺴ ﺮي اﻟ ﺬي
أﻫﻤ ﻞ واﺳ ﻘﻂ ،ﻳﻤﻜﻨ ﻚ أن ﺗﺤ ﻮل اﻟﻘﺴ ﻤﺔ إﻟ ﻰ ﻗﺴ ﻤﺔ ﺣﻘﻴﻘ ﺔ 8.0/3.0ﺣﻴﻨﺌ ﺬ ﻓ ﺎن اﻟﻨ ﺎﺗﺞ
ﺳ ﻴﻜﻮن 2.667ﻟﻬ ﺬا اﻟﺴ ﺒﺐ أدﺧﻠ ﺖ ﻟﻐ ﺔ C++أداة ﺑ ﺎﻗﻲ ا ﻟﻘﺴ ﻤﺔ %وﻳﺴ ﻤﻰ
Modulus Operatorوﻳﺴﺘﻌﻤﻞ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ:
7%3
ﺗﻌﻄﻲ اﻟﺠﻮاب 1وﻫﻮ ﺑ ﺎﻗﻲ اﻟﻘﺴ ﻤﺔ اﻟﺼ ﺤﻴﺤﺔ ، 7/3وﻣ ﻦ اﻟﺠ ﺪﻳﺮ ﺑﺎﻟ ﺬﻛﺮ أن ﻛ ﻼ ﻣ ﻦ
ﺑﺎﺳ ﻜﺎل وﻛﻮﺑ ﻮل ﺗﺴ ﺘﻌﻤﻼن ﻣﺜ ﻞ ﻫ ﺬه اﻟﻌﻤﻠﻴ ﺔ ،ﻓﻔ ﻲ ﺑﺎﺳ ﻜﺎل ﺗﻜﺘ ﺐ ﻫ ﺬه اﻟﻌﻤﻠﻴ ﺔ ﻋﻠ ﻰ
اﻟﻨﺤ ﻮ ، 7 mod 3وﻛﻠﻤ ﺔ MODﻫ ﻲ اﺧﺘﺼ ﺎر ، Modulusأﻣ ﺎ ﻓ ﻲ ﻟﻐ ﺔ C++
ﻓﺘﺴﺘﻌﻤﻞ اﻷداة %ﻟﺘﻘﻮم ﺑﻬﺬا اﻟﻌﻤﻞ.
;++a
ﻣﻌﻨﺎه إﺿﺎﻓﺔ ﻗﻴﻤﺔ 1إﻟﻰ aوﻳﻤﻜﻦ ﻛﺘﺎﺑﺘﻬﺎ ﺑﺼﻮره ﻣﻜﺎﻓﺌﺔ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ-:
;A=a+1
;--a
أو
;a--
;A=a-1
وﻫﻮ ﻳﻜﺎﻓﺊ اﻟﺼﻮرة
ﻟﻜ ﻦ ﻫﻨ ﺎك ﻓﺮﻗ ﺎ ﻓ ﻲ ﺳ ﺮﻋﺔ اﻟﺘﻨﻔﻴ ﺬ ،ﻓ ﺎﻟﺘﻌﺒﻴﺮ ;++aأﺳ ﺮع ﻣ ﻦ اﻟﺘﻌﺒﻴ ﺮ ; a=a+1وﻫ ﺬه
ﻫﻲ اﻟﻔﺎﺋﺪة ﻣﻦ ﺟﺮاء اﺳﺘﺨﺪام ﻣﺜﻞ ﻫﺬه اﻷدوات .
وﻣﻤ ﺎ ﻳﻨﺒﻐ ﻲ اﻟﺘﻨﺒﻴ ﻪ إﻟﻴ ﻪ ﻫﻨ ﺎ أن ﻫﻨ ﺎك ﻓﺮﻗ ﺎ ﺑ ﻴﻦ a++و ، ++aﺻ ﺤﻴﺢ أن ﻛ ﻼ ﻣ ﻦ
اﻟﺘﻌﺒﻴ ﺮﻳﻦ ﻳﺠﻤ ﻊ 1إﻟ ﻰ ، aﻟﻜ ﻦ ﻋﻨ ﺪ اﺳ ﺘﻌﻤﺎل ++aﻓ ﻲ ﺗﻌﺒﻴ ﺮ ﻣ ﻦ اﻟﺘﻌ ﺎﺑﻴﺮ ،ﻓ ﺎن a
ﺗ ﺰداد ﻗﺒ ﻞ اﺳ ﺘﺨﺮاج ﻗﻴﻤ ﺔ اﻟﺘﻌﺒﻴ ﺮ ،ﺑﻴﻨﻤ ﺎ ﻓ ﻲ ﺣﺎﻟ ﺔ a++ﺗﺴ ﺘﺨﺮج ﻗﻴﻤ ﺔ اﻟﺘﻌﺒﻴ ﺮ
ﺑﺎﺳ ﺘﻌﻤﺎل ﻗﻴﻤ ﺔ aاﻟﺤﺎﻟﻴ ﺔ ﻗﺒ ﻞ زﻳﺎدﺗﻬ ﺎ ﺑﻤﻘ ﺪار ، 1وﺑﻌ ﺪ ذﻟ ﻚ ﺗ ﺘﻢ زﻳ ﺎدة aﺑﻤﻘ ﺪار 1آي
ﻣﺜﺎل:
;Int x,y,x
;X=y=x=0 أوﻟﻴﺔ ﺟﻤﻊ 1إﻟﻰ zﺗﺄﺗﻲ
;X=++y + ++z ﻣﺘﺎﺧﺮه إذ ﻳﺘﻢ ﺟﻤﻌﻬﺎ
أوﻻ إﻟﻰ x
;X=y++ + z++
;X=++y + z++
ﺟﻤﻊ 1إﻟﻰ yﻣﺆﺟﻞ ﺑﻌﺪ
إﻋﻄﺎء ﻗﻴﻤﺘﻬﺎ اﻷوﻟﻰ إﻟﻰ
;X=y-- +--z x
اﻟﺰﻳﺎدة أو اﻟﻨﻘﺼﺎن
رﻗﻢ اﻷوﻟﻮﻳﺔ اﻷداة
1 ++أو --
2 - اﻹﺷﺎرة اﻟﺴﺎﻟﺒﺔ
3 * أو /أو %
4 +أو - اﻟﻀﺮب أو اﻟﻘﺴﻤﺔ أو اﻟﺒﺎﻗﻲ
5 =
6 ++أو ) --اﻟﻤﺘﺄﺧﺮة ﺑﻌﺪ اﻟﻌﺪد(
اﻟﺠﺪول١-٤ اﻟﺠﻤﻊ أو اﻟﻄﺮح
اﻟﻤﺴﺎواة
زﻳﺎدة أو ﻧﻘﺼﺎن ﺑﻤﻘﺪار 1
ﻣﻠﺤﻮﻇﺔ:
إذا ﺗﺴ ﺎوت أوﻟﻴﺘ ﺎن ﻣﺜ ﻞ اﻟﺠﻤ ﻊ واﻟﻄ ﺮح ﻓ ﻲ ﺗﻌﺒﻴ ﺮ ،ﻓﺘﻘ ﺪم اﻟﻌﻤﻠﻴ ﺔ اﻷﻗ ﺮب إﻟ ﻰ ﻳﺴ ﺎر
اﻟﺘﻌﺒﻴ ﺮ ،وﻋﻨ ﺪ اﺳ ﺘﻌﻤﺎل اﻷﻗ ﻮاس ﻷي ﺗﻌﺒﻴ ﺮ ﻓ ﺎن اﻷﻗ ﻮاس ﺗﺄﺧ ﺬ اﻷوﻟﻮﻳ ﺔ اﻷوﻟ ﻰ ﻓ ﻲ
اﻟﺘﻨﻔﻴﺬ ﻗﺒﻞ ) اﻟﺰﻳ ﺎدة أو اﻟﻨﻘﺼ ﺎن ( ،ﻛﻤ ﺎ ﻓ ﻲ ﻟﻐ ﺎت اﻟﺒﺮﻣﺠ ﺔ اﻷﺧ ﺮى ،واﻷﻣﺜﻠ ﺔ اﻵﺗﻴ ﺔ
ﺗﺒﻴﻦ ﻣﻔﻬﻮم اﻷوﻟﻮﻳﺔ ) اﻷﺳﺒﻘﻴﺔ (-:
X+y/z*a
ﻻﺣ ﻆ أﻧﻨ ﺎ ﺑ ﺪأﻧﺎ ﺑ ﺈﺟﺮاء اﻟﻌﻠﻤﻴ ﺎت اﻟﺤﺴ ﺎﺑﻴﺔ ﻣ ﻦ اﻟﻴﺴ ﺎر إﻟ ﻰ اﻟﻴﻤ ﻴﻦ ،وﺗﻌﻄ ﻰ أﻻ وﻟﻮﻳ ﻪ
ﻷﻳﺔ ﻋﻤﻠﻴﺔ ﺣﺴﺐ ﻗﺎﻋ ﺪة اﻷوﻟﻮﻳ ﺔ ،ﻓﺠ ﺎءت اﻟﻘﺴ ﻤﺔ ،ﻓ ﻲ اﻟﻤﺜ ﺎل ﻗﺒ ﻞ اﻟﺠﻤ ﻊ ،ﻛﻤ ﺎ ﺟ ﺎء
اﻟﻀﺮب ﺑﻌﺪ اﻟﻘﺴﻤﺔ وﺗﻼ ذﻟﻚ اﻟﺠﻤﻊ ﻛﺄﺧﺮ ﻋﻤﻠﻴﺔ.
اﻷدوات اﻟﻌﻼﻗﻴﺔ
ﻣﻌﻨﺎﻫﺎ اﻷداة
اﻛﺒﺮ ﻣﻦ >
اﺻﻐﺮ ﻣﻦ <
اﻛﺒﺮ ﻣﻦ أو ﻳﺴﺎوي =>
اﺻﻐﺮ ﻣﻦ أو ﻳﺴﺎوي =<
ﻳﺴﺎوي ==
ﻻ ﻳﺴﺎوي =!
اﻟﺠﺪول١-٥
اﻷدوات اﻟﻤﻨﻄﻘﻴﺔ
ﻣﻌﻨﺎﻫﺎ اﻷداة
) Andﺣﺮف اﻟﻌﻄﻒ و( &&
) Orﺣﺮف اﻟﻌﻄﻒ أو ( ||
) Notﻟﻠﻨﻔﻲ( أداة أﺣﺎدﻳﺔ unary !
اﻟﺠﺪول١-٦
ﺳﻤﻴﺖ ﻫﺬه اﻷدوات ﺑﺎﻟﺪﻗﻴﻘﺔ أو أدوات )اﻟﺒ ﺖ( ﻷﻧﻬ ﺎ ﺗﺘﻌﺎﻣ ﻞ ﻣ ﻊ ] ) [bitوﺣ ﺪة اﻟﺘﺨ ﺰﻳﻦ
اﻷوﻟﻴﺔ( ﻣﺒﺎﺷﺮة ،ﻓﺤﺼ ﺎ ،وﺿ ﺒﻄﺎ ،وإزاﺣ ﺔ ،وﺗﺴ ﺘﻌﻤﻞ ﻫ ﺬه اﻷدوات ﻣ ﻊ اﻟﻤﻌﻄﻴ ﺎت
اﻟﺼﺤﻴﺤﺔ intواﻟﺮﻣﺰﻳﺔ charﻓﻘﻂ ،وﻻ ﺗﺴﺘﻌﻤﻞ ﻣﻊ ﻏﻴﺮﻫﺎ ﻣﻦ أﻧﻮاع اﻟﻤﻌﻄﻴﺎت..
0 0 0 1 1 0 1 0 ﻗﻴﻤﺔ x
1 1 1 0 0 1 0 1 ﻗﻴﻤﺔ ~x
وﻣﻌﻨﻰ ~ اﻟﻨﻔﻲ ) (notوﻣﻌﻨﻰ اﻟﻨﻔﻲ ﻫﻨﺎ اﻟﺘﻀﺎد ﺑ ﻴﻦ 0و 1ﻓ ﻲ اﻟﻨﻈ ﺎم اﻟﻌ ﺪدي اﻟﺜﻨ ﺎﺋﻲ
،ﻓﻌﻨﺪﻣﺎ ﺗﻨﻔﻰ 0ﺗﺜﺒﺖ ﺑ ﺪﻻ ﻣﻨ ﻪ 1واﻟﻌﻜ ﺲ ﺻ ﺤﻴﺢ ،وﻫ ﺬا ﻳﻮﺿ ﺤﻪ ﻟ ﻚ اﻟﻤﺜ ﺎل اﻟﺴ ﺎﺑﻖ
إذ ﺗﻢ )ﻧﻔﻲ( ﻗﻴﻤﺔ xﺑﺎﻟﺒﺖ ﻟﻴﺼﺒﺢ ~xﻓﻲ ﺟﻤﻴﻊ ﻣﻜﻮﻧﺎت ﻣﻦ اﻟﺒﺖ.
0 0 0 1 1 0 1 0 ﻗﻴﻤﺔ xﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ
أداة اﻻﺧﺘﻴﺎر|
إذا أردﻧﺎ اﺳﺘﻌﻤﺎل أداة اﻻﺧﺘﻴﺎر ﻣﻊ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻟﻘﻴﻤﺘﻲ Xو yﻋﻠﻰ اﻟﻨﺤﻮ ;x|y
ﺣﻴﺚ اﻻﺧﺘﻴﺎر ﺑﻴﻦ 0و 1ﻫﻮ ، 1واﻻﺧﺘﻴﺎر ﺑﻴﻦ 1و 1ﻫﻮ ، 1وﺑﻴﻦ 0و 0ﻫﻮ . 0
) T Ù T|F T Ù T|T T Ù F|Tاﻧﻈﺮ ﺟﺪاول اﻟﺼﺪق اﻟﺴﺎﺑﻘﺔ (
ﻻﺣﻆ أن اﻻﺧﺘﻴﺎر ﺑﻴﻦ 0و 0ﻧﺘﻴﺠﺘ ﻪ ، 0واﻻﺧﺘﻴ ﺎر ﺑ ﻴﻦ 1و 0ﻧﺘﻴﺠﺘ ﻪ ، 1وﺑ ﻴﻦ 1و1
ﻧﺘﻴﺠﺘ ﻪ ، 0أن أداة اﻻﺧﺘﻴ ﺎر اﻻﺳ ﺘﺜﻨﺎﺋﻲ ^ ) (XORﺗﺨﺘﻠ ﻒ ﻋ ﻦ أداة اﻻﺧﺘﻴ ﺎر )| (OR
ﻓ ﻲ أن اﻷوﻟ ﻰ ﺣﺎﻟ ﺔ ﺧﺎﺻ ﺔ ﻣ ﻦ اﻟﺜﺎﻧﻴ ﺔ إذ ﺗﻜ ﻮن ﻧﺘﻴﺠﺘﻬ ﺎ (1) trueﻋﻨ ﺪﻣﺎ ﻳﻜ ﻮن أﺣ ﺪ
ﻃﺮﻓ ﻲ اﻻﺧﺘﻴ ﺎر xأو yﻧﺘﻴﺠﺘ ﻪ ، trueوﻣ ﺎ ﻋ ﺪا ذﻟ ﻚ ﻓﻨﺘﻴﺠﺘﻬ ﺎ داﺋﻤ ﺎ ، (0) falseﻛﻤ ﺎ
ﻻﺣﻈﺖ ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ،أﻣﺎ ﻓﻲ ﺣﺎﻟﺔ اﻻﺧﺘﻴﺎر اﻟﻌﺎم ) (ORﻓﺎن ﻧﺘﻴﺠﺔ 1|1ﻫﻲ .1
ﻣﻌﻨﺎﻫ ﺎ :اﻧ ﻪ إذا ﺗﺤﻘ ﻖ اﻟﺸ ﺮط ) (b<cﻓﻴﻨﻔ ﺬ اﻟﺴ ﻄﺮ ، a=bوإﻻ ﻓ ﺎن a=cوﺑﺎﺳ ﺘﻌﻤﺎل
اﻷداة اﻟﺸ ﺮﻃﻴﺔ ؟ ﻳﻤﻜﻨﻨ ﺎ أن ﻧﻜﺘ ﺐ ﺑ ﺪﻻ ﻣ ﻦ اﻟﺠﻤﻠ ﺔ اﻟﺸ ﺮﻃﻴﺔ ﻛﻠﻬ ﺎ اﻟﺠﻤﻠ ﺔ اﻟﻤﺨﺘﺼ ﺮة
اﻟﺘﺎﻟﻴﺔ:
A=(b<c) ? b:c إذا ﺗﺤﻘﻖ اﻟﺸﺮط ﻓﺎن
A=b
A=c
إذا ﻟﻢ ﻳﺘﺤﻘﻖ اﻟﺸﺮط
ﻓﺎن
ﻓﺎﻧﻪ ﻳﻔﻬ ﻢ ﻣﻨﻬ ﺎ أن xﺗﺤ ﻮى ﻋﻨ ﻮان )ﻣﻮﻗ ﻊ( اﻟﻤﺘﻐﻴ ﺮ yﻓ ﻲ اﻟ ﺬاﻛﺮة ،وان ﻫ ﺬه اﻟﺠﻤﻠ ﺔ
ﺗﻀﻊ ﻓﻲ ﻣﺨﺰن sﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ،ﺻ ﺎﺣﺐ اﻟﻤﺨ ﺰن اﻷﺻ ﻞ ،آي ﻗﻴﻤ ﺔ yوﻫ ﻲ 10ﻛﻤ ﺎ
ﻓ ﻲ اﻟﻤﺜ ﺎل اﻟﺴ ﺎﺑﻖ ،وﺑﺎﻟﺘ ﺎﻟﻲ ﻓ ﺎن ﻗﻴﻤ ﺔ 10ﺗﺨ ﺰن ﻓ ﻲ ﻣﺨ ﺰن sﻓ ﻲ اﻟﻤﻮﻗ ﻊ )اﻟﻌﻨ ﻮان(
120ﻟ ﺬﻟﻚ ﻧ ﺮى أن ﺟﻤﻠ ﺔ x=*&yﺗﻜﺎﻓﺌﻬ ﺎ اﻟﺠﻤﻠ ﺔ x=yوﻫ ﺬا ﻳﻌﻨ ﻲ أن اﻷداﺗ ﻴﻦ
ﺗﻌﻤﻼن وﻛﺄن اﻟﻮاﺣﺪة ﻣﻌﻜﻮﺳﺔ ﻟﻸﺧﺮى
وﻣﻤ ﺎ ﻳﺠ ﺐ اﻻﻧﺘﺒ ﺎه إﻟﻴ ﻪ ،أن اﻷداة * ﺗﺴ ﺘﺨﺪم أﻳﻀ ﺎ ﻟﻌﻤﻠﻴ ﺎت اﻟﻀ ﺮب اﻟﺤﺴ ﺎﺑﻲ ﻛﻤ ﺎ
ﺗﺴ ﺘﻌﻤﻞ اﻷداة & ﻛ ﺄداة ANDدﻗﻴﻘ ﺔ ،وﻟ ﺬا ﻻ ﻳﻠﺘ ﺒﺲ ﻋﻠﻴ ﻚ اﻷﻣ ﺮ ﺑ ﻴﻦ اﻻﺳ ﺘﻌﻤﺎﻟﻴﻦ
اﻟﻤﺨﺘﻠﻔﻴﻦ.
ﺣﻴﺚ ﺳﺘﻜﻮن ﻧﺘﻴﺠ ﺔ nﻫﻨ ﺎ ﺗﺴ ﺎوي 2ﺑﺎﻳ ﺖ ،ﻫ ﻲ ﻃ ﻮل اﻟﻤﺘﻐﻴ ﺮ nاﻟﺼ ﺤﻴﺢ ) (intﻻن
ﻃﻮل اﻟﺼﺤﻴﺢ ﻋﺎدة ﻫﻮ 2ﺑﺎﻳﺖ ،وﻃﻮل اﻟﺤﻘﻴﻘﻲ 4ﺑﺎﻳﺖ ،ﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ:
;Float x
;)Z=sizeof (x
ﺣﻴ ﺚ ﻳﻌﻄ ﻰ اﻟﻤﺘﻐﻴ ﺮ bﻗﻴﻤ ﺔ 2ﻓ ﻲ اﻟﺘﻌﺒﻴ ﺮ اﻷول ) ﻳﺴ ﺎر اﻟﻔﺎﺻ ﻠﺔ( ،ﺛ ﻢ وﺿ ﻊ ﻫ ﺬه
اﻟﻘﻴﻤﺔ ﻓﻲ bاﻷﺧﺮى ﻓ ﻲ اﻟﺘﻌﺒﻴ ﺮ اﻟﺜ ﺎﻧﻲ ) ﻳﻤ ﻴﻦ اﻟﻔﺎﺻ ﻠﺔ( ،ﻓﺘﺼ ﺒﺢ ﻗﻴﻤ ﺔ اﻟﺘﻌﺒﻴ ﺮ ﻋﻠ ﻰ
اﻟﻴﻤﻴﻦ ) (b+1ﺗﺴﺎوي 3وﺗﻜﻮن ﻫﺬه اﻟﻘﻴﻤﺔ ﻧﺘﻴﺠﺔ اﻟﺘﻌﺒﻴﺮﻳﻦ اﻟﻨﻬﺎﺋﻴﺔ .
ﻣﺜﺎل آﺧﺮ:
;B=8
;)A=(b=b-4,12/b
ﻓ ﻲ ﻫ ﺬا اﻟﻤﺜ ﺎل ﻳ ﺘﻢ إﻋﻄ ﺎء bاﻟﻘﻴﻤ ﺔ 8أوﻻ ،ﺛ ﻢ ﻋﻨ ﺪ ﺗﻨﻔﻴ ﺬ اﻟﺴ ﻄﺮ اﻟﺜ ﺎﻧﻲ ،ﻳﻌﻄ ﻲ b
ﻓ ﻲ اﻟﺘﻌﺒﻴ ﺮ اﻷول داﺧ ﻞ اﻟﻘﻮﺳ ﻴﻦ اﻟﻘﻴﻤ ﺔ ) (b-4آي ) ، (8-4وﺗﺴ ﺎوي ، 4وﻫ ﺬه
ﺗﻌﻄ ﻰ ﻟﻠﺘﻌﺒﻴ ﺮ اﻷﻳﻤ ﻦ ،ﺣﻴ ﺚ ﺗ ﺘﻢ اﻟﻘﺴ ﻤﺔ ) (12/bآي ) (12/4ﻓﺘﺼ ﺒﺢ ﻧﺘﻴﺠ ﺔ اﻟﺘﻌﺒﻴ ﺮ
ﻛﻠﻪ ، 3اﻟﺘﻲ ﺗﻌﻄﻲ ﺑﺎﻟﺘﺎﻟﻲ ﻟﻠﻤﺘﻐﻴﺮ . a
ﻣﺜﺎل:
;Int a
وﺗﻘﻮم ﺑﺤﺠﺰ ﻣﻜﺎن ﻓﻲ اﻟﺬاﻛﺮة اﻟﻤﺸﺎر إﻟﻴﻪ ،ﺑﺎﻻﺳﻢ aﻟﺘﺨﺰﻳﻦ ﻗﻴﻤﺔ ﻋﺪدﻳﺔ ﺻﺤﻴﺤﺔ.
أن ﻣﻌﺮﻓ ﺔ أﻧ ﻮاع اﻟﺒﻴﺎﻧ ﺎت ،وﻛﻴﻔﻴ ﺔ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ،ﺗﻌ ﺪ ﺿ ﺮورﻳﺔ ﻟﻔﻬ ﻢ ﻟﻐ ﺔ c++
ﻓﻼﺳﺘﻌﻤﺎل اﻟﻤﺘﻐﻴﺮات ،ﻣ ﺜﻼ ،ﻧﺤﺘ ﺎج أن ﻧﻌﻠ ﻦ ﻓ ﻲ ﺑﺪاﻳ ﺔ ﻛ ﻞ ﺑﺮﻧ ﺎﻣﺞ ،أو ﺑﺪاﻳ ﺔ اﻟ ﺪوال
ﻋ ﻦ أﻧ ﻮاع ﻫ ﺬه اﻟﻤﺘﻐﻴ ﺮات ،وﻳ ﺘﻢ اﻟﺘﻌﺎﻣ ﻞ ﻣﻌﻬ ﺎ ،ﺧ ﻼل اﻟﺒﺮﻧ ﺎﻣﺞ ،ﻓ ﻲ ﺿ ﻮء أﻧ ﻮاع
ﻣﻌﻄﻴﺎﺗﻬﺎ ﻓﻤﺜﻼ اﻹﻋﻼن ﻋﻦ اﻟﺘﺎﻟﻴﺔ:
;Int a,b,x
ﺗﺨﺒ ﺮ ﻣﺘ ﺮﺟﻢ c++أن ﻳﺘﻌﺎﻣ ﻞ ﻣ ﻊ ﻫ ﺬه اﻟﻤﺘﻐﻴ ﺮات ،ﻋﻠ ﻰ أﻧﻬ ﺎ ﻣﺘﻐﻴ ﺮات ﺻ ﺤﻴﺤﺔ
وﻛﺬﻟﻚ ﺟﻤﻠﺔ اﻹﻋﻼن اﻟﺘﺎﻟﻴﺔ:
;Float m,y
وﻣ ﻦ اﻟﺠ ﺪﻳﺮ ﺑﺎﻟ ﺬﻛﺮ ،أن أﻫ ﻢ ﺗﻄﺒﻴﻘ ﺎت اﻟﻤﻌﻄﻴ ﺎت اﻟﺮﻣﺰﻳ ﺔ واﺳ ﺘﻌﻤﺎﻻﺗﻬﺎ ،ﻫ ﻮ ﻣﻌﺎﻟﺠ ﺔ
اﻟﻨﺼ ﻮص ،وﻣ ﺎ ﻳﺴ ﺘﺤﻖ اﻟﺘﺴ ﺠﻴﻞ واﻻﻫﺘﻤ ﺎم ،اﻧ ﻪ ﻳﻤﻜ ﻦ إﺟ ﺮاء ﻋﻤﻠﻴ ﺎت ﻋﻠ ﻰ
اﻟﻤﻌﻄﻴﺎت اﻟﺮﻣﺰﻳﺔ.
ﻫﻲ ﺟﻤﻠﺔ ﻣﻼﺣﻆ ﻓﻲ ﻟﻐﺔ ﺑﻴﺴﻚ ،ﺗﻘﺎﺑﻠﻬﺎ ﺟﻤﻠﺔ ﺗﻌﻠﻴﻖ اﻟﺘﺎﻟﻴﺔ ﻓﻲ ﻟﻐﺔ :C++
this is comment//
/*an example on comment in c++ language */
main()/* start your program*/
{
int x,y,z; //this line declares type of x,y,z
}
ﻧﺨﺘﺎر ﻫﻨﺎ
اﻟﺘﺴﻤﻴﺔ اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺸﺮوع
ﺑﻌ ﺪ ذﻟ ﻚ ﻧﺨﺘ ﺎر ﻣ ﻦ اﻟﻘﺎﺋﻤ ﺔ Buildﺛ ﻢ ﻧﺨﺘ ﺎر Execute .exeﻟﻴﻄﺒ ﻖ ﻟﻨ ﺎ اﻟﻤﺸ ﺮوع ..
أو ﺑﺎﻟﻨﻘﺮ ﻣﻦ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ ﻋﻠﻰ اﻟﺰر . F5
ﻃﺒﻌﺎ أﻋﺰاﺋ ﻲ ﻫ ﺬا اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﺼ ﻐﻴﺮ ﻫ ﻮ ﺑﺮﻧ ﺎﻣﺞ ﺗﻼﺣﻈ ﻮن أن اﻟﻜ ﻮد ﺗﺒﻌ ﻪ ﺧ ﺎص ﺑﻠﻐ ﺔ
Cاﻻم وﻟ ﻴﺲ c++ﻟﻜ ﻦ ﻣ ﺎ ﻧﻌﻤ ﻞ ﻋﻠﻴ ﻪ ﻫ ﻮ ﻣﺘ ﺮﺟﻢ ﻳﻘﺒ ﻞ اﻟﻠﻐﺘ ﻴﻦ ﻣﻌ ﺎ واﻟﻤﺘ ﺮﺟﻢ ﻫ ﻮ
، Visual C++وﻧﻼﺣ ﻆ اﻧ ﻪ ﺗ ﻢ ﻃﺒﺎﻋ ﺔ ﻋﺒ ﺎرة ! Hello Worldوﻫ ﻲ ﻧﺘﻴﺠ ﺔ ﺗﻨﻔﻴ ﺬ
اﻟﺪاﻟﺔ )( printfاﻟﻤﻮﺟﻮدة ﻓﻲ ﺳﻄﻮر اﻟﺒﺮﻧﺎﻣﺞ.
ﻣﻘﺪﻣﺔ introduction
ﻳﺘﻨﺎول ﻫﺬا اﻟﺠﺰء أﺳﺎﻟﻴﺐ إدﺧﺎل اﻟﻘﻴﻢ اﻟﺤﺴﺎﺑﻴﺔ واﻟﺮﻣﺰﻳﺔ ،وأﺳﺎﻟﻴﺐ إﺧﺮاج وﻃﺒﺎﻋﺔ
ﻧﺘﺎﺋﺞ اﻟﺒﺮاﻣﺞ واﻟﺘﻌﺎﺑﻴﺮ اﻟﺤﺴﺎﺑﻴﺔ واﻟﺮﻣﺰﻳﺔ ،وﻃﺒﺎﻋﺔ اﻟﻤﻌﻄﻴﺎت اﻟﻤﺨﺘﻠﻔﺔ ﺣﺴﺐ
اﻟﺤﺎﺟﺔ.
ﻟﻘﺪ ﺗﻌﻮدﻧﺎ ﻓﻲ ﻟﻐﺔ ﺑﻴﺴ ﻚ ،أن ﻧﺴ ﺘﻌﻤﻞ دوال ﻣﺒﻨﻴ ﺔ وﺟ ﺎﻫﺰة ﻋﻨ ﺪ اﻟﻄﻠ ﺐ ﻟﻠﻘﻴ ﺎم ﺑﺎﻹدﺧ ﺎل
ﻣﺜ ﻞ ) inputأو (readأو ﺑ ﺎﻹﺧﺮاج ﻣﺜ ﻞ ) ، (printوﻓ ﻲ ﻫ ﺬا اﻟﺼ ﺪد ،ﻓ ﺎن ﻟﻐ ﺔ
، C++ﺗﺘﻌﺎﻣ ﻞ ﻣ ﻊ اﻹدﺧ ﺎل واﻹﺧ ﺮاج ،ﺑﻄﺮﻳﻘ ﺔ ﻣﺨﺘﻠﻔ ﺔ ،ﺣﻴ ﺚ ﺗ ﻮﻓﺮ اﻟﻠﻐ ﺔ ،ﻋ ﺪدا
ﻛﺒﻴﺮا ﻣﻦ دوال اﻹﺧﺮاج واﻹدﺧﺎل ،ﺣﻴﺚ ﻳﻤﻜ ﻦ ﻟﻠﻤﺒ ﺮﻣﺞ أن ﻳﺴ ﺘﺪﻋﻴﻬﺎ ،وﻳﺴ ﺘﻔﻴﺪ ﻣﻨﻬ ﺎ
،ﺣﺴﺐ ﻧﻮع اﻟﻤﻌﻄﻴﺎت واﻟﻤﺘﻐﻴﺮات ،ﻛﻴﻔﻤﺎ ﻳﻨﺎﺳﺒﻪ ،وﺳ ﻮف ﻧ ﻮرد أن ﺷ ﺎء اﷲ ﻓ ﻲ ﻫ ﺬا
اﻟﻔﺼﻞ أﻫﻢ ﻫﺬه اﻟﺪوال واﺷﻬﺮﻫﺎ ﻟـ . C++
اﻟﻤﻠﻒ Iostream.hﻳﻌﻨﻲ:
: ioﻣﺨﺘﺼﺮ ﻟـ input/outputآي اﻹدﺧﺎل واﻹﺧﺮاج.
: Streamﻣﻜﺘﺒﺔ ﻗﻴﺎﺳﻴﺔ ﺧﺎﺻﺔ ﺑﺎﻹﺧﺮاج واﻹدﺧﺎل اﻟــﺦ..
header file : Hآي اﻟﻤﻠﻒ اﻟﺪﻟﻴﻞ.
ﻣﺜﺎل:١
إذا أردت ﻃﺒﺎﻋﺔ اﻟﻌﺪد 100ﻓﻲ ﻟﻐﺔ ﺑﻴﺴﻚ ﻓﺎﻟﺠﻤﻠﺔ:
Print 100
ﺗﺆدي ﻋﻤﻠﻴﺔ اﻟﻄﺒﺎﻋﺔ ،أﻣﺎ ﻓﻲ ﻟﻐﺔ C++ﻓﺎن اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻌﻤﻞ ذﻟﻚ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;cout<<100
;return0
}
ﺑﺪﻻendl وﻗﺪ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﺪاﻟﺔ، \ إﻳﻌﺎز ﻟﻼﻧﺘﻘﺎل إﻟﻰ ﺳﻄﺮ ﺟﺪﻳﺪn ﺑﻌﺒﺎرة أﺧﺮى
:\ وﻛﻤﺎ ﻳﻠﻲn ﻣﻦ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
cout<<“ smoking is dangerous”<<endl;
return0;
}
:٥ﻣﺜﺎل
:10.5 اﻟﺘﺎﻟﻲ ﻳﻄﺒﻊ اﻟﻘﻴﻤﺔ اﻟﺤﻘﻴﻘﺔ، C++ ﺑﺮﻧﺎﻣﺞ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
cout<<10.5;
return0;
}
:٧ﻣﺜﺎل
:اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﻳﻘﻮم ﺑﻄﺒﺎﻋﺔ ﻗﻴﻤﺔ ﻣﺘﻐﻴﺮ ﺣﻘﻴﻘﻲ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
float x;
x=4.25
cout<<x;
return0;
}
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int a=100
float x=4.25
;cout<<a<<x
;return0
}
وﺳﺘﻈﻬﺮ ﻧﺘﺎﺋﺞ ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻛﻤﺎ ﻃﻠﺒﻨﺎ )اﻟﺼﺤﻴﺢ ﻳﺴﺒﻖ اﻟﺤﻘﻴﻘﻲ( ،ﻫﻜﺬا:
100 4.25
ﻣﺜﺎل:١٠
ﻣﺎذا إذا أردﻧﺎ ﻃﺒﺎﻋﺔ ﻋﺪد ﺻﺤﻴﺢ وﺣﻘﻴﻘﻲ ﻣﻊ ﻧﺼﻮص ﺑﻨﻔﺲ اﻟﻮﻗﺖ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int=100
float x=4.25
;cout<<“a=”<<a<<“x=”<<x
;return0
}
وﻧﺸﺎﻫﺪ أﻧﻬﺎ ﻋﻜﺲ ﻋﻤﻠﻴﺔ اﻹﺧﺮاج ﺣﻴﺚ اﻹﺧﺮاج << أﻣﺎ اﻹدﺧﺎل >> .
وﺗﺴ ﺘﺨﺪم ﻫ ﺬه اﻟﺠﻤﻠ ﺔ ﻹدﺧ ﺎل ﻗ ﻴﻢ ﻋﺒ ﺮ ﻟﻮﺣ ﺔ اﻟﻤﻔ ﺎﺗﻴﺢ ﻟﻠﻤﺘﻐﻴ ﺮات ﻓ ﻲ اﻟ ﺬاﻛﺮة ،وﻳ ﺘﻢ
ﺗﻌﻴﻴﻦ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ﻓﻲ اﻟﺬاﻛﺮة ﺑﺎﺳﺘﺨﺪام ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ .
ﻣﻼﺣﻈﺔ/
ﻻ ﻳﺠﻮز أن ﻧﺴﺘﺨﺪم اﻟﻤﺘﻐﻴﺮ ﻗﺒﻞ ﺗﻌﺮﻳﻔﺔ.
ﻣﺜﺎل ﺻﺤﻴﺢ:
;Int x
;Cin>>x
ﻣﺜﺎل ﺧﺎﻃﺊ:
;Cin>>x
ﻣﺜﺎل:١٢
ﺳﻮف ﻧﻘﻮم ﺑﺈدﺧﺎل ﻋﺪد ﺻﺤﻴﺢ ﻓﻲ ﻫﺬا اﻟﺘﻄﺒﻴﻖ ﺛﻢ ﻧﻘﻮم ﺑﻄﺒﺎﻋﺘﻪ ﻛﺎﻟﺘﺎﻟﻲ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int=a
;cin>>a
;cout<<a
;return0
}
ﻧﻼﺣﻆ ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل أﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺘﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ aﺑﺄﻧ ﻪ ﻋ ﺪد ﺻ ﺤﻴﺢ ﺑﻌ ﺪ ذﻟ ﻚ ﻋﻨ ﺪ ﺗﻨﻔﻴ ﺬ
اﻟﺒﺮﻧ ﺎﻣﺞ ﺳ ﻴﻄﻠﺐ ﻣﻨ ﺎ إدﺧ ﺎل ﻋ ﺪد ﺳ ﻨﺪﺧﻞ اﻟﻌ ﺪد 10ﻣ ﺜﻼ ﻋﻨ ﺪ ذﻟ ﻚ ﺳ ﻴﻜﻮن اﻟﻨ ﺎﺗﺞ
ﻛﺎﻟﺘﺎﻟﻲ:
10
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int a ﻋﻨﺪ ﻃﻠﺐ إدﺧﺎل ﻗﻴﻤﺔ ﻧﺪﺧﻞ
;cin>>a اﻟﺮﻗﻢ 7ﺣﺴﺐ ﻃﻠﺐ اﻟﺴﺆال..
;cout<<a*1
;cout<<a*2
;cout<<a*3
;cout<<a*4
;cout<<a*5
;cout<<a*6
;cout<<a*7
;cout<<a*8
;cout<<a*9
;cout<<a*10
;return0
}
ﻣﺜﺎل:١٥
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹدﺧﺎل ﺛﻼث ﻋﻼﻣﺎت ﻟﻄﺎﻟﺐ 40 25 30وﻃﺒﺎﻋﺔ ﻣﻌﺪل اﻟﻌﻼﻣﺎت؟
”#include “ stdafx.h
”#include “ iostream.h
)( main ﻧﺪﺧﻞ ﺣﺴﺐ اﻟﻤﻄﻠﻮب 40 25
{ 30
;int a,b,c
;cin>>a>>b>>c
;cout<<(a+b+c)/3
;return0
}
#include “ stdafx.h”
#include “ iostream.h” 10 ﻟﺘﻜﻦ
main ()
{
6.3 ﻟﺘﻜﻦ
int a;
float x;
double z; 2001.5 ﻟﺘﻜﻦ
cin>>a>>x>>z; // input all data
cout<<endl;
cout<<“\n print the following items”;
cout<<endl;
cout<<a<<“\n”<<x<<“\n”<<z; // output all data
cout<<“\n this is the end”<<endl;
return0;
}
ﻧﻼﺣﻆ ﻓﻲ اﻟﺴﺆال أﻋﻼه أﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺈدﺧﺎل ﺛﻼث ﻗﻴﻢ ﻣﺨﺘﻠﻔﺔ ﻣ ﻦ ﺣﻴ ﺚ اﻟﻨ ﻮع وأﻳﻀ ﺎ ﻗﻤ ﻦ
:ﺑﺎﺳﺘﺨﺪام اﻟﺘﻌﻠﻴﻘﺎت وﻫﻲ ﻻ ﺗﺆﺛﺮ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻘﻂ ﻟﻠﺘﻮﺿﻴﺢ وﻫﻲ اﻟﺘﻌﻠﻴﻖ
// input all data
// output all data
.. ﻟﻨﻮﺿﺢ ﻟﻠﻤﺴﺘﺨﺪم أﻳﻦ اﻹدﺧﺎل واﻹﺧﺮاج
ﻣﻘﺪﻣﺔ introduction
ﻗﺪ ﻧﺤﺘﺎج أن ﻧﻨﺘﻘﻞ ﻣ ﻦ ﺳ ﻄﺮ إﻟ ﻰ آﺧ ﺮ ﻓ ﻲ ﺑﺮﻧ ﺎﻣﺞ ، C++وﻗ ﺪ ﻧﺤﺘ ﺎج أن ﻧﻘ ﻮم ﺑﺘﻨﻔﻴ ﺬ
ﺑﻌ ﺾ اﻟﺠﻤ ﻞ ﻋﻨ ﺪ ﺗﺤﻘ ﻖ ﺑﻌ ﺾ اﻟﺸ ﺮوط ،وﻗ ﺪ ﻧﺤﺘ ﺎج أن ﻧﻜ ﺮر ﻋﻤﻠﻴ ﺔ ﻣ ﻦ ﻋﻤﻠﻴ ﺎت
اﻹدﺧ ﺎل أو اﻹﺧ ﺮاج أو اﻟﺤﺴ ﺎب ﻋ ﺪدا ﻣ ﻦ اﻟﻤ ﺮات ،وﻗ ﺪ ﻧﺤﺘ ﺎج أن ﻧﺒﻨ ﻲ ﺷ ﺒﻜﺔ ﻣ ﻦ
ﺗﻮزﻳ ﻊ اﻷواﻣ ﺮ ﻋﻠ ﻰ ﻋ ﺪد ﻣ ﻦ ﺳ ﻄﻮر اﻟﺒﺮﻧ ﺎﻣﺞ ،ﺣﺴ ﺐ ﻣﻘﺘﻀ ﻴﺎت ﺑﻌ ﺾ اﻷﺣ ﻮال ،
وﺣﺴﺒﻤﺎ ﺗﻘﺘﻀ ﻴﻪ ﻃﺒﻴﻌ ﺔ اﻟﻤﺴ ﺄﻟﺔ ،ﻓ ﻲ ﻫ ﺬه اﻟﺤ ﺎﻻت :ﻧﺤﺘ ﺎج أن ﻧ ﺘﻌﻠﻢ أﺳ ﺎﻟﻴﺐ اﻟﺸ ﺮط ،
وأﺳﺎﻟﻴﺐ اﻟﺘﻜ ﺮار ،وﻛﻴﻔﻴ ﺔ اﻟ ﺘﺤﻜﻢ ﻓ ﻲ ﻣﺴ ﺎر اﻟﺒﺮﻧ ﺎﻣﺞ ،وﺗﻌ ﺪ أﺳ ﺎﻟﻴﺐ اﻟﺸ ﺮط واﻟ ﺘﺤﻜﻢ
واﻟﺘﻜﺮار ﺑﻤﺜﺎﺑﺔ اﻟﻘﻠﺐ ﻓﻲ ﺟﺴﻢ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ،وﺑﺪوﻧﻬﺎ ﻻ ﻳﻤﻜﻦ ﺗﻨﻈﻴﻢ آي ﺑﺮﻧﺎﻣﺞ.
وﺗﻮﻓﺮ ﻟﻐﺔ C++ﻟﻠﻤﺒ ﺮﻣﺞ ﻋ ﺪدا ﻣ ﻦ اﻷﺳ ﺎﻟﻴﺐ واﻟ ﺪوال اﻟﻔﻌﺎﻟ ﺔ ،اﻟﻤﺘﻌﻠﻘ ﺔ ﺑﻬ ﺬا اﻟﺸ ﺄن ،
وﺗﻤﺘ ﺎز ﻫ ﺬه اﻷﺳ ﺎﻟﻴﺐ ﺑﺄﻧﻬ ﺎ أﺳ ﺎﻟﻴﺐ ﺑﻨﺎﺋﻴ ﺔ أو ﺑﻨﻴﻮﻳ ﺔ structuredآي ﻳﻤﻜ ﻦ ﺗﻨﻈ ﻴﻢ
ﻋﻤﻠﻴ ﺎت اﻟ ﺘﺤﻜﻢ واﻟﺘﻜ ﺮار ﻓﻴﻬ ﺎ ،ﺑﺄﺳ ﻠﻮب ذاﺗ ﻲ ﻣ ﻦ ﺑﺪاﻳ ﺔ اﻟﻌﻤﻠﻴ ﺎت وﺣﺘ ﻰ ﻧﻬﺎﻳﺘﻬ ﺎ دون
ﺗ ﺪﺧﻞ ﻣ ﻦ اﻟﻤﺒ ﺮﻣﺞ أﺛﻨ ﺎء ﻫ ﺬه ا ﻟﻌﻤﻠﻴ ﺎت ،ﻟﻸﺷ ﺮاف ﻋﻠ ﻰ اﻟﺘﻮﺟﻴ ﻪ واﻟﺘﺨﻄ ﻴﻂ ﻟﻜ ﻞ
ﺧﻄﻮه ﻣﻦ ﺧﻄﻮات اﻟﺒﺮﻧ ﺎﻣﺞ ،وﻳﻌ ﺮف ﺑﻌ ﺾ اﻟﺨﺒ ﺮاء واﻟﻤﺨﺘﺼ ﻴﻦ اﻟﺒﺮﻣﺠ ﺔ اﻟﺒﻨﻴﻮﻳ ﺔ:
أﻧﻬﺎ اﻟﺒﺮﻣﺠﺔ اﻟﺘﻲ ﻻ ﺗﺴﺘﻌﻤﻞ ﺟﻤﻠﺔ اﻻﻧﺘﻘﺎل ، GOTOﻟﺘﻮﺟﻴ ﻪ اﻟﺒﺮﻧ ﺎﻣﺞ ﻓ ﻲ ﻛ ﻞ ﺧﻄ ﻮة
،وﻣ ﻊ ذﻟ ﻚ ﻓ ﺎن ﻟﻐ ﺔ ، C++ﺗ ﻮﻓﺮ ﺟﻤﻠ ﺔ اﻻﻧﺘﻘ ﺎل ﻫ ﺬه ،ﻟﻜﻨﻬ ﺎ ﻻ ﺗﺴ ﺘﻌﻤﻞ إﻻ
ﻟﻠﻀﺮورة.
وﺣﻴ ﺚ أن ﺟ ﻮاب اﻟﺸ ﺮط أﻣ ﺎ أن ﻳﻜ ﻮن ﺻ ﻮاﺑﺎ trueأو زاﺋﻔ ﺎ falseﻓ ﺎن ﻟﻐ ﺔ ، C++
ﺗﻌﻄ ﻲ اﻟﺤﺎﻟ ﺔ اﻟﺼ ﺎﺋﺒﺔ ﻗﻴﻤ ﺔ ﻋﺪدﻳ ﺔ ﺗﺨﺘﻠ ﻒ ﻋ ﻦ اﻟﺼ ﻔﺮ ،وﺗﻌﻄ ﻲ ﻗﻴﻤ ﺔ ﺻ ﻔﺮ ﻟﻠﺤﺎﻟ ﺔ
اﻟﺰاﺋﻔﺔ ) ﻋﻨﺪ ﻋﺪم ﺗﺤﻘﻖ اﻟﺸﺮط أو اﻟﺸ ﺮوط ( وﻟ ﺬا ﻓ ﺎن ﻟﻐ ﺔ C++ﺗ ﻮﻓﺮ ﻣﺮوﻧ ﺔ ﻛﺒﻴ ﺮة
ﻓﻲ اﺳﺘﺨﺪام ﻋﺪد ﻛﺒﻴﺮ ﻣﻦ اﻟﺪوال ،وﻓﻲ ﺗﻮﺟﻴﻪ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺮﻳﻘﺔ ﻓﻌﺎﻟﺔ وﻓﺎﺋﻘﺔ.
وﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﺳﺘﻨﻔﺬ اﻟﺠﻤﻠﺔ statement1أن ﺗﺤﻘﻖ اﻟﺸﺮط conditionوإﻻ ﻓﺎن
اﻟﺘﻨﻔﻴﺬ ﻳﻨﺘﻘﻞ إﻟﻰ ﺳﻄﺮ C++اﻟﺘﺎﻟﻲ ﻟﺠﻤﻠﺔ . if
اﻟﺼﻴﻐﺔ اﻷوﻟﻰ
”#include “ stdafx.h
”#include “ iostream.h
)( main ﺗﻌﺮﻳﻒ اﻟﺪرﺟﺔ
{
;int mark
;char grade ﺗﻌﺮﻳﻒ اﻟﺘﻘﺪﻳﺮ
;cin>>mark
)if (mark>=90
;'grade='a
else ﺳﻨﺪﺧﻞ ﻣﺜﻼ
)if (mark>=80 اﻟﺪرﺟﺔ 85
;'grade='b
else
)if (mark>=70
;'grade='c
else
)if (mark>=60
;'grade='d
else
)if (mark>=50
;'grade='e
else
;'grade='f
;cout<<grade
;return0
}
If (condition)
{
statmenet1;
}
else
{
statmenet1;
}
:٤ﻣﺜﺎل
:( أﻋﻼه ﻛﻤﺎ ﻳﻠﻲif..else) ( ﻟﻜﻦ ﺑﺎﻟﺸﻜﻞ3) ﺳﻮف ﻧﻄﺒﻖ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ
#include “ stdafx.h”
0
#include “ iostream.h”
main ()
{
int mark;
char grade;
cin>>mark; إذا اﻷوﻟﻰ وﺟﻮاﺑﻬﺎ
if ( mark>=90){
grade='A';
{
إذا اﻟﺜﺎﻧﻴﺔ وﺟﻮاﺑﻬﺎ
else
if (mark>=80){
grade='B';
{
إذا اﻟﺜﺎﻟﺜﺔ وﺟﻮاﺑﻬﺎ
else
if (mark>=70){
grade='C';
{
else إذا اﻟﺮاﺑﻌﺔ وﺟﻮاﺑﻬﺎ
if (mark>=60){
grade='D';
{
else
if (mark>=50){ وإﻻ ﻓﺎﻟﻨﺘﻴﺠﺔ اﻟﺒﺎﻗﻴﺔ
grade='E'; ﻫﻲ اﻟﺨﺎﻣﺴﺔ
}
cout<<grade;
return0; ﻟﻄﺒﺎﻋﺔ اﻟﺘﻘﺪﻳﺮ
} :٥ﻣﺜﺎل
:٦ﻣﺜﺎل
#include “ stdafx.h”
#include “ iostream.h”
void main()
{
int s1;
s1=2;
switch (s1)
{
case 2 :cout<<"y";
break;
case 3: cout<<"x";
break;
case 4: cout<<"m";
break;
default: cout<<"w";
}
}
:واﻟﻨﺘﻴﺠﺔ
y
وﻣﻌﻨﺎﻫ ﺎ :اﻧ ﻪ ﻳ ﺘﻢ ﺗﻨﻔﻴ ﺬ اﻟﻨﺘﻴﺠ ﺔ اﻷوﻟ ﻰ result1ﻋﻨ ﺪﻣﺎ ﻳﻜ ﻮن ﺟ ﻮاب اﻟﺸ ﺮط
conditionﻣﺘﺤﻘﻘ ﺎ ) ، (trueوإﻻ ﻓﻴ ﺘﻢ ﺗﻨﻔﻴ ﺬ اﻟﻨﺘﻴﺠ ﺔ اﻟﺜﺎﻧﻴ ﺔ result2ﻋﻨ ﺪﻣﺎ ﻳﻜ ﻮن
ﺟﻮاب اﻟﺸﺮط ). (false
ﻣﺜﺎل:٧
”#include “ stdafx.h
”#include “ iostream.h
)(void main
{
;int a,b
;a=5
;if (a>1) b=10
else
;b=20
;cout<<b
}
وﻣﻌﻨﺎﻫﺎ أن bﺗﺄﺧ ﺬ اﻟﻘﻴﻤ ﺔ 10إذا ﺗﺤﻘ ﻖ اﻟﺸ ﺮط a>1وﺗﺄﺧ ﺬ اﻟﻘﻴﻤ ﺔ 20إذا ﻟ ﻢ ﻳﺘﺤﻘ ﻖ
اﻟﺸﺮط ﻧﻔﺴﻪ .
واﻟﻨﺘﻴﺠﺔ:
10
ﺗﻘﻮم ﺟﻤﻠﺔ Forﻫﻨﺎ ﻣﺒﺘﺪﺋﺔ ﺑﻘﻴﻤ ﺔ اﻟﻌ ﺪاد اﻻﺑﺘﺪاﺋﻴ ﺔ ﺑﺘﻨﻔﻴ ﺬ اﻟﺠﻤﻠ ﺔ statement1أول ﻣ ﺮة
،وﻓ ﻲ اﻟﻤ ﺮة اﻟﺘﺎﻟﻴ ﺔ ﺗ ﺰداد اﻟﻘﻴﻤ ﺔ اﻻﺑﺘﺪاﺋﻴ ﺔ ﻟﻠﻌ ﺪاد ﺑﻤﻘ ﺪار اﻟﺰﻳ ﺎدة ﺛ ﻢ ﺗﻨﻔ ﺬ ﺟﻤﻠ ﺔ
statement1ﻣﺮة ﺛﺎﻧﻴﺔ ..وﻫﻜﺬا ﺣﺘﻰ ﻳﺴ ﺘﻜﻤﻞ اﻟﺸ ﺮطconditionأﻣ ﺮ إﻧﻬ ﺎء ﻋﻤﻠﻴ ﺎت
اﻟﺘﻜ ﺮار واﻟﺨ ﺮوج ﻣ ﻦ ﺣﻠﻘ ﺔ ، Forواﻷﻣﺜﻠ ﺔ اﻟﺘﺎﻟﻴ ﺔ ﺗﻮﺿ ﺢ ﻛﻴﻔﻴ ﺔ اﺳ ﺘﻌﻤﺎل ﺣﻠﻘ ﺎت
اﻟﺘﻜﺮار ﺑﺠﻤﻠﺔ :For
ﻣﺜﺎل:٨
”#include “ stdafx.h
”#include “ iostream.h
)( main اﻟﻘﻴﻤﺔ اﻟﺘﻨﺎزﻟﻴﺔ
{ ﻟﻠﻌﺪاد
;char x
)for (x=1;x<=10;x=x+1 اﻟﺰﻳﺎدة ﺑﻤﻘﺪار 1
;”cout<<“Islam
;cout<<endl
;return0 اﻟﺘﻜﺮار إﻟﻰ
10
}
واﻟﻨﺘﻴﺠﺔ ﻛﺎﻟﺘﺎﻟﻲ:
:٩ﻣﺜﺎل
؟10 إﻟﻰ1 اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻟﻄﺒﺎﻋﺔ ﻗﻴﻤﺔ اﻟﻌﺪاد ﻣﻦ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
int a;
for (a=1;a<=10;++a)
cout<<a<<endl;
return0;
}
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
int a;
for (a=1;a<=15;a=a+2)
cout<<a<<endl;
return0;
}
ﻻﻧ ﻪ ﻃﻠ ﺐ أﻋ ﺪاد ﻓﺮدﻳ ﺔ ﺑﺪاﻳ ﺔ ﺑﺎﻟﻘﻴﻤ ﺔ1 وﻟ ﻴﺲ2 وﻣﻦ اﻟﻤﻼﺣﻆ أﻧﻨﺎ ﺟﻌﻠﻨﺎ ﻗﻴﻤ ﺔ اﻟﺰﻳ ﺎدة
15 وﺣﺘﻰ1
:واﻟﻨﺘﻴﺠﺔ ﻛﺎﻟﺘﺎﻟﻲ
1
3
5
7
9
11
13
15
:١١ﻣﺜﺎل
#include “ stdafx.h”
#include “ iostream.h”
main ()
{ int x,y,z;
y=-4;
for(x=1;x>y;x=x-2)
}
z=x; اﻛﺜﺮ ﻣﻦ ﺟﻤﻠﺔ ﺑﻴﻦ
cout<<x<<endl; Block اﻟﻘﻄﻌﺘﻴﻦ
{
return0;
}
14*
:١٣ﻣﺜﺎل
#include “ stdafx.h”
#include “ iostream.h”
main ()
{ int a,c;
a=1;
c=3;
for (a=c;c;) ﺗﻨﻘﺺ ﻣﻦ ﻗﻴﻤﺔ
{ 1 ﻗﻴﻤﺔC
c--;
cout<<c<<endl;
}
return0;
}
:واﻟﻨﺎﺗﺞ
2
1
0
ﻓﻠﻮ أﺧﺬﻧﺎ ﺣﺎﻟﺔ ﺣﻠﻘﺘﻴﻦ ﻣﺘﺪاﺧﻠﺘﻴﻦ ﻓﺎﻧﻬﻤﺎ ﺗﻜﺘﺒﺎن ﻋﻠﻰ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ:
)For(...
)For (...
;Statements
وﺗﻜﻮن ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ اﻟﺠﻤﻠﺔ )أو اﻟﺠﻤﻞ( ﺟﺰءا ﻣﻜﺮرا ﻣﺮﺗﺒﻄﺎ ﺑﺎﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﻴﺔ ،
واﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ ﺗﺘﻜﺮر ﺣﺴﺐ أواﻣﺮ اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ وﻫﻜﺬا ...
اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ
اﻟﺤﻠﻘﺔ
اﻟﻮﺳﻄﻲ
اﻟﺤﻠﻘﺔ
اﻟﺪاﺧﻠﻴﺔ
ﻣﺜﺎل:١٤
”#include “ stdafx.h
”#include “ iostream.h
)( main
اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ ﺗﺘﻜﺮر
{ 3ﻣﺮات
;int i,j
)for (i=1;i<=3;++i
)for (j=1;j<=4;++j
;cout<<i*j
;return0 اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﻴﺔ ﺗﺘﻜﺮر 4
} ﻣﺮات ﻟﻜﻞ ﻗﻴﻤﺔ ﻣﻦ ﻗﻴﻢ Iأي
ﻣﺠﻤﻮع 12ﻣﺮة
ﻻﺣ ﻆ ﻫﻨ ﺎ أن اﻟﺤﻠﻘ ﺔ اﻟﺪاﺧﻠﻴ ﺔ ﺗﺘﻜ ﺮر ٤ﻣ ﺮات ﻟﻜ ﻞ ﻗﻴﻤ ﺔ ﻣ ﻦ ﻗ ﻴﻢ ، Iﻋ ﺪاد اﻟﺤﻠﻘ ﺔ
اﻟﺨﺎرﺟﻴ ﺔ ،وﻛ ﺬﻟﻚ ﺟﻤﻠ ﺔ << ، coutوﺑﻤ ﺎ أن ، Iﺗﺄﺧ ﺬ 3ﻗ ﻴﻢ ﻓ ﺎن اﻟﺤﻠﻘ ﺔ اﻟﺪاﺧﻠﻴ ﺔ
ﺗﺘﻜﺮر 12ﻣﺮة ،أﻣﺎ اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ ﻓﺘﻜﺮر ﻧﻔﺴﻬﺎ ﺑﻨﻔﺴﻬﺎ ﻓﺘﺘﻜﺮ 12ﻣﺮة ﻓﻘﻂ.
واﻟﻨﺎﺗﺞ:
1234246836912
واﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن ﻛﺒﻴﺮ ﻟﺬﻟﻚ ﺳﺄﻋﻄﻴﻜﻢ ﺟﻮاب اﻟﺤﻞ ﻟﻠﺴﻄﺮ اﻷول واﻟﺴﻄﺮ اﻷﺧﻴﺮ وﻣﺎ
ﺑﻴﻨﻬﻤﺎ ﻟﻜﻢ.
اﻟﺴﻄﺮ اﻷول1612 :
اﻟﺴﻄﺮ اﻷﺧﻴﺮ 203 :
ﻣﺜﺎل:١٦
”#include “ stdafx.h
”#include “ iostream.h
)( main
;{ int a
;a=1
)while (a<3 ﻃﺎﻟﻤﺎ اﻟﺸﺮط
;cout<<a++
;return0
} اﻟﺰﻳﺎدة ﺑﻤﻘﺪار 1
ﺑﻌﺪ ﻃﺒﺎﻋﺔ
اﻟﻨﺘﻴﺠﺔ
واﻟﻨﺎﺗﺞ
ﺳﻮف ﻳﻜﻮن:
12
واﻟﻨﺎﺗﺞ
****
:١٨ﻣﺜﺎل
#include “ stdafx.h”
#include “ iostream.h”
main ()
{ int x,y;
x=2;
y=-2;
do
{ ﻗﻄﻌﺘﻴﻦ أو ﺑﻠﻮك
cout<<x<<”-“<<endl; ﻟﻮﺿﻊ اﻟﺠﻤﻞ
x--; ﺑﻴﻨﻬﻤﺎ
y++;
}
else
cout<<”finish”;
y ﻻ ﺗﺴﺎويx ﻃﺎﻟﻤﺎ
while(x!=y)
ﺗﺎﺑﻊ اﻟﺘﻜﺮار أو اﻟﺪوران
..ﺗﺘﻮﻗﻒ ﻋﻤﻠﻴﺔ اﻟﺘﻜﺮار
return0; ﺛﻢy ﻣﻊ ﻗﻴﻤﺔx ﻃﺒﻌﺎ ﺳﻴﺘﻢ اﻟﺘﻜﺮار ﺣﺘﻰ ﺗﺘﺴﺎوى ﻗﻴﻤﺔ
}
2--21--1
”#include “ stdafx.h
”#include “ iostream.h
)( main
{ ﺣﻠﻘﺎت ﺗﻜﺮار 3
;int i=j=1 ﻣﺮات
)while (i<=3
{
)while(j<=4
{ اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﻴﺔ
;cout<<”/n”<<i*j ﺗﺘﻜﺮر 12ﻣﺮة
;++j
}
زﻳﺎدة ﻣﻨﺘﻈﻤﺔ ﻓﻲ
;++i
ﻋﺪاد Iﺑﻤﻘﺪار 1
;j=1
}
;return0 إﻋﺎدة ﺗﻌﺮﻳﻒ ﻗﻴﻤﺔ jاﻻﺑﺘﺪاﺋﻴﺔ
} ﻋﻨﺪ ﺑﺪاﻳﺔ ﺣﻠﻘﺔ j
ﻣﺜﺎل:٢١
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int i
)for (i=1;i<100;++i
{
;cout<<i ﻳﻮﻗﻒ ﺗﻨﻔﻴﺬ ﻫﺬه اﻟﺠﻤﻠﺔ
;if (i= =10) break ﺣﻠﻘﺎت اﻟﺘﻜﺮار ﻋﻨﺪﻣﺎ
} ﻳﺼﺒﺢ i=10
;return0
}
ﻣﺜﺎل:٢٣
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int x,n
do ﺗﻌﻤﻞ ﻋﻠﻰ ﺗﺠﺎوز ﺗﻨﻔﻴﺬ
{
اﻟﺠﻤﻠﺘﻴﻦ اﻟﺘﺎﻟﻴﺘﻴﻦ
;cin>>x>>n وﺗﺒﺪاء دورة ﺟﺪﻳﺪة إذا
;if (n<1) continue ﺗﺤﻘﻖ اﻟﺸﺮط
;cout<<x
;--n
}
;)while (n<1
;return0
}
:اﻟﻨﺎﺗﺞ
12
24
36
48
60
72
84
96
ﻣﺜﺎل:٢٦
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int x
;cin>>x
;if (x<10) goto negative
;negative: cout<<”value is under 10”<<endl
;return0
}
ﻓﻲ ﻫﺬا اﻟﺴ ﺆال ﻳﻄﻠ ﺐ ﻣ ﻦ اﻟﻤﺴ ﺘﺨﺪم إدﺧ ﺎل ﻗﻴﻤ ﺔ ﻓ ﺈذا ﻛﺎﻧ ﺖ اﻟﻘﻴﻤ ﺔ اﻗ ﻞ ﻣ ﻦ 10ﺣﺴ ﺐ
اﻟﺸﺮط ﻓﺎﻧﻪ ﻳﻌﺮض ﻟﻚ اﻟﺮﺳﺎﻟﺔ . value is under 10
أﻣ ﺎ إذا ﻛﺎﻧ ﺖ اﻛﺒ ﺮ ﻣ ﻦ اﻟﻌ ﺪد 10ﻓﺎﻧ ﻪ ﻳﻄﺒ ﻊ اﻟﻌ ﺪد ﻣﺒﺎﺷ ﺮة ﻣ ﻦ دون اﻟ ﺬﻫﺎب ﻟﻠﺴ ﻄﺮ
اﻷﺧﻴﺮ ﻟﺘﺤﻘﻖ اﻟﺸﺮط .
ﻣﻘﺪﻣﺔ introduction
أن ﻃ ﺮق اﻟﺘﻌﺎﻣ ﻞ ﻣ ﻊ أﺳ ﻤﺎء اﻟﻤﺘﻐﻴ ﺮات واﻟﺜﻮاﺑ ﺖ اﻟﻌﺪدﻳ ﺔ واﻟﺮﻣﺰﻳ ﺔ ،اﻟﺘ ﻲ وردت ﻓ ﻲ
اﻟﻔﺼﻮل اﻟﺴﺎﺑﻘﺔ ،ﺗﻌﺪ ﺻﺎﻟﺤﺔ ﻟﻠﺘﻌﺎﻣ ﻞ ﻣ ﻊ ﻋ ﺪد ﻣﺤ ﺪود ﻣ ﻦ ﻫ ﺬه اﻟﺜﻮاﺑ ﺖ واﻟﻤﺘﻐﻴ ﺮات ،
ﺳ ﻮاء ﻓ ﻲ ﻋﻤﻠﻴ ﺎت اﻹدﺧ ﺎل واﻹﺧ ﺮاج أو ﻓ ﻲ اﻟﻌﻤﻠﻴ ﺎت اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﻤﻨﻄﻘﻴ ﺔ ،وﻋﻨ ﺪﻣﺎ
ﻳﺼ ﺒﺢ ﻋ ﺪد اﻟﻤﺘﻐﻴ ﺮات ﻛﺒﻴ ﺮا ﺟ ﺪا ،ﺗﺼ ﺒﺢ ﺗﻠ ﻚ اﻟﻄ ﺮق ﻏﻴ ﺮ ﻋﻤﻠﻴ ﺔ ،ﻓﻤ ﺜﻼ ﻟ ﻮ أردﻧ ﺎ
إدﺧ ﺎل ﻣﺎﺋ ﺔ ﻗﻴﻤ ﺔ ﻟﻠﻤﺘﻐﻴ ﺮات .... x2,x1-إﻟ ﻲ ، x100ﻓﻜ ﻢ اﻟﺤﻴ ﺰ اﻟﻤﻄﻠ ﻮب ﻣ ﻦ
اﻟﺒﺮﻧﺎﻣﺞ ﻟﻌﻤﻠﻴ ﺎت اﻹدﺧ ﺎل واﻹﺧ ﺮاج واﻟﻌﻤﻠﻴ ﺎت اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﻤﻨﻄﻘﻴ ﺔ ﻟﻬ ﺬه اﻟﻤﺘﻐﻴ ﺮات ؟
ﻫﺬا ﻣﻦ ﺟﻬﺔ ،وﻣ ﻦ ﺟﻬ ﺔ أﺧ ﺮى :ﻓﺄﻧﻨ ﺎ ﻧ ﻮﻓﺮ ﻣﺨﺰﻧ ﺎ ﺧﺎﺻ ﺎ ﻟﻜ ﻞ ﻣﺘﻐﻴ ﺮ ﻧﺘﻌﺎﻣ ﻞ ﻣﻌ ﻪ ،
أﺛﻨ ﺎء ﺗﻨﻔﻴ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ ،وﻟ ﺬﻟﻚ ﻟﺤﻔ ﻆ ﻗﻴﻤﺘ ﻪ ﻓ ﻲ ﻣﺨ ﺰن ،وﻣ ﻦ ﺛ ﻢ ﻻﺳ ﺘﻌﻤﺎل ﻗﻴﻤﺘ ﻪ ﻓ ﻲ
ﻋﻤﻠﻴﺎت أﺧﺮى ﺗﺎﻟﻴﺔ ،وﻣﻦ ﻧﺎﺣﻴﺔ ﺛﺎﻟﺜ ﺔ ،ﻓ ﺎن ﻣ ﻦ اﻟﺼ ﻌﻮﺑﺔ ﺑﻤﻜ ﺎن ،ﺑ ﻞ ﻣ ﻦ اﻟﻤﺴ ﺘﺤﻴﻞ
اﺳﺘﻌﻤﺎل اﺳﻢ اﻟﻤﺘﻐﻴﺮ اﻟﻌﺪدي أو اﻟﺮﻣﺰي ﻛﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ،وﺛﻼﺛﺔ أﺑﻌﺎد ...اﻟـﺦ
ﻟﻸﺳﺒﺎب اﻟﺜﻼﺛﺔ اﻟﻮاردة أﻋﻼه ،ﺟﺎءت ﻓﻜﺮة اﺳ ﺘﻌﻤﺎل ﻣﺘﻐﻴ ﺮ ﺟﻤ ﺎﻋﻲ ﻳﻀ ﻢ ﺗﺤ ﺖ اﺳ ﻤﻪ
ﻋ ﺪدا ﻣ ﻦ اﻟﻌﻨﺎﺻ ﺮ ﻳﺴ ﻤﻰ ﺑ ﺎﻟﻤﺘﻐﻴﺮ اﻟﺮﻗﻤ ﻲ ، subscripted variableوﻳ ﺘﻢ ﺗﺮﻗﻤﻴ ﻪ
ﺑ ﻴﻦ ﻗﻮﺳ ﻴﻦ ﻣ ﺮﺑﻌﻴﻦ ] [ ﻳﻮﺿ ﻊ ﺑﻴﻨﻬﻤ ﺎ ﻗﻴﻤ ﺔ اﻟﻌ ﺪاد اﻟﻤ ﺮﻗﻢ ، subscriptوﻗ ﺪ ﻧﺴ ﻤﻴﺔ
اﻟ ﺪﻟﻴﻞ indexأﺣﻴﺎﻧ ﺎ ،وﻳﻤﻜﻨﻨ ﺎ ﺗﺸ ﺒﻴﻪ اﻟﻤﺘﻐﻴ ﺮ اﻟﻤ ﺮﻗﻢ ﺑﻘﺴ ﻢ اﻟﻬ ﺎﺗﻒ ﻟﻤﺆﺳﺴ ﺔ ﻣ ﺎ ،ﻓﻬ ﻮ
ﻣﻘﺴﻢ واﺣﺪ ،ﺗﻨﻈﻢ ﺗﺤﺘﻪ ﻋﺪد ﻣﻦ اﻷرﻗﺎم اﻟﻔﺮﻋﻴ ﺔ ﻟﻠﻤ ﻮﻇﻔﻴﻦ وﻛ ﻞ رﻗ ﻢ ﻣ ﻦ ﻫ ﺬه اﻷرﻗ ﺎم
ﻣﺴ ﺘﻘﻞ وﻣﺘﻤﻴ ﺰ ﻋ ﻦ اﻷرﻗ ﺎم اﻟﻔﺮﻋﻴ ﺔ اﻷﺧ ﺮى ،وﻟ ﻪ ﻣﺨ ﺰن ﺧ ﺎص ﻓ ﻲ اﻟ ﺬاﻛﺮة ،اﻵن
اﻧ ﻪ ﻛﻐﻴ ﺮه ﻣ ﻦ اﻷرﻗ ﺎم اﻟﻔﺮﻋﻴ ﺔ ﺗ ﺎﺑﻊ ﻟﻠ ﺮﻗﻢ اﻟﻌ ﺎم ﻟﻤﻘﺴ ﻢ اﻟﻤﺆﺳﺴ ﺔ ،ﻛﻤ ﺎ ﻳﻤﻜ ﻦ ﺗﺸ ﺒﻴﻪ
اﻟﻤﺘﻐﻴ ﺮ اﻟﻤ ﺮﻗﻢ ﺑ ﺎﻟﺠﻴﺶ اﻟ ﺬي ﻳﻌﺎﻣ ﻞ ﻛﺎﺳ ﻢ ﻣﺘﻐﻴ ﺮ واﺣ ﺪ ،ﻟﻜ ﻦ ﻳﻀ ﻢ ﻋ ﺪدا ﻛﺒﻴ ﺮا ﻣ ﻦ
اﻟﻌﻨﺎﺻﺮ ،ﻓﻤﺜﻼ اﻟﻌﻨﺎﺻﺮ اﻟﺘﺎﻟﻴﺔ ):ﻣﻦ اﻟﻴﻤﻴﻦ إﻟﻰ اﻟﻴﺴﺎر(:
]A[n] ...a[2], a[1], a[0
ﺗﺎﺑﻊ ﻟﻠﻤﺘﻐﻴﺮ اﻟﺠﻤﺎﻋﻲ ] [a
وﻛﻞ ﻋﻨﺼﺮ ﻣﻦ ﻫﺬه اﻟﻌﻨﺎﺻ ﺮ ﻟ ﻪ ﻋﻨ ﻮان ﻓ ﻲ اﻟ ﺬاﻛﺮ ، addressﻓ ﺎﻟﻌﻨﻮان اﻷول ﻳﻜ ﻮن
ﻟﻠﻌﻨﺼﺮ اﻷول واﻟﺜﺎﻧﻲ ﻟﻠﺜﺎﻧﻲ واﻟﺜﺎﻟﺚ ﻟﻠﺜﺎﻟﺚ ...وﻫﻜﺬا.
وﻳﺴ ﺘﻌﻤﻞ اﻟﻤﺘﻐﻴ ﺮ اﻟﺠﻤ ﺎﻋﻲ ]اﻟﻤ ﺮﻗﻢ[ أو اﻟﻤﺼ ﻔﻮﻓﺔ ،ﻓ ﻲ ﻟﻐ ﺔ c++وﻏﻴﺮﻫ ﺎ ،ﺣﺠ ﺰ
ﺟﻤ ﺎﻋﻲ ﻣﺴ ﺒﻖ ﻓ ﻲ اﻟ ﺬاﻛﺮة ﻟﺠﻤﻴ ﻊ ﻋﻨﺎﺻ ﺮه ،ﻓﻠ ﻮ ﻛ ﺎن ﻳﺘﺒﻌ ﻪ ﺧﻤﺴ ﻮن ﻋﻨﺼ ﺮا ،ﻓﺎﻧ ﻪ
ﻳﺤﺠﺰ ﻟﻪ 50ﻣﺨﺰﻧﺎ ،ﻋﻠﻰ اﻷﻗﻞ ﻓﻲ اﻟﺬاﻛﺮة .
ﻣ ﻦ اﻟﻔﻮاﺋ ﺪ اﻟﻤﻬﻤ ﺔ ﻟﻠﻤﺘﻐﻴ ﺮات اﻟﻤﺮﻗﻤ ﺔ واﻟﻤﺼ ﻔﻮﻓﺎت :ﻫ ﻮ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ﻓ ﻲ اﻟﺘﺮﺗﻴ ﺐ
اﻟﺘﺼ ﺎﻋﺪي واﻟﺘﻨ ﺎزﻟﻲ ﻟﻠﻌﻨﺎﺻ ﺮ واﻟﻘ ﻴﻢ اﻟﻤﺨﺘﻠﻔ ﺔ ،وﻋﻤﻠﻴ ﺎت ﺗﺮﺗﻴ ﺐ اﻷﺳ ﻤﺎء اﻷﺑﺠ ﺪي
اﻟﻌﺪد ﻣﻦ
اﻻﺳﻢ اﻟﺠﻤﺎﻋﻲ
ﻣﺜﻞ double -–int اﻟﻌﻨﺎﺻﺮ
char
وﻳﺒ ﺪأ اﻟﻌ ﺪاد اﻟﻤ ﺮﻗﻢ ﻋ ﺎدة ﻣ ﻦ اﻟﺼ ﻔﺮ ،آي أن اﻟﻌﻨﺼ ﺮ اﻷول ﻣ ﻦ اﻟﻤﺼ ﻔﻮﻓﺔ ][ aﻫ ﻮ
] a[0واﻟﺜﺎﻧﻲ ] ... a[1وﻫﻜﺬا ﻓﻤﺜﻼ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﺎﻟﻴﺔ:
;]Int a[20
اﺳﻤﻬﺎ ، aوﻗﺪ ﺣﺠﺰ ﻟﻬﺎ 20ﻣﻮﻗﻌﺎ ﻟﻌﺸﺮﻳﻦ ﻋﻨﺼﺮا ﻣﻦ اﻟﻨﻮع اﻟﺼﺤﻴﺢ .
واﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﺎﻟﻴﺔ:
;]Char name[15
ﻣﺼﻔﻮﻓﺔ رﻣﺰﻳﺔ ،اﺳﻤﻬﺎ nameﻳﺤﺠﺰ ﻟﻬﺎ ﺧﻤﺴﺔ ﻋﺸﺮ ﻋﻨﺼﺮا ﻣﻦ اﻟﻨﻮع اﻟﺮﻣﺰي
ﻟﻬﺎ .
وﻫﻜـﺬا...
ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﻳﺘﻢ إدﺧﺎل ﻋﺸﺮﻳﻦ ﻋﻨﺼﺮا ﻣﻦ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ a
A[0]=1ﻋﻨﺪﻣﺎ ﻳﻜﻮن I=0
A[1]=2ﻋﻨﺪﻣﺎ ﻳﻜﻮن I=1
…
…
…
a[19]=20ﻋﻨﺪﻣﺎ ﻳﻜﻮن I=19
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
int x[5], y[5];
int I;
for (I=0;I<5;++I)
{
x[I]=I;
y[I]=I*I;
cout<<endl<<x[I]<<y[I];
}
return0;
}
ﻣﺜﺎل:٣
”#include “ stdafx.h
”#include “ iostream.h
)( main
{ ﺗﻢ إﻋﻄﺎء اﻟﻘﻴﻢ ﻣﻦ ﻗﺒﻞ
}int a[6]={40,60,50,70,80,90 اﻟﻤﺴﺘﺨﺪم ﻣﺴﺒﻘﺎ ﻫﻨﺎ
;int I
)for(I=0;I<6;I++
;cout<<a[I]<<endl
;return0
}
#include “ stdafx.h”
#include “ iostream.h”
int m,i;
main ()
{
int a[5]={87,67,81,90,55}
int s=0; ﻗﻴﻤﺔ اﻟﻤﻌﺪل
for(i=0;i<5;i++) ﻟﺠﻤﻴﻊ اﻟﻌﻼﻣﺎت
s=s+m[a];
float avg=s/5;
cout<<avg<<endl;<<s<<endl;
return0;
}
87 اﻟﻤﻌﺪل
735 واﻟﻤﺠﻤﻮع
اﻟﻌﻨﺼﺮ
إذا ﻓﺮﺿﻨﺎ أن ﻋﻨﻮان ﻣﻮﻗ ﻊ اﻟﻌﻨﺼ ﺮ اﻷول ] x[0ﻓ ﻲ اﻟ ﺬاﻛﺮة ﻫ ﻮ ، 100ﻓ ﺎن ﻋﻨ ﺎوﻳﻦ
اﻟﻌﻨﺎﺻﺮ اﻷﺧﺮى ﺗﻜﻮن ﻋﻠﻰ اﻟﺘﻮاﻟﻲ 104 103 102 101
ﻳﻤﻜﻦ ﺗﺸﺒﻴﻪ اﻟﻌﻼﻗﺔ ﺑﻴﻦ ﻗﻴﻤﺔ اﻟﻌﻨﺼﺮ ،وﻋﻨﻮاﻧﻪ ،ﺑﺎﻟﻌﻼﻗ ﺔ ﺑ ﻴﻦ ﻋﻼﻣ ﺔ ﻃﺎﻟ ﺐ ،ورﻗﻤ ﻪ
اﻟﺠﺎﻣﻌﻲ ،إذ ﻋﻼﻣﺘﻪ ﻫﻲ ﻗﻴﻤﺔ ﻧﺸﻄﻪ ﻛﻌﻨﺼﺮ ،ﻟﻴﺲ ﻟﻬﺎ ﻋﻼﻗﺔ ﺑﺮﻗﻢ ﻣﻘﻌﺪه اﻟﺠﺎﻣﻌﻲ.
وﺑﺎﻟﻨﺴ ﺒﺔ ﻟﻌﻨ ﺎوﻳﻦ اﻟﻌﻨﺎﺻ ﺮ اﻟﻤﺼ ﻔﻮﻓﺔ ﻣﺘﻌ ﺪدة اﻷﺑﻌ ﺎد ﻓ ﻲ اﻟ ﺬاﻛﺮة ،ﻻ ﻳﺨﺘﻠ ﻒ ﻋﻤ ﺎ
ذﻛﺮﻧﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﺼﻔﻮﻓﺎت ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ ،وﻟﺬﻟﻚ ﻟ ﻮ ﻓﺮﺿ ﻨﺎ ،ﻓ ﻲ اﻟﻤﺜ ﺎل اﻟﺴ ﺎﺑﻖ أن
اﻟﻌﻨﺼﺮ ] x[0,0ﻛﺎن ﻋﻨﻮاﻧ ﻪ 100ﻣ ﺜﻼ ﻓ ﺎن ﻋﻨ ﺎوﻳﻦ اﻟﻌﻨﺎﺻ ﺮ اﻟﺘﺎﻟﻴ ﺔ :ﺣﺴ ﺐ ﺗﺮﺗﻴﺒﻬ ﺎ
اﻟﻤ ﺬﻛﻮر أﻋ ﻼه ﻫ ﻲ 102-101-100ﻟﻌﻨﺎﺻ ﺮ اﻟﺼ ﻒ اﻷول 105-104-103
ﻟﻌﻨﺎﺻﺮ اﻟﺼﻒ اﻟﺜﺎﻧﻲ.
ﻣﻘﺪﻣﺔ Introduction
ﺗﻌﺮف اﻟﺪاﻟﺔ ) اﻻﻗﺘ ﺮان ( ﻋﻠ ﻰ أﻧﻬ ﺎ :ﺟﻤﻠ ﺔ أو ﻣﺠﻤﻮﻋ ﺔ ﺟﻤ ﻞ أو ﺗﻌﻠﻴﻤ ﺎت ،ذات ﻛﻴ ﺎن
ﺧ ﺎص ،ﺗﻘ ﻮم ﺑﻌﻤﻠﻴ ﺔ أو ﻣﺠﻤﻮﻋ ﺔ ﻋﻤﻠﻴ ﺎت ،ﺳ ﻮاء ﻋﻤﻠﻴ ﺎت إدﺧ ﺎل أو إﺧ ﺮاج أو
ﻋﻤﻠﻴﺎت ﺣﺴﺎﺑﻴﺔ أو ﻣﻨﻄﻘﻴﺔ ،وﺗﺤﺘﻞ اﻟﺪاﻟﺔ ﻣﻮﻗﻌﺎ ﻣ ﻦ اﻟﺒﺮﻧ ﺎﻣﺞ ،آي أﻧﻬ ﺎ ﺟ ﺰء ﻣﻨ ﻪ ،أو
ﻳﻤﻜﻦ اﻟﻘﻮل أن ﺑﺮﻧﺎﻣﺞ ، c++ﻳﺘﻜﻮن ﻣﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪوال.
ﻣﺜﺎل:١
”#include “ stdafx.h
”#include “ iostream.h
)(max1
{
;”cout<<”hello
}
)(void main
{
;)( max1
;)(max1
;)(max1(); max1
}
واﻟﻨﺎﺗﺞ:
hello hello hello hello
ﻃﺒﻌﺎ ﻟﻠﻌﻠﻢ أﻋﺰاﺋﻲ أﻧﻨﺎ ﻓﻲ ﻫﺬا اﻟﻔﺼﻞ اﻟ ﺪوال ﻧﻼﺣ ﻆ أن ﺑﺪاﻳ ﺔ ﻗ ﺮاءة اﻟﻤﺘ ﺮﺟﻢ ﻟﻠﺒﺮﻧ ﺎﻣﺞ
ﻻ ﺗﺒﺪأ ﻣﻦ أول اﻟﺒﺮﻧﺎﻣﺞ ﻛﺎﻟﻤﻌﺘ ﺎد ﻓ ﺎﻟﻘﺮاءة ﺗﺒ ﺪأ ﻣ ﻦ اﻷﺳ ﻔﻞ آي أﻧﻬ ﺎ ﺗﺒ ﺪا ﺑﺎﻟﻤ ﺎﻳﻦ main
ﺳ ﻮاء ﻛ ﺎن ﻓ ﻲ اﻟﻮﺳ ﻂ أو اﻷﺳ ﻔﻞ ﻓﺄﻧﻬ ﺎ ﺗﻘ ﺮاء أوﻻ اﻟ ـ mainﺛ ﻢ ﺗﺒﺤ ﺚ ﻣ ﺎ داﺧﻠ ﻪ وﺗﺒ ﺪا
ﺑﺎﻟﺒﺤ ﺚ ﻋ ﻦ ﻣﻌﻨ ﻰ اﻟﻜﻠﻤ ﺔ )( max1ﻓ ﻲ اﻟﺪاﻟ ﺔ )( max1ﻓ ﻲ اﻷﻋﻠ ﻰ ﻟﺘﺠ ﺪ أن ﻫﻨ ﺎك
ﺟﻤﻠﺔ ﻃﺒﺎﻋﺔ وﻫﻜﺬا ﺗﺘﻜﺮر ﺣﺘﻰ ﻳﺘﻢ ﺗﻌﺮﻳﻒ ﻣﺎ ﺑﺪاﺧﻞ اﻟـ. main
ﻃﺒﻌﺎ واﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن ﺣﺴﺒﻤﺎ أدﺧﻠﺖ ﻟﻨﺪﺧﻞ ﻣﺜﻼ اﻟﻘﻴﻤﺔ ..9واﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن:
ood
ﻻن اﻟﻘﻴﻤﺔ اﻟﻤﺪﺧﻠﺔ 9ﻋﺪد ﻓﺮدي وﻟﻴﺲ زوﺟﻲ .
ﻻن اﻟﻌﺪد اﻟﺬي أدﺧﻠﻨﺎ 20اﻛﺒﺮ ﻣﻦ اﻟﻌﺪد اﻟﺬي أدﺧﻠﻨﺎ 10ﻓﻘﺎم ﺑﻄﺒﺎﻋﺘﻪ ﺣﺴﺐ اﻟﺸﺮط .
ﻣﻘﺪﻣﺔ Introduction
ﺻ ﻤﻤﺖ ﻫ ﺬه اﻟ ﺪوال ﻟﻠﺘﻌﺎﻣ ﻞ ﻣ ﻊ اﻟﻤﻠﻔ ﺎت اﻻﻧﺘﻘﺎﻟﻴ ﺔ ﻟﻸﻗ ﺮاص Buffered filw
systemﻟﻤﻌﺎﻟﺠ ﺔ اﻟﻨﺼ ﻮص ،ﻛﻤ ﺎ ﻛ ﺎن ﻣﺘ ﻮﻓﺮا ﻓ ﻲ ﻟﻐ ﺔ C++اﻟﻨﻈ ﺎم اﻷﺧ ﺮ ﻏﻴ ﺮ
اﻻﻧﺘﻘ ﺎﻟﻲ unbufferedاﻟﻤﺸ ﺎﺑﻬﺔ ﻟﻨﻈ ﺎم ﻳ ﻮﻧﻴﻜﺲ ﻟﻺدﺧ ﺎل واﻹﺧ ﺮاج UNIX-like
، I/Oوﻛ ﺎن اﻟﻨﻈ ﺎم اﻷﺧﻴ ﺮ ﻳﺴ ﺘﻌﻤﻞ ﻟﻠﺘﻌﺎﻣ ﻞ ﻣ ﻊ اﻟﻤﻌﻄﻴ ﺎت ﺑﻨﺴ ﻖ اﻟﻨﻈ ﺎم اﻟﺜﻨ ﺎﺋﻲ
، binary systemأﻻ أن ﻟﺠﻨ ﺔ Cﻓ ﻲ ﻣﻌﻬ ﺪ اﻟﻤﻘ ﺎﻳﻴﺲ اﻷﻣﺮﻳﻜ ﻲ اﻟ ﻮﻃﻨﻲ ﻟﻠﻐ ﺎت
اﻟﺒﺮﻣﺠ ﺔ ANISI-C Committeeﻗ ﺮرت ﻣ ﺆﺧﺮا اﻻﺳ ﺘﻐﻨﺎء ﻋ ﻦ اﻟﻨﻈ ﺎم ﻏﻴ ﺮ
اﻻﻧﺘﻘ ﺎﻟﻲ ﻣ ﻦ أﻧﻈﻤ ﺔ اﻟﺘﻌﺎﻣ ﻞ ﻣ ﻊ اﻟﻤﻌﻄﻴ ﺎت اﻟﺜﻨﺎﺋﻴ ﺔ ،ﻓﺄوﺟ ﺪت اﻟﺒ ﺪﻳﻞ ،ﺑﺤﻴ ﺚ ﻳﺼ ﺒﺢ
ﺑﻤﻘﺪور دوال اﻟﻨﻈ ﺎم اﻻﻧﺘﻘ ﺎﻟﻲ اﻟﺘﻌﺎﻣ ﻞ ﻣ ﻊ ﻛ ﻞ ﻣ ﻦ اﻟﻨﺼ ﻮص textواﻟﻤﻌﻄﻴ ﺎت اﻟﺜﻨﺎﺋﻴ ﺔ
binary systemﻓ ﻲ وﻗ ﺖ واﺣ ﺪ .أي أن آﺧ ﺮ ﺻ ﻮرة ) (versionﻣ ﻦ ، Cﻳﺘﻌﺎﻣ ﻞ
ﺑﻨﻈﺎم واﺣﺪ ﻓﻘﻂ ﻫﻮ ﻧﻈﺎم اﻟﻤﻠﻔﺎت اﻻﻧﺘﻘﺎﻟﻴﺔ .
وﻧﺤﺘﺎج ﻋﻨﺪ اﻟﺘﻌﺎﻣﻞ ﻣﻊ دوال ﻫﺬا اﻟﻨﻈ ﺎم ،أن ﻧﺴ ﺘﻌﻤﻞ ﻣﻠ ﻒ اﻟ ﺪﻟﻴﻞ ﻟﻺدﺧ ﺎل واﻹﺧ ﺮاج
stdio.hوﻳﻠﺨﺺ ﻟﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ اﺷﻬﺮ ﻫﺬه اﻟﺪوال:
ﻧﻼﺣﻆ أﻧﻨﺎ ﻗﻤﻨﺎ ﻓﻲ اﻟﺴﻄﺮ اﻷول أﻋ ﻼه ﺑﺈﻧﺸ ﺎء ﻣﻮﻗ ﻊ ﻟﻠﻤﻠ ﻒ ﻓ ﻲ ذاﻛ ﺮة اﻟﺤﺎﺳ ﻮب ﻃﺒﻌ ﺎ
ﻧﻜﺘﺐ FILEﺑﺎﻷﺣﺮف اﻷﺑﺠﺪﻳﺔ اﻟﻜﺒﺮى ﺛﻢ ﺑﻌﺪ ذﻟﻚ * وﺑﻌﺪﻫﺎ ﻧﻄﻠﻖ اﻟﻤﺴﻤﻰ ﻣﺜﻼ f
ﻫﺬا ﻫﻮ اﻟﻤﻠﻒ
اﻟﺠﺪﻳﺪ
ﻧﻼﺣﻆ أن ﻫﺬا اﻟﺠﺪول ﻳﻤﻜﻦ اﺳﺘﻌﻤﺎﻟﻪ ﻟﻜﻞ ﻣﻦ ﻣﻠﻔﺎت اﻟﻨﺺ واﻟﻤﻠﻔﺎت اﻟﺜﻨﺎﺋﻴﺔ.
ﻻﺣ ﻆ ﻋﺰﻳ ﺰي اﻟﻘ ﺎرئ أﻧﻨ ﺎ ﻗﻤﻨ ﺎ ﺑﻮﺿ ﻊ اﻟﺪاﻟ ﺔ ) (fprintfوﻫ ﻲ اﻟﺪاﻟ ﺔ اﻟﺨﺎﺻ ﺔ ﺑﺎﻟﻜﺘﺎﺑ ﺔ
داﺧ ﻞ اﻟﻤﻠﻔ ﺎت ﺑﺈﻣﻜﺎﻧ ﻚ اﻟﺮﺟ ﻮع ﻟﻠﺠ ﺪول ٥-١اﻵن ﻧﻔ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ وﺑﻌ ﺪ ﺗﻨﻔﻴ ﺬ ارﺟ ﻊ
ﻟﻠﻤﻠﻒ ﻓﻲ اﻟﻘﺮص cواﻓﺘﺤﻪ ﻟﺘﺸﺎﻫﺪ اﻟﻌﺒﺎرة welcome to c++ﻗﺪ ﻛﺘﺒﺔ ﺑﺪاﺧﻠﻪ.
ﻣﺜﺎل:٣
”#include “stdio.h
)(main
{
;FILE *f
;)”f=fopen(“C:\\matrix.txt”,”w
;)”fprintf (f,”welcome to c++
)fclose (f
ﻣﺜﺎل:٤
اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻘﻮم ﺑﻜﺘﺎﺑﺔ ) ﻃﺒﺎﻋﺔ( اﻟﻌﺪد اﻟﺼﺤﻴﺢ 1000ﻓﻲ ﻣﻠﻒ اﻟﻘﺮص اﻟﻤﺸﺎر إﻟﻴﻪ
ﺑﻤﺆﺷﺮ اﻟﻤﻠﻒ : f
;)Putw (1000,f
ﻣﺜﺎل:٥
اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻘﻮم ﺑﻜﺘﺎﺑﺔ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ اﻟﺼ ﺤﻴﺢ xﻓ ﻲ ﻣﻠ ﻒ اﻟﻘ ﺮص اﻟﻤﺸ ﺎر إﻟﻴ ﻪ ﺑﻤﺆﺷ ﺮ
اﻟﻤﻠﻒ : f
;)Putw (x,f