Professional Documents
Culture Documents
ﻳﻤﻜﻨﻜﻢ ﻣﺮاﺳﻠﺘﻲ إذا ﻛﺎن ﻫﻨﺎك آي ﻣﺸﺎﻛﻞ ﻣﺘﻌﻠﻘﺔ ﺑﻌﺪم اﻟﺘﻮﺿﻴﺢ أو ﻧﺤﻮه ﻣﻤﺎ ﻳﻮﺟﺪ ﻓﻲ ﻫﺬا اﻟﻜﺘﺎب ...
ﻣﻤﻨﻮع ﻣﻨﻌﺎ ﺑﺎﺗﺎ ﻃﺒﺎﻋﺔ أو اﻗﺘﺒﺎس أي ﺟﺰء ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب ﺑﺪون أذن ﺧﻄﻲ ﻣﻦ اﻟﻤﺆﻟﻒ
* اﻟ ﺒﺮاﻣﺞ اﻟﻤﺬﻛ ﻮرة ﻓ ﻲ ﻫ ﺬا اﻟﻜ ﺘﺎب ﻣ ﺜﻞ " "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++ﺣﺴ ﺐ ﻃﻮﻟﻬ ﺎ ،واﻟﺴ ﻌﺔ ﻛﻤ ﺎ ﻳﻤﻜ ﻦ ﺗﺼ ﻨﻴﻒ اﻷﻋ ﺪاد اﻟﺼ ﺤﻴﺤﺔ ﻓ ﻲ ﻟﻐ ﺔ
اﻟﺘﺨﺰﻳﻨﻴﺔ ﻟﻬﺎ ﻓﻲ اﻟﺬاﻛﺮة ﻣﺜﻼ-:
اﻟﺜﻮاﺑﺖ اﻟﺼﺤﻴﺤﺔ 40000 , 19897ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﻃﻮﻳﻠﺔ .long int
اﻟﺜﻮاﺑﺖ 45 , 80 , -16ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﻗﺼﻴﺮة .short int
اﻟﺜﻮاﺑﺖ 967 , 20000ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﺑﺪون إﺷﺎرة .unsigned int
أﻣﺜﻠﺔ ﻋﻠﻰ ﺛﻮاﺑﺖ ﻋﺪد ﺣﻘﻴﻘﻲ ﺗﺴﺘﻌﻤﻞ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺸﺮﻳﺔ ﺑﺸﻜﻞ ﺻﺤﻴﺢ -:
421.5
10.6
0.0
0
01
-68.0
ﻣﻼﺣﻈﺔ/
ﻛ ﻞ اﻟﺜﻮاﺑ ﺖ اﻟﺮﻣ ﺰﻳﺔ اﻟ ﻮاردة أﻋ ﻼه ،وان اﺳ ﺘﺨﺪﻣﺖ ارﻗﺎﻣ ﺎ ﺣﺴ ﺎﺑﻴﺔ داﺧﻠﻬ ﺎ ،أﻻ أﻧﺎ ﻻ
ﺗﺤﻤ ﻞ أي ﻗ ﻴﻤﺔ ﺣﺴ ﺎﺑﻴﺔ ،وﻟ ﻴﺲ ﻟﻬ ﺎ ﻣﻌ ﻨﻰ ﺣﺴ ﺎﺑﻲ ،وﺗﺴ ﺘﺨﺪم ﻣ ﺜﻞ ﻫ ﺬه اﻟﺜﻮاﺑ ﺖ ﻋ ﺎدة
ﻛﻤﻌﻠﻮﻣﺎت ﺗﻮﺿﻴﺤﻴﺔ ﻣﻊ ﻧﺘﺎﺋﺞ اﻟﺒﺮﻧﺎﻣﺞ.
وﺑﻤ ﺎ أن أﻧ ﻮاع اﻟﻤﻌﻠﻮﻣ ﺎت اﻟﻤ ﺮاد ﺗﺨﺰﻳ ﻨﻬﺎ ﺗﻜ ﻮن ﻋ ﺎدة ﻣﺨ ﺘﻠﻔﺔ ﻣ ﺜﻞ اﻟﻘ ﻴﻢ اﻟﺼ ﺤﻴﺤﺔ أو
اﻟﺤﻘﻴﻘ ﻴﺔ أو اﻟﺮﻣ ﺰﻳﺔ ...اﻟـ ـﺦ ﻓ ﺎﻧﻚ ﺗﺤﺘﺎج أن ﺗﻌﻠﻢ اﻟﻤﺘﺮﺟﻢ ﻓﻲ ﺑﺪاﻳﺔ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻦ أﻧﻮاع
اﻟﻤﺘﻐ ﻴﺮات اﻟﺘ ﻲ ﺗ ﺮﻳﺪ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ﻓ ﻲ اﻟ ﺒﺮﻧﺎﻣﺞ ،ﻓﻤ ﺜﻼ ﻓ ﻲ اﻟﺴ ﻄﻮر اﻟﺘﺎﻟ ﻴﺔ ﺗﺒﻴ ﻦ أن
اﻟﻤﺘﻐﻴﺮﻳﻦ 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
ﻣﺜﺎل:
;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
ﻣﻠﺤﻮﻇﺔ:
إذا ﺗﺴ ﺎوت أوﻟﻴ ﺘﺎن ﻣ ﺜﻞ اﻟﺠﻤ ﻊ واﻟﻄ ﺮح ﻓ ﻲ ﺗﻌﺒ ﻴﺮ ،ﻓ ﺘﻘﺪم اﻟﻌﻤﻠ ﻴﺔ اﻷﻗ ﺮب إﻟ ﻰ ﻳﺴ ﺎر
اﻟﺘﻌﺒ ﻴﺮ ،وﻋ ﻨﺪ اﺳ ﺘﻌﻤﺎل اﻷﻗ ﻮاس ﻷي ﺗﻌﺒ ﻴﺮ ﻓ ﺎن اﻷﻗ ﻮاس ﺗ ﺄﺧﺬ اﻷوﻟﻮﻳ ﺔ اﻷوﻟ ﻰ ﻓ ﻲ
اﻟﺘﻨﻔ ﻴﺬ ﻗ ﺒﻞ ) اﻟ ﺰﻳﺎدة أو اﻟﻨﻘﺼ ﺎن ( ،ﻛﻤ ﺎ ﻓ ﻲ ﻟﻐ ﺎت اﻟ ﺒﺮﻣﺠﺔ اﻷﺧ ﺮى ،واﻷﻣﺜﻠﺔ اﻵﺗﻴﺔ
ﺗﺒﻴﻦ ﻣﻔﻬﻮم اﻷوﻟﻮﻳﺔ ) اﻷﺳﺒﻘﻴﺔ (-:
ﻻﺣ ﻆ أﻧ ﻨﺎ ﺑﺪأﻧ ﺎ ﺑﺈﺟ ﺮاء اﻟﻌﻠﻤ ﻴﺎت اﻟﺤﺴ ﺎﺑﻴﺔ ﻣ ﻦ اﻟﻴﺴ ﺎر إﻟ ﻰ اﻟﻴﻤﻴ ﻦ ،وﺗﻌﻄ ﻰ أﻻ وﻟﻮﻳ ﻪ
ﻷﻳ ﺔ ﻋﻤﻠ ﻴﺔ ﺣﺴ ﺐ ﻗ ﺎﻋﺪة اﻷوﻟﻮﻳ ﺔ ،ﻓﺠ ﺎءت اﻟﻘﺴ ﻤﺔ ،ﻓ ﻲ اﻟﻤ ﺜﺎل ﻗ ﺒﻞ اﻟﺠﻤﻊ ،ﻛﻤﺎ ﺟﺎء
اﻟﻀﺮب ﺑﻌﺪ اﻟﻘﺴﻤﺔ وﺗﻼ ذﻟﻚ اﻟﺠﻤﻊ ﻛﺄﺧﺮ ﻋﻤﻠﻴﺔ.
وﻓ ﻲ ﻟﻐ ﺔ C++ﺗﻌ ﺎﻣﻞ اﻟﻨﺘ ﻴﺠﺔ ﻻ ) (falseﻋﻠ ﻰ أﻧﻬ ﺎ ﺻ ﻔﺮ ) (0وﺗ ﺄﺧﺬ اﻟﻨﺘ ﻴﺠﺔ ﻧﻌ ﻢ
) (trueأﻳﺔ ﻗﻴﻤﺔ ﻏﻴﺮ اﻟﺼﻔﺮ واﻟﻤﺸﻬﻮر أﻧﻬﺎ ). (1
وﻳﺒﻴﻦ ﻟﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ اﻷدوات اﻟﻌﻼﻗﻴﺔ واﻟﻤﻨﻄﻘﻴﺔ:
اﻷدوات اﻟﻌﻼﻗﻴﺔ
ﻣﻌﻨﺎﻫﺎ اﻷداة
اﻛﺒﺮ ﻣﻦ >
اﺻﻐﺮ ﻣﻦ <
اﻛﺒﺮ ﻣﻦ أو ﻳﺴﺎوي =>
اﺻﻐﺮ ﻣﻦ أو ﻳﺴﺎوي =<
ﻳﺴﺎوي ==
ﻻ ﻳﺴﺎوي =!
اﻟﺠﺪول١-٥
اﻷدوات اﻟﻤﻨﻄﻘﻴﺔ
ﻣﻌﻨﺎﻫﺎ اﻷداة
) Andﺣﺮف اﻟﻌﻄﻒ واو( &&
) Orﺣﺮف اﻟﻌﻄﻒ أو ( ||
) Notﻟﻠﻨﻔﻲ( أداة أﺣﺎدﻳﺔ unary !
اﻟﺠﺪول١-٦
ﺳ ﻤﻴﺖ ﻫ ﺬه اﻷدوات ﺑﺎﻟﺪﻗ ﻴﻘﺔ أو أدوات )اﻟﺒ ﺖ( ﻷﻧﻬ ﺎ ﺗ ﺘﻌﺎﻣﻞ ﻣﻊ ] ) [bitوﺣﺪة اﻟﺘﺨﺰﻳﻦ
اﻷوﻟ ﻴﺔ( ﻣﺒﺎﺷ ﺮة ،ﻓﺤﺼ ﺎ ،وﺿ ﺒﻄﺎ ،وإزاﺣ ﺔ ،وﺗﺴ ﺘﻌﻤﻞ ﻫ ﺬه اﻷدوات ﻣﻊ اﻟﻤﻌﻄﻴﺎت
اﻟﺼﺤﻴﺤﺔ intواﻟﺮﻣﺰﻳﺔ charﻓﻘﻂ ،وﻻ ﺗﺴﺘﻌﻤﻞ ﻣﻊ ﻏﻴﺮﻫﺎ ﻣﻦ أﻧﻮاع اﻟﻤﻌﻄﻴﺎت..
0 0 0 1 1 0 1 0 ﻗﻴﻤﺔ 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
إذا ﻟﻢ ﻳﺘﺤﻘﻖ اﻟﺸﺮط
ﻓﺎن
ﺗﻌﻄ ﻲ ﻋ ﻨﻮان yﻓ ﻲ اﻟﺬاﻛ ﺮة ،ووﺿ ﻌﻪ ﻓ ﻲ ﻣﺨﺰن ، xوﻫﺬه اﻟﺠﻤﻠﺔ ﺗﺨﺘﻠﻒ ﻃﺒﻌﺎ ﻋﻦ
اﻟﺠﻤﻠ ﺔ اﻟﺤﺴ ﺎﺑﻴﺔ x=yاﻟﺘ ﻲ ﻣﻌ ﻨﺎﻫﺎ وﺿ ﻊ ﻗ ﻴﻤﺔ yﻓ ﻲ ﻣﺨ ﺰن xأﻣ ﺎ ﻋ ﻨﺪ اﺳﺘﻌﻤﺎل &
ﻗ ﺒﻞ yﻓﻤﻌ ﻨﺎﻫﺎ إﻋﻄ ﺎء ﻋ ﻨﻮان ﻣﺨ ﺰن yﻓ ﻲ اﻟﺬاﻛ ﺮة ﻓﻘ ﻂ ﻟﻠﻤﺘﻐ ﻴﺮ ، xوﻟ ﻴﺲ ﻗ ﻴﻤﺔ y
ﻓﻠ ﻮ ﻛﺎﻧ ﺖ ، y=10ورﻗ ﻢ )ﻋ ﻨﻮان( ﻣﻮﺿ ﻌﻬﺎ ﻓ ﻲ اﻟﺬاﻛ ﺮة ﻫﻮ ، 120ﻓﺎن xﺗﺄﺧﺬ ﻗﻴﻤﺔ
120ﻋ ﻨﺪ اﺳ ﺘﻌﻤﺎﻟﻨﺎ & ﻣ ﻊ yوﺑﺎﻟﻨﺴ ﺒﺔ ﻟ ﻸداة اﻟﺜﺎﻧ ﻴﺔ * ﻓﻬ ﻲ أداة أﺣﺎدﻳ ﺔ أﻳﻀ ﺎ ،
وﻣﻜﻤﻠﺔ ﻟﻸداة & ،وﻟﺬﻟﻚ ﻟﻮ ﻛﺎن ﻟﺪﻳﻨﺎ اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﻴﺔ اﻟﺘﻲ ﺗﺴﺘﻌﻤﻞ اﻷداة * .
;S=*x
ﻓﺎﻧ ﻪ ﻳﻔﻬ ﻢ ﻣ ﻨﻬﺎ أن 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;
}
ﻣﺜﺎل:٥
ﺑﺮﻧﺎﻣﺞ ، C++اﻟﺘﺎﻟﻲ ﻳﻄﺒﻊ اﻟﻘﻴﻤﺔ اﻟﺤﻘﻴﻘﺔ :10.5
”#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=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
}
ﻧﻼﺣ ﻆ أن ﻓ ﻲ ﺟﻤ ﻞ اﻹﺧ ﺮاج ﻗﻤ ﻨﺎ ﺑﻜ ﺘﺎﺑﺔ ﻗ ﺎﻋﺪة وﻫﻲ ﺟﻤﻊ اﻟﺜﻼث أﻋﺪاد ﻣﻊ ﺑﻌﻀﻬﺎ ﺛﻢ
ﻗﺴﻤﺘﻬﺎ ﻋﻠﻰ ﻋﺪدﻫﺎ وﻫﻲ ﻗﺎﻋﺪة ﻣﻌﺮوﻓﺔ ﻹﻇﻬﺎر اﻟﻤﻌﺪل..
وﺳﻒ ﻳﻜﻮن اﻟﻨﺎﺗﺞ ﻛﺎﻟﺘﺎﻟﻲ:
31
#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++ﺗﻮﻓﺮ ﻣﺮوﻧﺔ ﻛﺒﻴﺮة
ﻓﻲ اﺳﺘﺨﺪام ﻋﺪد ﻛﺒﻴﺮ ﻣﻦ اﻟﺪوال ،وﻓﻲ ﺗﻮﺟﻴﻪ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺮﻳﻘﺔ ﻓﻌﺎﻟﺔ وﻓﺎﺋﻘﺔ.
اﻟﺼﻴﻐﺔ اﻷوﻟﻰ
ﻣﺜﺎل:٢
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ C++اﻟﺘﺎﻟﻲ ﻟﻴﺤﺴﺐ اﻟﻘﻴﻤﺔ اﻟﻤﻄﻠﻘﺔ ﻟـ Yاﻟﻤﻌﺮﻓﺔ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ:
x;x>=0
=|Y=|x
-x;x<0
”#include “ stdafx.h
”#include “ iostream.h
)( main
{ ﻧﻘﻮم ﺑﺈدﺧﺎل اﻟﻌﺪد 10
;int x
;cin>>x
;if (x>=0) cout<<x
;else cout<<-x
;return0
}
”#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
0 “ stdafx.h”
#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
}
وﻣ ﻦ اﻟﻤﻼﺣ ﻆ أﻧ ﻨﺎ ﺟﻌﻠ ﻨﺎ ﻗ ﻴﻤﺔ اﻟ ﺰﻳﺎدة 2وﻟ ﻴﺲ 1ﻻﻧ ﻪ ﻃﻠ ﺐ أﻋﺪاد ﻓﺮدﻳﺔ ﺑﺪاﻳﺔ ﺑﺎﻟﻘﻴﻤﺔ
1وﺣﺘﻰ 15
واﻟﻨﺘﻴﺠﺔ ﻛﺎﻟﺘﺎﻟﻲ:
1
3
5
7
9
11
13
:١١ﻣﺜﺎل
#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وﻳﻠﺨﺺ ﻟﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ اﺷﻬﺮ ﻫﺬه اﻟﺪوال:
ﻫﺬا ﻫﻮ اﻟﻤﻠﻒ
اﻟﺠﺪﻳﺪ
ﻧﻼﺣﻆ أن ﻫﺬا اﻟﺠﺪول ﻳﻤﻜﻦ اﺳﺘﻌﻤﺎﻟﻪ ﻟﻜﻞ ﻣﻦ ﻣﻠﻔﺎت اﻟﻨﺺ واﻟﻤﻠﻔﺎت اﻟﺜﻨﺎﺋﻴﺔ.
ﻻﺣ ﻆ ﻋﺰﻳ ﺰي اﻟﻘ ﺎرئ أﻧ ﻨﺎ ﻗﻤ ﻨﺎ ﺑﻮﺿ ﻊ اﻟﺪاﻟ ﺔ ) (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