موسوعة البرمجة بلغة C++
W
Description
موسوعة البرمجة بلغة C++
Document Sample


اﻟﻤﺆﻟﻒ: ﻣﺠﻼد ﻣﺸﺎري اﻟﺴﺒﻴﻌﻲ
اﻟﺒﺮﻳﺪ اﻹﻟﻜﺘﺮوﻧﻲ: magedxl@hotmail.com
ﻳﻤﻜﻨﻜﻢ ﻣﺮاﺳﻠﺘﻲ إذا ﻛﺎن ﻫﻨﺎك آي ﻣﺸﺎﻛﻞ ﻣﺘﻌﻠﻘﺔ ﺑﻌﺪم اﻟﺘﻮﺿﻴﺢ أو ﻧﺤﻮه ﻣﻤﺎ ﻳﻮﺟﺪ ﻓﻲ ﻫﺬا اﻟﻜﺘﺎب ...
ﻣﻤﻨﻮع ﻣﻨﻌﺎ ﺑﺎﺗﺎ ﻃﺒﺎﻋﺔ أو اﻗﺘﺒﺎس أي ﺟﺰء ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب ﺑﺪون أذن ﺧﻄﻲ ﻣﻦ اﻟﻤﺆﻟﻒ
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺣﻘﻮق اﻟﻄﺒﻊ ﻣﺤﻔﻮﻇﺔ©
* اﻟﺒﺮاﻣﺞ اﻟﻤﺬﻛﻮرة ﻓ ﻲ ﻫ ﺬا اﻟﻜﺘ ﺎب ﻣﺜ ﻞ " "visual c++" "Windowsوﻏﻴﺮﻫ ﺎ ﻋﻼﻣ ﺎت ﺗﺠﺎرﻳ ﺔ أو ﻋﻼﻣ ﺎت
ﻣﺴ ﺠﻠﺔ ﻻﺻ ﺤﺎﺑﻬﺎ ، واﻟﻤﺆﻟ ﻒ ﻳﺤﺘ ﺮم ﻫ ﺬه اﻟﻌﻼﻣ ﺎت وﻳﻘ ﺮ ﺑﻬ ﺎ ﻻﺻ ﺤﺎﺑﻬﺎ ، وﻟ ﻢ ﻳ ﺬﻛﺮﻫﺎ ﺗﺼ ﺮﻳﺤﺎ ﻓ ﻲ اﻟﻜﺘ ﺎب ﻃﻠﺒ ﺎ
ﻟﻼﺧﺘﺼﺎر.
* اﻟﻤﺆﻟ ﻒ ﻻ ﻳﻌ ﺪ ﻣﺴ ﺆوﻻ ﺑ ﺄي ﺷ ﻜﻞ ﺻ ﺮﻳﺤﺎ أو ﺿ ﻤﻨﻴﺎ ﻋ ﻦ أي ﻧﺘ ﺎﺋﺞ ﺗﺘﺮﺗ ﺐ ﻋ ﻦ اﺳ ﺘﺨﺪام اﻟﻤﻌﻠﻮﻣ ﺎت اﻟﺘ ﻲ
ﻳﺤﺘﻮﻳﻬﺎ اﻟﻜﺘﺎب أو آي ﺗﻌﺪﻳﻼت ﻳﺠﺮﻳﻬﺎ اﻟﻘﺎرئ ﻋﻠﻴﻬﺎ.
* ﺟﻤﻴﻊ اﻵراء وﻣﺎ ﻛﺘﺐ ﻓﻲ ﻫﺬا اﻟﻜﺘﺐ ﺗﻌﺒﺮ ﻋﻦ رأي اﻟﻤﺆﻟﻒ ﺷﺨﺼﻴﺎ.
* اﻟﻜﺘﺎب ﻣﺠﺎﻧﻲ 001 % وﻻ ﻳﺤﻖ ﻻﺣﺪ ﺑﻴﻌﻪ أو اﺳﺘﻐﻼﻟﻪ ﺗﺠﺎرﻳﺎ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻫﺬا اﻟﻜﺘﺎب إﻫﺪاء إﻟﻰ ارض اﻟﻌ ﺮاق اﻟﺤﺒﻴﺒ ﺔ .. ﻧﻌ ﻢ اﻟﻌ ﺮاق ﻟﻘ ﺪ أﺿ ﻌﻨﺎ اﻟﻌ ﺮاق ارض اﻟﻔ ﺮات ودﺟﻠ ﺔ ، ﻓﺨ ﺮ اﻹﺳ ﻼم
واﻟﻤﺴﻠﻤﻴﻦ ﺑــﻐــﺪاد ...
أﺿﻌﻨﺎﻫﺎ .. أﺿﻌﻨﺎﻫﺎ..
ﻟﻜﻨﻚ ﻟﺴﺖ ﺑﺒﻌﻴﺪ وﺳﺘﻌﻮدﻳﻦ أرﺿﺎ ﻟﻠﺨﻼﻓﻪ اﻹﺳﻼﻣﻴﺔ..
ﻗﺮﻳﺒﺎ .. ﻗﺮﻳﺒﺎ
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أﻋﺰاﺋﻲ..
ﺗﻢ وﺑﺤﻤﺪ اﷲ اﻻﻧﺘﻬﺎء ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب .. اﻟﻤﻔﻴﺪ ﻟﻠﺠﻤﻴﻊ ﺑﺈذن اﷲ اﻟﻤﺒﺘﺪﺋﻴﻦ واﻟﻤﺤﺘﺮﻓﻴﻦ ﻋﻠﻰ ﺣﺪ اﻟﺴﻮاء..
وﻗﺪ ﻗﻤﺖ ﺑﺈﻧﺸﺎء ﻫﺬا اﻟﻜﺘﺎب ﺑﻌﺪ أن ﻻﺣﻈﺖ ﻗﻠﺔ اﻟﻜﺘﺐ اﻟﺘﻲ ﺗﺘﺤﺪث ﻋﻦ ﻟﻐﺔ ++..Visual C
وﻫﻲ اﻟﻠﻐﺔ اﻟﺘﻲ ﺗﻢ ﻣﻨﻬﺎ ﺑﻨﺎء ﺣﺰﻣﺔ اوﻓﻴﺲ اﻟﻤﻌﺮوﻓﺔ ﻟﺘﻄﺒﻴﻘﺎت اﻟﺤﺎﺳﺐ..
ﻟﺬﻟﻚ أرﺟﻮ أن ﻳﺤﻮز ﻫﺬا اﻟﻜﺘﺎب ﻋﻠﻰ رﺿﺎﻛﻢ وﻫﻮ ﻳﺤﺘﻮى ﻋﻠﻰ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﻣﺜﻠﺔ اﻟﺘﻄﺒﻴﻘﻴﺔ ﻣﻊ ﺷﺮح اﻷﺳﺎﺳﻴﺎت
واﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺟﻮﺑﺔ اﻟﺘﻲ ﻳﺤﺘﺎﺟﻬﺎ ﻣﺒﺮﻣﺠﻲ ++.C
وﺑﺎﷲ اﻟﺘﻮﻓﻴﻖ..
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻋﻨﻮان اﻟﻜﺘﺎب............................................................................أ
إﻫﺪاء.......................................................................................ب
ﻣﻘﺪﻣﺔ.................................................................................... د
اﻟﺒﺎب اﻷول
اﻷﺳﺎﺳﻴﺎت ﻣﻜﻮﻧﺎت ++ cوادواﺗﻬﺎ
رﻣﻮز ﻟﻐﺔ ++٧......................................................................... c
اﻟﻤﺘﻐﻴﺮات................................................................................٣١
اﻷدوات اﻟﻤﺴﺘﻌﻤﻠﺔ ﻓﻲ ﻟﻐﺔ ++١٥.................................................... c
اﻷدوات اﻟﺤﺴﺎﺑﻴﺔ ......................................................................٥١
اﻷدوات اﻷﺣﺎدﻳﺔ واﻟﺜﻨﺎﺋﻴﺔ............................................................٧١
اﻟﺰﻳﺎدة واﻟﻨﻘﺼﺎن.......................................................................٧١
أوﻟﻴﺎت اﻟﻌﻤﻠﻴﺎت ﻟﻸدوات اﻟﺤﺴﺎﺑﻴﺔ..................................................٩١
اﻷدوات اﻟﻌﻼﻗﻴﺔ واﻟﻤﻨﻘﻄﻴﺔ ..........................................................٠٢
اﻷدوات اﻟﺪﻗﻴﻘﺔ.........................................................................٢٢
أداة اﻟﻨﻔﻲ.................................................................................٣٢
أداة اﻟﺠﻤﻊ...............................................................................٤٢
أداة اﻻﺧﺘﻴﺎر............................................................................٤٢
أداة اﻻﺧﺘﻴﺎر اﻻﺳﺘﺜﻨﺎﺋﻲ...............................................................٥٢
أداة اﻹزاﺣﺔ.............................................................................٦٢
اﻷداة اﻟﺸﺮﻃﻴﺔ .........................................................................٨٢
أداة اﻟﻌﻨﻮان..............................................................................٩٢
أداة ﺗﻌﻴﻴﻦ اﻟﻄﻮل....................................................................... ٠٣
اﻟﻔﺎﺻﻠﺔ ﻛﺄداة...........................................................................١٣
ﺟﻤﻞ اﻟﺘﻌﺮﻳﻒ..........................................................................٢٣
اﻟﺜﻮاﺑﺖ اﻟﺮﻣﺰﻳﺔ ذات اﻟﺸﺮط اﻟﻤﻌﻜﻮﺳﺔ...........................................٣٣
اﻟﻤﻼﺣﻈﺎت واﻟﺘﻌﻠﻴﻘﺎت ﻓﻲ ++٣٤ ...................................................c
اﻟﺒﺎب اﻟﺜﺎﻧﻲ
ﺗﺸﻐﻴﻞ 0.6++Visual C
ﺧﻄﻮات ﺗﺸﻐﻴﻞ ﺑﺮﻧﺎﻣﺞ ++٣٥.......................................... Visual C
اﻟﺒﺎب اﻟﺜﺎﻟﺚ
أﺳﺎﻟﻴﺐ اﻹدﺧﺎل واﻹﺧﺮاج
ﻣﻘﺪﻣﺔ..................................................................................٠٤
اﻹدﺧﺎل واﻹﺧﺮاج...................................................................١٤
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻃﺒﺎﻋﺔ اﻟﻨﺼﻮص ) اﻟﺜﻮاﺑﺖ اﻟﺮﻣﺰﻳﺔ (........................................... ٢٤
ﻃﺒﺎﻋﺔ اﻟﻘﻴﻢ اﻟﻌﺪدﻳﺔ .................................................................٤٤
ﻃﺒﺎﻋﺔ اﻟﻨﺼﻮص واﻟﻘﻴﻢ اﻟﻌﺪدﻳﺔ ﻓﻲ ﺟﻤﻠﺔ واﺣﺪه................................٧٤
اﻹدﺧﺎل ﺑﻠﻐﺔ ++٤٩.................................................................. c
اﻟﺒﺎب اﻟﺮاﺑﻊ
ﺟﻤﻞ اﻟﺘﺤﻜﻢ واﻟﺸﺮط واﻟﺘﻜﺮار
ﻣﻘﺪﻣﺔ ..................................................................................٣٥
اﻟﺠﻤﻞ اﻟﺸﺮﻃﻴﺔ.......................................................................٣٥
ﺟﻤﻠﺔ اﻟﺸﺮط إذا وأﺧﻮاﺗﻬﺎ ٥٤......................................if statements
ﺟﻤﻠﺔ اﻟﺘﻮزﻳﻊ ٥٩............................................. switch statement
ﺟﻤﻠﺔ أداة اﻟﺸﺮط ؟...................................................................٠٦
اﻟﺘﻜﺮار وﺣﻠﻘﺎت اﻟﺘﻜﺮار............................................................١٦
أﺳﻠﻮب اﻟﺘﻜﺮار ﺑﺎﺳﺘﻌﻤﺎل ﺣﻠﻘﺔ ٦١............................................. For
ﺣﻠﻘﺎت اﻟﺘﻜﺮار اﻟﻤﺘﺪاﺧﻠﺔ ٦٦.......................................... for Loops
أﺳﻠﻮب اﻟﺘﻜﺮار ﺑﺎﺳﺘﻌﻤﺎل ﺣﻠﻘﺔ ٦٩................................While & Do
ﺣﻠﻘﺎت Whileاﻟﻤﺘﺪاﺧﻠﺔ...........................................................٢٧
ﺟﻤﻠﺔ اﻹﻳﻘﺎف ٧٣...............................................................Break
ﺟﻤﻠﺔ اﻻﺳﺘﻤﺮار ٧٥...................................................... continue
ﺟﻤﻠﺔ اﻟﺨﺮوج )(٧٧.............................................................. exit
ﺟﻤﻠﺔ اﻻﻧﺘﻘﺎل ٧٨................................................................ goto
اﻟﺒﺎب اﻟﺨﺎﻣﺲ
اﻟﻤﺘﻐﻴﺮات اﻟﻤﺮﻗﻤﺔ واﻟﻤﺼﻔﻮﻓﺎت
ﻣﻘﺪﻣﺔ..................................................................................٩٧
إﻋﻄﺎء ﻗﻴﻤﺔ أوﻟﻴﺔ ﻟﻠﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ..................................٣٨
ﻋﻨﻮان ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻲ اﻟﺬاﻛﺮة............................................ ٥٨
اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪﻳﻦ.............................................................٦٨
اﻟﺒﺎب اﻟﺴﺎدس
اﻟﺪوال
ﻣﻘﺪﻣﺔ.................................................................................٨٨
ﺗﻄﺒﻴﻘﺎت ﻋﻠﻰ اﻟﺪوال............................................................... ٠٩
اﻟﺒﺎب اﻟﺴﺎﺑﻊ
ﺗﻘﻨﻴﺔ اﻷﻗﺮاص و دوال اﻟﻤﻠﻔﺎت اﻻﻧﺘﻘﺎﻟﻴﺔ
ﻣﻘﺪﻣﺔ................................................................................٤٩
داﻟﺔ ﻓﺘﺢ اﻟﻤﻠﻒ )(٩٥....................................................... fopen
داﻟﺔ اﻟﻜﺘﺎﺑﺔ داﺧﻞ اﻟﻤﻠﻒ )(٩٧............................................ fprintf
داﻟﺔ إﻏﻼق اﻟﻤﻠﻒ )(٩٨.................................................... fclose
اﻟﺪاﻟﺘﺎن )(٩٩.......................................................putw() getw
اﻟﻨﻬﺎﻳﺔ...............................................................................١٠١
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻷﺳﺎﺳﻴﺎت
ﻣﻜﻮﻧﺎت ++ Cوادواﺗﻬﺎ
++Basic Elements of C
رﻣﻮز ﻟﻐﺔ ++C
*اﻟﺮﻣﻮز اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﻟﻐﺔ ++C
١- اﻟﺤﺮوف اﻹﻧﺠﻠﻴﺰﻳﺔ اﻟﻜﺒﻴﺮة A.B.C
٢- اﻟﺤﺮوف اﻹﻧﺠﻠﻴﺰﻳﺔ اﻟﺼﻐﻴﺮة a.b.c
٣- اﻷرﻗﺎم اﻟﻌﺮﺑﻴﺔ اﻷﺻﻞ 3.2.1
٤- رﻣﻮز ﺧﺎﺻﺔ ﻣﺜﻞ:
][ " ! < - +
* ، || > )( _
>> >< =< => \ /
=! & % $ # <<
اﻟﺠﺪول١-١
وﺗﻌ ﺪ ﻫ ﺬه اﻟﺮﻣ ﻮز ﺑﺄﻧﻮاﻋﻬ ﺎ اﻟﻤ ﺎدة اﻟﺨ ﺎم اﻟﺘ ﻲ ﺗﺘﻜ ﻮن ﻣﻨﻬ ﺎ ﻣﻔ ﺮدات ﻟﻐ ﺔ ++ ، Cوإذا
درﺳ ﺖ ﻟﻐ ﺔ أﺧ ﺮى ﻗﺒ ﻞ ﻟﻐ ﺔ ++ ، Cﻓﺎﻧ ﻚ ﺗﻼﺣ ﻆ أن ﻟﻐ ﺔ ++ ، Cﺗﺴ ﺘﻌﻤﻞ رﻣ ﻮزا
إﺿﺎﻓﻴﺔ ﻓﻲ ﻟﻮﺣﺔ ﻣﻔﺎﺗﻴﺢ اﻟﺤﺎﺳﺐ ﻻ ﺗﻮﺟﺪ ﻓﻲ ﺑﻌﺾ اﻟﻠﻐﺎت.
*ﻛﻠﻤﺎت ﻟﻐﺔ ++C
اﻟﻜﻠﻤﺎت ﻧﻮﻋﻴﻦ:-
١- أﺳﻤﺎء ﺗﻌﺮﻳﻔﻴﺔ )(Identifiers
وﻫﻲ اﻷ ﺳﻤﺎء اﻟﺘﻲ ﻧﺴﻤﻴﻬﺎ ﻧﺤﻦ " اﻟﻤﺒﺮﻣﺠﻮن" ﺗﻌﺮف اﻟﺤﺎﺳﻮب ﺑﻤﺎ ﺗﺮﻳﺪ.
وﺗﻄﻠﻖ اﻷﺳﻤﺎء اﻟﺘﻌﺮﻳﻔﻴﺔ ﻋﻠﻰ:-
-Aاﻟﻤﺘﻐﻴﺮات.
-Bاﻻﺧﺘﺰاﻧﺎت )اﻟﺪوال(.
-Cاﻟﻤﺆﺷﺮات.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
*ﻗﻮاﻋﺪ ﺗﺴﻤﻴﺔ اﻷﺳﻤﺎء اﻟﺘﻌﺮﻳﻔﻴﺔ ﻓﻲ ﻟﻐﺔ ++-: C
١- أن ﻳﻜ ﻮن اﻻﺳ ﻢ ﻣﻜﺘﻮﺑ ﺎ ﻣ ﻦ ﺳﻠﺴ ﻠﺔ ﻣﺘﺼ ﻠﺔ ﻣ ﻦ اﻟﺤ ﺮوف أو اﻷرﻗ ﺎم ﺑﺸ ﺮط أن
ﻳﺒﺪا ﺑﺤﺮف أو ﺑﺨﻂ ﺗﺤﺘﻲ "_"
٢- أن ﻻ ﻳﺤﺘﻮى اﻻﺳﻢ ﻋﻠﻰ رﻣﻮز ﺧﺎﺻﺔ ﻋﺪا اﻟﺨﻂ اﻟﺘﺤﺘﻲ "_"
٢- أن ﻻ ﻳﻜﻮن اﻻﺳﻢ إﺣﺪى اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة.
ﺑﻌﺾ اﻷﻣﺜﻠﺔ اﻟﺼﺤﻴﺤﺔ ﻋﻠﻰ اﻷﺳﻤﺎء اﻟﺘﻌﺮﻳﻔﻴﺔ:
B6 .a
X_ray .b
Matrix .c
Ok_ .d
A .e
Soft_fine .f
Door12 .g
_new .h
وﻫﺬه أﺳﻤﺎء ﺗﻌﺮﻳﻔﻴﺔ ﻏﻴﺮ ﻣﻘﺒﻮل ) (invalidﻟﻸﺳﺒﺎب اﻟﻤﺒﻴﻨﺔ إزاء ﻛﻞ ﻣﻨﻬﺎ:
Ù 7-upﻻﻧﻪ ﺑﺪا ﺑﺮﻗﻢ وﻟﻴﺲ ﺑﺤﺮف.
1.6 Ù bﻻﺳﺘﻌﻤﺎﻟﻪ اﻟﺮﻣﺰ اﻟﺨﺎص ).(
! Ù salimﻻﺳﺘﻌﻤﺎﻟﻪ اﻟﺮﻣﺰ اﻟﺨﺎص )!(
2 Ù Ђﻻ ﻳﺠﻮز اﺳﺘﻌﻤﺎل ﺣﺮوف ﻏﻴﺮ إﻧﺠﻠﻴﺰﻳﺔ.
1# Ù Noﻻﺳﺘﻌﻤﺎﻟﻪ اﻟﺮﻣﺰ اﻟﺨﺎص )#(
وﻣﻦ اﻟﺠﺪﻳﺮ ﺑﺎﻟﺬﻛﺮ ، أن ﻟﻐ ﺔ ++ Cﺗﻔ ﺮق ﺑ ﻴﻦ اﻟﺤ ﺮوف اﻷﺑﺠﺪﻳ ﺔ اﻟﺼ ﻐﻴﺮة واﻟﻜﺒﻴ ﺮة ،
ﻓﻤ ﺜﻼ اﻷﺳ ﻤﺎء : SYSTEM , system, Systemﺗﻌﺎﻣ ﻞ ﻛﺄﺳ ﻤﺎء ﻣﺨﺘﻠﻔ ﺔ ﻋ ﻦ
ﺑﻌﻀﻬﺎ اﻟﺒﻌﺾ ﺑﺴﺒﺐ اﺧﺘﻼف ﻣﻌﺎﻣﻠﺔ اﻟﻤﺘﺮﺟﻢ ﻟﻠﺤﺮوف اﻟﺼﻐﻴﺮة واﻟﻜﺒﻴﺮة.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
٢- اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة
، ، وﺗﻜﺘ ﺐ ﻋ ﺎدة ﺑﺤ ﺮوف ﺻ ﻐﻴﺮةC++ وﻫﻲ ﻛﻠﻤ ﺎت ﻗﻴﺎﺳ ﻴﺔ ﻣﻌﺮوﻓ ﺔ ﻣﺴ ﺒﻘﺎ ﻟﻤﺘ ﺮﺟﻢ
، وﻫ ﺬه اﻟﻜﻠﻤ ﺎت اﻟﻤﺤﺠ ﻮزة ﺣﺴ ﺐC++ وﻟﻬ ﺎ ﻣﻌ ﺎن ﺧﺎﺻ ﺔ ﺑﻬ ﺎ ﺗﺆدﻳﻬ ﺎ ﻓ ﻲ ﺑﺮﻧ ﺎﻣﺞ
:اﻟﺘﺮﺗﻴﺐ اﻷﺑﺠﺪي ﻫﻲ
near Static asm Double long Sizeof
do int While new auto else
For This Void Delete Goto if
const Entry char Class Public Case
Continue Extern struct inline float Private
Virtual Volatile Frinde enum near Static
cdecl Default inline Overload Unsigned Typedef
Signed Pascal Operator Switch Template Union
Register Protected far Catch char Const
break Return
١-٢اﻟﺠﺪول
وﻳﻨﺒﻐ ﻰ اﻟﺘﻨﺒﻴ ﻪ إﻟ ﻰ أن ﻫ ﺬه اﻟﻜﻠﻤ ﺎت اﻟﻤﺤﺠ ﻮزة ، ﻻ ﻳﺠ ﻮز إﻋ ﺎدة ﺗﻌﺮﻳﻔﻬ ﺎ أو اﺳ ﺘﻌﻤﺎﻟﻬﺎ
.ﻟﻐﻴﺮ ﻣﺎ ﺧﺼﺼﺖ ﻟﻪ
ﺗﻌ ﺪ ﻟﻐ ﺔ ﺻ ﻐﻴﺮة إذ ﺗﺘﻜ ﻮنC++ وﻛﻤ ﺎ ﺗﻼﺣ ﻆ ﻣ ﻦ ﻗﺎﺋﻤ ﺔ اﻟﻜﻠﻤ ﺎت اﻟﻤﺤﺠ ﻮزة ، أن ﻟﻐ ﺔ
.ﻣﻦ ﻋﺪد ﻗﻠﻴﻞ ﻣﻦ اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة ﺗﻘﺮﻳﺒﺎ ٢٥ ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﻓﻘﻂ
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
• ﺗﻤﺜﻴﻞ اﻟﺜﻮاﺑﺖ اﻟﻌﺪدﻳﺔ Numeric Constants
ﻳﻤﻜﻦ ﺗﻤﺜﻴﻞ اﻟﺜﻮاﺑﺖ اﻟﻌﺪدﻳﺔ ، ﻓﻲ ﻟﻐﺔ ++ Cﺑﺜﻼث ﺻﻮر ﻫﻲ:-
.aاﻟﺜﺎﺑﺖ اﻟﻌﺪدي اﻟﺼﺤﻴﺢ integer
- ﻫﻮ ﻋﺪد ﻣﻜﻮن ﻣﻦ اﻷرﻗﺎم ﻣﻦ 0 9 Ù
- ﻻ ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎﺻﻠﺔ ﻋﺸﺮﻳﺔ.
- ﻳﻤﻜﻦ أن ﻳﺤﻮى اﻹﺷﺎرة "+" أو "-"
أﻣﺜﻠﺔ ﺻﺤﻴﺤﺔ ﻋﻠﻰ اﻟﺜﺎﺑﺖ اﻟﻌﺪدي اﻟﺼﺤﻴﺢ:-
0
51
0001
123
16-
واﻷﻋﺪاد اﻟﺘﺎﻟﻴﺔ ﻏﻴﺮ ﺻﺤﻴﺤﺔ ﻟﻸﺳﺒﺎب اﻟﻤﺒﻴﻨﺔ إزاء ﻛﻞ ﻣﻨﻬﺎ:
13.3 : ﻻﻧﻪ ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎﺻﻠﺔ ﻋﺸﺮﻳﺔ.
000,1 : ﻻﻧﻪ ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎرزة.
27 : Jﻻﻧﻪ ﻳﺤﺘﻮى ﻋﻠﻰ ﺣﺮف أﺑﺠﺪي.
4 2 : ﻟﻮﺟﻮد ﻓﺮاغ ﺑﻴﻦ اﻟﻌﺪﻳﺪﻳﻦ.
2991 2991 9991 : ﻟﻮﺟﻮد ﻓﺮاغ وأﻳﻀﺎ ﻻن اﻟﻌﺪد ﻛﺒﻴﺮ.
++ ، Cﺣﺴ ﺐ ﻃﻮﻟﻬ ﺎ ، واﻟﺴ ﻌﺔ ﻛﻤ ﺎ ﻳﻤﻜ ﻦ ﺗﺼ ﻨﻴﻒ اﻷﻋ ﺪاد اﻟﺼ ﺤﻴﺤﺔ ﻓ ﻲ ﻟﻐ ﺔ
اﻟﺘﺨﺰﻳﻨﻴﺔ ﻟﻬﺎ ﻓﻲ اﻟﺬاﻛﺮة ﻣﺜﻼ:-
اﻟﺜﻮاﺑﺖ اﻟﺼﺤﻴﺤﺔ 79891 , 00004 ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﻃﻮﻳﻠﺔ .long int
اﻟﺜﻮاﺑﺖ 61- , 08 , 54 ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﻗﺼﻴﺮة .short int
اﻟﺜﻮاﺑﺖ 00002 , 769 ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﺑﺪون إﺷﺎرة .unsigned int
واﻟﻔﺮق ﺑﻴﻦ اﻟﺜﻮاﺑﺖ اﻟﻄﻮﻳﻠﺔ واﻟﻘﺼ ﻴﺮة ﻫ ﻮ ﻓ ﻲ ﻋ ﺪد اﻟﻮﺣ ﺪات اﻟﺘﺨﺰﻳﻨﻴ ﺔ اﻟﻤﻄﻠﻮﺑ ﺔ ﻟﻜ ﻞ
ﻧﻮع ﻓﻲ اﻟﺬاﻛﺮة ، ﻓﺎﻟﻄﻮﻳﻠﺔ ﺗﺄﺧﺬ ﺣﻴﺰا اﻛﺒﺮ ، واﻟﻘﺼ ﻴﺮة ﺗ ﻮﻓﺮ ﻋ ﺪد اﻟﻮﺣ ﺪات اﻟﺘﺨﺰﻳﻨﻴ ﺔ
اﻟﻤﺴﺘﻌﻤﻠﺔ ، أﻣﺎ اﻟﺜﻮاﺑﺖ اﻟﺼﺤﻴﺤﺔ ﺑ ﺪون إﺷ ﺎرة ، unsigned intﻓ ﺎن اﺳ ﺘﻌﻤﺎﻟﻬﺎ ﻳ ﻮﻓﺮ
وﺣ ﺪة ﺗﺨﺰﻳﻨﻴ ﺔ واﺣ ﺪة ﺗﺴ ﺘﻌﻤﻞ ﻟﻼﺷ ﺎره ﻋﻨ ﺪﻣﺎ ﺗ ﺬﻛﺮ ﻛﻠﻤ ﺔ ، unsignedﻗﺒ ﻞ ، int
وذﻟ ﻚ ﺑﺈزاﺣ ﺔ اﻟﻘﻴﻤ ﺔ إﻟ ﻰ ﻗﻴﻤ ﺔ ﻣﻮﺟﺒ ﺔ ﺑ ﺪون إﺷ ﺎرة ، وﻟﻜ ﻞ ﻧ ﻮع ﻣ ﻦ اﻷﻧ ﻮاع اﻟﺴ ﺎﺑﻘﺔ
ﺗﻄﺒﻴﻘﺎﺗﻪ اﻟﻤﻨﺎﺳﺒﺔ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
-bاﻟﺜﺎﺑﺖ اﻟﻌﺪدي اﻟﺤﻘﻴﻘﻲ Floating-point Constants
- ﻫﻮ ﻋﺪد ﻣﻜﻮن ﻣﻦ اﻷرﻗﺎم 0 9 Ù
- ﻳﺠﺐ أن ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎﺻﻠﺔ ﻋﺸﺮﻳﺔ
- ﻳﻤﻜﻦ أن ﻳﺤﻮى اﻻﺷﺎره "+" أو "-"
- ﻻ ﻳﺠﻮز أن ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎرزة "،"
أﻣﺜﻠﺔ ﻋﻠﻰ ﺛﻮاﺑﺖ ﻋﺪد ﺣﻘﻴﻘﻲ ﺗﺴﺘﻌﻤﻞ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺸﺮﻳﺔ ﺑﺸﻜﻞ ﺻﺤﻴﺢ :-
5.124
6.01
0.0
0
10
0.86-
واﻷﻣﺜﻠﺔ اﻻﺗﻴﻪ ﻏﻴﺮ ﺻﺤﻴﺤﺔ ﻟﻸﺳﺒﺎب اﻟﻤﺒﻨﻴﺔ إزاء ﻛﻞ ﻣﻨﻬﺎ:-
0001 : ﻻﻧﻪ ﻻ ﻳﺤﺘﻮى ﻋﻠﻲ ﻓﺎﺻﻠﺔ ﻋﺸﺮﻳﺔ.
12.000,4 : ﻻﻧﻪ ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎرزة.
4.38 2 : ﻻن ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺮاغ .
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
• ﺗﻤﺜﻴﻞ اﻟﺜﻮاﺑﺖ اﻟﺮﻣﺰﻳﺔ Non-numeric
- ﺳﻠﺴﻠﺔ ﻣﻦ رﻣﻮز اﻟﻠﻐﺔ ) أﺣﺮف أرﻗﺎم رﻣﻮز ﺧﺎﺻﺔ( ﻣﺤﺼﻮرة ﺑﻴﻦ
ﺣﻮاﺻﺮ ﻋﻠﻮﻳﺔ ﻣﺰدوﺟﺔ )ﻋﻼﻣﺎت ﺗﻨﺼﻴﺺ أو اﻗﺘﺒﺎس(
وﻣﻦ اﻷﻣﺜﻠﺔ ﻋﻠﻰ اﻟﺜﺎﺑﺖ اﻟﺮﻣﺰي ﻣﺎ ﻳﺄﺗﻲ :-
""first
""my name is
"08=05+03"
"40.321="my,no
""Islam
وﺗﻼﺣﻆ أﻧﻨﺎ ﺳﻤﻴﻨﺎ أي ﻧﺺ ﻣﻮﺿﻮع ﺑﻴﻦ ﺣﺎﺻﺮﺗﻴﻦ ﻣ ﺰدوﺟﺘﻴﻦ ﺛﺎﺑﺘ ﺎ رﻣﺰﻳ ﺎ واﻟﺼ ﺤﻴﺢ
أن ﺗﺴﻤﻴﺘﻪ ﺛﺎﺑﺘﺎ رﻣﺰﻳﺎ ﻫﻲ ﻣﻦ ﻗﺒﻴﻞ اﻟﻤﺠﺎز واﻻﺻﻄﻼح ﻻ اﻟﺤﻘﻴﻘ ﺔ ، واﻣ ﺎ ﻛﻠﻤ ﺔ رﻣ ﺰي
: ﻓ ﻼن اﻟ ﻨﺺ ﻣﻜ ﻮن ﻣ ﻦ ﻋ ﺪد ﻣ ﻦ اﻟﺮﻣ ﻮز ، وﺗﺴ ﻤﻴﺔ ﺑﻌ ﺾ اﻟﻜﺘ ﺐ ﺑﺎﻟﺜﺎﺑ ﺖ ﻏﻴ ﺮ اﻟﻌ ﺪد
.Non-numeric
ﻣﻼﺣﻈﺔ/
ﻛﻞ اﻟﺜﻮاﺑ ﺖ اﻟﺮﻣﺰﻳ ﺔ اﻟ ﻮاردة أﻋ ﻼه ، وان اﺳ ﺘﺨﺪﻣﺖ ارﻗﺎﻣ ﺎ ﺣﺴ ﺎﺑﻴﺔ داﺧﻠﻬ ﺎ ، أﻻ أﻧ ﺎ ﻻ
ﺗﺤﻤ ﻞ أي ﻗﻴﻤ ﺔ ﺣﺴ ﺎﺑﻴﺔ ، وﻟ ﻴﺲ ﻟﻬ ﺎ ﻣﻌﻨ ﻰ ﺣﺴ ﺎﺑﻲ ، وﺗﺴ ﺘﺨﺪم ﻣﺜ ﻞ ﻫ ﺬه اﻟﺜﻮاﺑ ﺖ ﻋ ﺎدة
ﻛﻤﻌﻠﻮﻣﺎت ﺗﻮﺿﻴﺤﻴﺔ ﻣﻊ ﻧﺘﺎﺋﺞ اﻟﺒﺮﻧﺎﻣﺞ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﻤﺘﻐﻴﺮات
ﻫﻲ أﺳﻤﺎء )ﻋﻨﺎوﻳﻦ( ﻟﻤﻮاﻗﻊ ﻓﻲ ذاﻛﺮة اﻟﺤﺎﺳﻮب ، ﻳﺨﺰن ﺑﻬﺎ رﻣﻮز أو أﻋﺪاد.
وﺑﻤ ﺎ أن أﻧ ﻮاع اﻟﻤﻌﻠﻮﻣ ﺎت اﻟﻤ ﺮاد ﺗﺨﺰﻳﻨﻬ ﺎ ﺗﻜ ﻮن ﻋ ﺎدة ﻣﺨﺘﻠﻔ ﺔ ﻣﺜ ﻞ اﻟﻘ ﻴﻢ اﻟﺼ ﺤﻴﺤﺔ أو
اﻟﺤﻘﻴﻘﻴﺔ أو اﻟﺮﻣﺰﻳﺔ ... اﻟــﺦ ﻓﺎﻧﻚ ﺗﺤﺘﺎج أن ﺗﻌﻠﻢ اﻟﻤﺘﺮﺟﻢ ﻓﻲ ﺑﺪاﻳ ﺔ اﻟﺒﺮﻧ ﺎﻣﺞ ﻋ ﻦ أﻧ ﻮاع
اﻟﻤﺘﻐﻴ ﺮات اﻟﺘ ﻲ ﺗﺮﻳ ﺪ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ﻓ ﻲ اﻟﺒﺮﻧ ﺎﻣﺞ ، ﻓﻤ ﺜﻼ ﻓ ﻲ اﻟﺴ ﻄﻮر اﻟﺘﺎﻟﻴ ﺔ ﺗﺒ ﻴﻦ أن
اﻟﻤﺘﻐﻴﺮﻳﻦ xو yﺣﻘﻴﻘﻴﺎن ، واﻟﻤﺘﻐﻴﺮ kﺻﺤﻴﺢ ، واﻟﻤﺘﻐﻴﺮ c,b,aرﻣﺰﻳﺔ.
;Float x, y Xو yﻋﺪدان ﺣﻘﻴﻘﻴﺎن
;Integer k Kﻋﺪد ﺻﺤﻴﺢ
;Char c,b,a C,b,aرﻣﻮز
;0.2=X
;Y=10.6*x
;001=K
;A=t
;B=f
;4=C
ﻻﺣﻆ اﻟﺴ ﻄﺮﻳﻦ اﻷول ، واﻟﺜﺎﻟ ﺚ ﻳﺤﺘﻮﻳ ﺎن ﻋﻠ ﻰ اﻛﺜ ﺮ ﻣ ﻦ ﻣﺘﻐﻴ ﺮ ﺣﻴ ﺚ ﻳﻔﺼ ﻞ ﺑ ﻴﻦ ﻛ ﻞ
ﻣﺘﻐﻴﺮﻳﻦ ، ﻓﺎﺻﻠﺔ وﻛﺬﻟﻚ ﻳﻤﻜ ﻦ ﺗﺤﺪﻳ ﺪ أﻧ ﻮاع اﻟﻤﺘﻐﻴ ﺮات ، ﺑ ﺬﻛﺮ اﻟﺘﻔﺼ ﻴﻞ اﻟ ﺪﻗﻴﻖ ﻟﻠﻨ ﻮع
، ﻣﻦ ﺣﻴﺚ ﻃﻮل اﻟﺴﻌﺔ اﻟﺘﺨﺰﻳﻨﻴﺔ ، أي ﻫﻞ ﻫ ﻮ ﺻ ﺤﻴﺢ ﻗﺼ ﻴﺮ أم ﻃﻮﻳ ﻞ ﺣﻘﻴﻘ ﻲ ﻗﺼ ﻴﺮ
أو ﻣﻀﺎﻋﻒ ... اﻟـﺦ
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
• وﺗﻘﺴﻢ اﻟﻤﺘﻐﻴﺮات ﻟﻨﻮﻋﻴﻦ :-
١- ﻣﺘﻐﻴﺮات ﻋﺪدﻳﺔ
وﻫﻲ ﻣﻮاﻗﻊ ﻓﻲ اﻟﺬاﻛﺮة ﺗﺨﺰن ﺑﻬﺎ أﻋﺪاد .
٢- ﻣﺘﻐﻴﺮات رﻣﺰﻳﺔ
وﻫﻲ ﻣﻮاﻗﻊ ﻓﻲ اﻟﺬاﻛﺮة ﺗﺨﺰن ﺑﻬﺎ رﻣﻮز.
٣- ﻣﺘﻐﻴﺮات ﻣﻨﻄﻘﻴﺔ
وﺗﺨﺰن ﺑﻬﺎ ﻗﻴﻤﺔ ﻣﻨﻄﻘﻴﺔ أﻣﺎ 0= FALSEأو 1=TRUE
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻷدوات اﻟﻤﺴﺘﻌﻤﻠﺔ ﻓﻲ ﻟﻐﺔ ++C
ﻳﻮﺟﺪ ﻓﻲ ﻟﻐﺔ ++ Cﺛﻼﺛﺔ أﻧﻮاع ﻣﻦ اﻷدوات وﻫﻲ:
اﻷدوات اﻟﺤﺴ ﺎﺑﻴﺔ – اﻷدوات اﻟﻤﻨﻄﻘﻴ ﺔ واﻟﻌﻼﻗ ﺔ – اﻷدوات اﻟﺪﻗﻴﻘ ﺔ وﻓﻴﻤ ﺎ ﻳ ﺄﺗﻲ ﺗﻔﺼ ﻴﻞ
ﺑﺎﻷﻧﻮاع اﻟﺜﻼﺛﺔ:-
اﻷدوات اﻟﺤﺴﺎﺑﻴﺔ Arithmetic Operators
ﺗﺴ ﻤﺢ ﻟﻐ ﺔ ++ Cﺑﺎﺳ ﺘﻌﻤﺎل اﻷدوات اﻟﺤﺴ ﺎﺑﻴﺔ ﻣ ﻦ ﺟﻤ ﻊ وﻃ ﺮح وﺿ ﺮب وﻗﺴ ﻤﺔ ،
ﻛﺎﻟﻠﻐﺎت اﻷﺧ ﺮى ، إﻻ أن ﻋﻤﻠﻴ ﺔ اﻟﺮﻓ ﻊ إﻟ ﻰ اﻷس ، ﻟ ﻴﺲ ﻟﻬ ﺎ أدوات ﻣﺒﺎﺷ ﺮة ﻣﺜ ﻞ اﻷداة
hﻓﻲ Basicواﻷداة ** ﻓﻲ ﻓﻮرﺗﺮان ، واﻧﻤﺎ ﺗﺘﻢ ﻋﻠﻤﻴ ﺔ اﻟﺮﻓ ﻊ إﻟ ﻰ أس ﻓ ﻲ ﻟﻐ ﺔ ++C
ﺑﻄﺮﻳﻘﺔ أﺧﺮى ..
ﻛﻤ ﺎ ﺗﺨﺘﻠ ﻒ اﻟﻘﺴ ﻤﺔ ﻓ ﻲ ﻟﻐ ﺔ ++ Cﻋﻨﻬ ﺎ ﻓ ﻲ Basicإذا أن أي ﺟ ﺰء ﻛﺴ ﺮي ﻳﻨ ﺘﺞ ﻋ ﻦ
اﻟﻘﺴﻤﺔ ﻳﻬﻤﻞ ﻣﻬﻤﺎ ﻛ ﺎن ﻛﺒﻴ ﺮا ، ﻛﻤ ﺎ ﻓ ﻲ ﻟﻐﺘ ﻲ ﺑﺎﺳ ﻜﺎل وﻛﻮﺑ ﻮل ﻓﻤ ﺜﻼ ﻧ ﺎﺗﺞ اﻟﻘﺴ ﻤﺔ 3/8
ﻫﻮ 2 واﻟﻜﺴﺮ 666.0 ﻳﻬﻤﻞ ، وﻳﻜﻮن ﻧﺎﺗﺞ اﻟﻘﺴﻤﺔ ﺑﺎﺳﺘﻌﻤﺎل اﻷداة / ﺻﺤﻴﺢ اﻟﻌﺪد.
وﻳﻤﻜﻨﻨﺎ اﻵن أن ﻧﻠﺨﺺ اﻷدوات اﻟﺤﺴﺎﺑﻴﺔ اﻟﻤﺴﺘﻌﻤﻠﺔ ﻓﻲ ﻟﻐﺔ ++ Cﻓﻴﻤﺎ ﻳﺄﺗﻲ:-
وﻇﻴﻔﺘﻬﺎ اﻷداة
ﻟﻠﻄﺮح أو ﻛﺄﺷﺎره ﺳﺎﻟﺒﺔ -
ﻟﻠﺠﻤﻊ +
ﻟﻠﻀﺮب *
ﻟﻠﻘﺴﻤﺔ /
ﻟﺒﺎﻗﻲ اﻟﻘﺴﻤﺔ اﻟﺼﺤﻴﺤﺔ %
ﻟﻠﻨﻘﺼﺎن --
ﻟﻠﺰﻳﺎدة ++
اﻟﺠﺪول٣-١
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
وﻳﺨﺘﻠﻒ أداء ﺑﻌ ﺾ اﻷدوات اﻟﺤﺴ ﺎﺑﻴﺔ ﺣﺴ ﺐ ﻧ ﻮع اﻟﻤﻌﻄﻴ ﺎت اﻟﺼ ﺤﻴﺤﺔ ، أو اﻟﺤﻘﻴﻘ ﺔ ،
أو اﻟﺮﻣﺰﻳ ﺔ ﻓﻌﻨ ﺪ ﻣﻌﺎﻣﻠ ﺔ اﻟﻤﻌﻄﻴ ﺎت اﻟﺤﻘﻴﻘﻴ ﺔ ﻟ ﻸدوات اﻟﺤﺴ ﺎﺑﻴﺔ ، ﻳﻤﻜ ﻦ اﻟﻘ ﻮل أن
اﻟﻌﻠﻤﻴ ﺎت اﻷﺳﺎﺳ ﻴﺔ ﻣ ﻦ ﺟﻤ ﻊ وﻃ ﺮح وﺿ ﺮب ، ﺗﺠ ﺮي ﺑﺎﻟﻄﺮﻳﻘ ﺔ اﻟﺘ ﻲ ﻧﻌﺮﻓﻬ ﺎ ، إﻻ أن
ﻫﻨﺎك ﻣﺤﺬورا ﻳﺠﺐ أن ﻧ ﺬﻛﺮ ﺑ ﻪ ، وﻫ ﻮ أن ﺗﺘﻌ ﺪى ﻗﻴﻤ ﺔ اﻟﻨﺘﻴﺠ ﺔ ﻣ ﻦ أﻳ ﺔ ﻋﻤﻠﻴ ﺔ ﺣﺴ ﺎﺑﻴﺔ
اﻟﺤ ﺪود اﻟﻤﺮﺳ ﻮﻣﺔ ﻟﻨ ﻮع اﻟﻤﺘﻐﻴ ﺮ اﻟﻨ ﺎﺗﺞ ، ﻻن ﻟﻜ ﻞ ﻧ ﻮع ﻣ ﻦ أﻧ ﻮاع اﻟﻤﺘﻐﻴ ﺮات ﺣ ﺪودا ،
ﻳﻌ ﺪ ﺗﺠﺎوزﻫ ﺎ ﺧﻄ ﺄ ﻳﻨ ﺘﺞ ﻋﻨ ﻪ ﺧﻄ ﺄ ﻓ ﻲ اﻟﻨﺘ ﺎﺋﺞ ، وﻋﻨ ﺪ ﻣﻌﺎﻣﻠ ﺔ اﻟﻤﻌﻄﻴ ﺎت اﻟﺼ ﺤﻴﺤﺔ
ﺑ ﺎﻷدوات اﻟﺤﺴ ﺎﺑﻴﺔ ﺗﻌﻤ ﻞ اﻷدوات ﺑﺎﻟﻄﺮﻳﻘ ﺔ اﻟﺘ ﻲ ﻧﺘﻮﻗﻌﻬ ﺎ ، وﻋﻨ ﺪ ﺗﻌ ﺪي اﻟﺤ ﺪود
اﻟﻤﺴﻤﻮح ﺑﻬﺎ ﻓ ﻲ اﻟﻘ ﻴﻢ اﻟﺼ ﺤﻴﺤﺔ ، ﻓ ﺎن ﻫ ﺬا ﻳﻌﻨ ﻲ أن ﺧﻄ ﺄ ﻗ ﺪ وﻗ ﻊ ، overflowوﻓ ﻲ
ﻫﺬه اﻟﺤﺎﻟﺔ ﻟﻦ ﺗﺘﻠﻘﻰ ﻣﻦ اﻟﻤﺘﺮﺟﻢ أﻳﺔ رﺳﺎﻟﺔ ﺧﻄﺄ ، ﻓﻤﺜﻼ إذا ﻛﺎن ﻟﺪﻳﻨﺎ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ:
) (Main
{
;00033 = int n
;3 * n = n
}
ﻋﻨ ﺪ ﻃﺒﺎﻋ ﺔ اﻟﻨﺘﻴﺠ ﺔ nاﻟﻨﻬﺎﺋﻴ ﺔ ﻧﺘﻮﻗ ﻊ أن ﻳﻜ ﻮن اﻟﺠ ﻮاب 00099 ، أﻻ أن اﻟﺠ ﻮاب ﻓ ﻲ
ﻫ ﺬه اﻟﺤﺎﻟ ﺔ ﻟ ﻦ ﻳﺘﻌ ﺪى 46403 ، وﻫ ﻮ اﻟﺤ ﺪ اﻻﻋﻠ ﻰ اﻟﻤﺴ ﻤﻮح ﺑ ﻪ ﻟﻠﻘﻴﻤ ﺔ اﻟﺼ ﺤﻴﺤﺔ ،
وﻫﻨﺎك أﻣﺮ أﺧﺮى ﻳﺘﻌﻠﻖ ﺑﺎﻟﻘﺴﻤﺔ ﻓﻌﻨﺪﻣﺎ ﻧﻘﺴﻢ 8 ﻋﻠﻰ 3 ﻗﺴ ﻤﺔ ﺻ ﺤﻴﺤﺔ 3/8 ﻓ ﺎن اﻟﻨ ﺎﺗﺞ
ﻳﻜ ﻮن ﺻ ﺤﻴﺤﺎ وﻫ ﻮ 2 ﻓﻘ ﻂ ، وإذا ﻣ ﺎ رﻏﺒ ﺖ أن ﺗﺤ ﺎﻓﻆ ﻋﻠ ﻰ اﻟﺠ ﺰء اﻟﻜﺴ ﺮي اﻟ ﺬي
أﻫﻤ ﻞ واﺳ ﻘﻂ ، ﻳﻤﻜﻨ ﻚ أن ﺗﺤ ﻮل اﻟﻘﺴ ﻤﺔ إﻟ ﻰ ﻗﺴ ﻤﺔ ﺣﻘﻴﻘ ﺔ 0.3/0.8 ﺣﻴﻨﺌ ﺬ ﻓ ﺎن اﻟﻨ ﺎﺗﺞ
ﺳ ﻴﻜﻮن 766.2 ﻟﻬ ﺬا اﻟﺴ ﺒﺐ أدﺧﻠ ﺖ ﻟﻐ ﺔ ++ Cأداة ﺑ ﺎﻗﻲ ا ﻟﻘﺴ ﻤﺔ % وﻳﺴ ﻤﻰ
Modulus Operatorوﻳﺴﺘﻌﻤﻞ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ:
3%7
ﺗﻌﻄﻲ اﻟﺠﻮاب 1 وﻫﻮ ﺑ ﺎﻗﻲ اﻟﻘﺴ ﻤﺔ اﻟﺼ ﺤﻴﺤﺔ 3/7 ، وﻣ ﻦ اﻟﺠ ﺪﻳﺮ ﺑﺎﻟ ﺬﻛﺮ أن ﻛ ﻼ ﻣ ﻦ
ﺑﺎﺳ ﻜﺎل وﻛﻮﺑ ﻮل ﺗﺴ ﺘﻌﻤﻼن ﻣﺜ ﻞ ﻫ ﺬه اﻟﻌﻤﻠﻴ ﺔ ، ﻓﻔ ﻲ ﺑﺎﺳ ﻜﺎل ﺗﻜﺘ ﺐ ﻫ ﺬه اﻟﻌﻤﻠﻴ ﺔ ﻋﻠ ﻰ
اﻟﻨﺤ ﻮ 3 ، 7 modوﻛﻠﻤ ﺔ MODﻫ ﻲ اﺧﺘﺼ ﺎر ، Modulusأﻣ ﺎ ﻓ ﻲ ﻟﻐ ﺔ ++C
ﻓﺘﺴﺘﻌﻤﻞ اﻷداة % ﻟﺘﻘﻮم ﺑﻬﺬا اﻟﻌﻤﻞ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻷدوات اﻷﺣﺎدﻳﺔ واﻟﺜﻨﺎﺋﻴﺔ Unary and Binary
Operators
ﺗﻌ ﺪ ﺟﻤﻴ ﻊ أدوات اﻟﺠﻤ ﻊ واﻟﻄ ﺮح واﻟﻀ ﺮب واﻟﻘﺴ ﻤﺔ وﺑ ﺎﻗﻲ اﻟﻘﺴ ﻤﺔ أدوات ﺛﻨﺎﺋﻴ ﺔ
binaryأي أﻧﻬﺎ ﺗﺄﺧﺬ )ﺗﺘﻌﺎﻣﻞ ﻣﻊ ( ﻗﻴﻤﺘﻴﻦ وﺗﻨ ﺘﺞ ﻗﻴﻤ ﺔ واﺣ ﺪة ، ﻓﻤ ﺜﻼ ﻧﺘﻴﺠ ﺔ 3*2 ﻫ ﻲ
اﻟﻘﻴﻤ ﺔ 6 وﻫﻨ ﺎك اﻷداة اﻷﺣﺎدﻳ ﺔ – ﻋﻨ ﺪﻣﺎ ﺗﺘﻌﺎﻣ ﻞ ﻣ ﻊ ﻗﻴﻤ ﺔ واﺣ ﺪ ﻓﻤ ﺜﻼ )2991-( ﺗﻤﺜ ﻞ
اﻹﺷﺎرة ا ﻟﺴ ﺎﻟﺒﻪ وﻫ ﻲ ﻫﻨ ﺎ أداة أﺣﺎدﻳ ﺔ ، Unaryواﻟﻌﻤﻠﻴ ﺔ ﻫﻨ ﺎ ﻟﻴﺴ ﺖ ﻋﻤﻠﻴ ﺔ ﻃ ﺮح ﻛﻤ ﺎ
ﻧﻌﻠﻢ.
اﻟﺰﻳﺎدة واﻟﻨﻘﺼﺎن Increment and Decrement
ﻣﻦ ﻣﺰاﻳﺎ ﻟﻐﺔ ++ Cأﻧﻬﺎ ﺗﺴﺘﻌﻤﻞ اﻷداﺗﻴﻦ اﻟﺤﺴﺎﺑﻴﺘﻴﻦ + + و - - ﻟﺰﻳﺎدة اﻟﻘﻴﻢ ﺑﻤﻘﺪار 1
أو إﻧﻘﺎﺻﻬﺎ ﺑﻤﻘﺪار 1 ، واﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻳﺒﻴﻦ ﻃﺮﻳﻘﺔ اﻻﺳﺘﻌﻤﺎل:
;++A
;++a
ﻣﻌﻨﺎه إﺿﺎﻓﺔ ﻗﻴﻤﺔ 1 إﻟﻰ aوﻳﻤﻜﻦ ﻛﺘﺎﺑﺘﻬﺎ ﺑﺼﻮره ﻣﻜﺎﻓﺌﺔ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ:-
;1+A=a
وﺑﺎﻟﻄﺮﻳﻘﺔ ﻧﻔﺴﻬﺎ ﻳﻤﻜﻦ إﻧﻘﺎص 1 ﻣﻦ ﻗﻴﻤﺔ aﻋﻠﻰ اﻟﻨﺤﻮ:-
;--a
أو
;--a
;1-A=a
وﻫﻮ ﻳﻜﺎﻓﺊ اﻟﺼﻮرة
ﻟﻜ ﻦ ﻫﻨ ﺎك ﻓﺮﻗ ﺎ ﻓ ﻲ ﺳ ﺮﻋﺔ اﻟﺘﻨﻔﻴ ﺬ ، ﻓ ﺎﻟﺘﻌﺒﻴﺮ ;++aأﺳ ﺮع ﻣ ﻦ اﻟﺘﻌﺒﻴ ﺮ ;1+ a=aوﻫ ﺬه
ﻫﻲ اﻟﻔﺎﺋﺪة ﻣﻦ ﺟﺮاء اﺳﺘﺨﺪام ﻣﺜﻞ ﻫﺬه اﻷدوات .
وﻣﻤ ﺎ ﻳﻨﺒﻐ ﻲ اﻟﺘﻨﺒﻴ ﻪ إﻟﻴ ﻪ ﻫﻨ ﺎ أن ﻫﻨ ﺎك ﻓﺮﻗ ﺎ ﺑ ﻴﻦ ++ aو ، ++aﺻ ﺤﻴﺢ أن ﻛ ﻼ ﻣ ﻦ
اﻟﺘﻌﺒﻴ ﺮﻳﻦ ﻳﺠﻤ ﻊ 1 إﻟ ﻰ ، aﻟﻜ ﻦ ﻋﻨ ﺪ اﺳ ﺘﻌﻤﺎل ++aﻓ ﻲ ﺗﻌﺒﻴ ﺮ ﻣ ﻦ اﻟﺘﻌ ﺎﺑﻴﺮ ، ﻓ ﺎن a
ﺗ ﺰداد ﻗﺒ ﻞ اﺳ ﺘﺨﺮاج ﻗﻴﻤ ﺔ اﻟﺘﻌﺒﻴ ﺮ ، ﺑﻴﻨﻤ ﺎ ﻓ ﻲ ﺣﺎﻟ ﺔ ++ aﺗﺴ ﺘﺨﺮج ﻗﻴﻤ ﺔ اﻟﺘﻌﺒﻴ ﺮ
ﺑﺎﺳ ﺘﻌﻤﺎل ﻗﻴﻤ ﺔ aاﻟﺤﺎﻟﻴ ﺔ ﻗﺒ ﻞ زﻳﺎدﺗﻬ ﺎ ﺑﻤﻘ ﺪار 1 ، وﺑﻌ ﺪ ذﻟ ﻚ ﺗ ﺘﻢ زﻳ ﺎدة aﺑﻤﻘ ﺪار 1 آي
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أن اﻟﻌﻤﻠﻴﺔ اﻷوﻟﻰ ﺟﻤﻊ ﺗﻘﺪﻳﻢ ، واﻟﺜﺎﻧﻴﺔ ﺟﻤ ﻊ ﺗ ﺄﺧﻴﺮ ، وﻳﻨﻄﺒ ﻖ ﻫ ﺬا اﻟﻜ ﻼم أﻳﻀ ﺎ ﻋﻠ ﻰ –
aو --. a
ﻣﺜﺎل:
;Int x,y,x
;0=X=y=x أوﻟﻴﺔ ﺟﻤﻊ 1 إﻟﻰ zﺗﺄﺗﻲ
;X=++y + ++z ﻣﺘﺎﺧﺮه إذ ﻳﺘﻢ ﺟﻤﻌﻬﺎ
أوﻻ إﻟﻰ x
;++X=y++ + z
;++X=++y + z
ﺟﻤﻊ 1 إﻟﻰ yﻣﺆﺟﻞ ﺑﻌﺪ
إﻋﻄﺎء ﻗﻴﻤﺘﻬﺎ اﻷوﻟﻰ إﻟﻰ
;X=y-- +--z x
ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﺗﻜﻮن 1=x=1 , z=1 , y
ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﺗﻜﻮن 2=x=2 , y=2 , z
ﻻن ، xﺗﺠﻤﻊ ﻗﻴﻤﺘﻲ z,yﻗﺒﻞ أن ﺗﺰداد ﻛﻞ
ﻣﻨﻬﻤﺎ ﺑﻤﻘﺪار 1
اﻵن 3=x=3 , y=3 , z
ﻻن xﺗﺠﻤﻊ yﺑﻌﺪ زﻳﺎدﺗﻬﺎ وﺗﺠﻤﻊ آﺧﺮ zﻗﺒﻞ أن
ﺗﺰداد 1
اﻵن 1=x=5 , y=2 , z
وﺑﺈﻣﻜﺎﻧﻚ ﻛﺘﺎﺑﺔ اﻟﺠﻤﻠﺘﻴﻦ:
Int x,y,z
0=X=y=z
ﻓﻲ ﺟﻤﻠﺔ واﺣﺪ ﻋﻠﻰ اﻟﻨﺤﻮ:
0=Int x=y=z
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أوﻟﻴﺔ اﻟﻌﻤﻠﻴﺎت ﻟﻸدوات اﻟﺤﺴﺎﺑﻴﺔ Precedence of
Arithmetic Operations
ﻳﻤﻜ ﻦ اﻟﻘ ﻮل أن أوﻟﻴ ﺔ ﺗﻨﻔﻴ ﺬ اﻟﻌﻤﻠﻴ ﺎت ﻛﻤ ﺎ ﻳﺠﺮﻳﻬ ﺎ ﻣﺘ ﺮﺟﻢ ++ Cﺑﺎﻟﻨﺴ ﺒﺔ ﻟ ﻸدوات
اﻟﺤﺴﺎﺑﻴﺔ ﻫﻲ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ:
اﻟﺰﻳﺎدة أو اﻟﻨﻘﺼﺎن
رﻗﻢ اﻷوﻟﻮﻳﺔ اﻷداة
1 ++ أو --
2 - اﻹﺷﺎرة اﻟﺴﺎﻟﺒﺔ
3 * أو / أو %
4 + أو - اﻟﻀﺮب أو اﻟﻘﺴﻤﺔ أو اﻟﺒﺎﻗﻲ
5 =
6 ++ أو -- )اﻟﻤﺘﺄﺧﺮة ﺑﻌﺪ اﻟﻌﺪد(
اﻟﺠﺪول٤-١ اﻟﺠﻤﻊ أو اﻟﻄﺮح
اﻟﻤﺴﺎواة
زﻳﺎدة أو ﻧﻘﺼﺎن ﺑﻤﻘﺪار 1
ﻣﻠﺤﻮﻇﺔ:
إذا ﺗﺴ ﺎوت أوﻟﻴﺘ ﺎن ﻣﺜ ﻞ اﻟﺠﻤ ﻊ واﻟﻄ ﺮح ﻓ ﻲ ﺗﻌﺒﻴ ﺮ ، ﻓﺘﻘ ﺪم اﻟﻌﻤﻠﻴ ﺔ اﻷﻗ ﺮب إﻟ ﻰ ﻳﺴ ﺎر
اﻟﺘﻌﺒﻴ ﺮ ، وﻋﻨ ﺪ اﺳ ﺘﻌﻤﺎل اﻷﻗ ﻮاس ﻷي ﺗﻌﺒﻴ ﺮ ﻓ ﺎن اﻷﻗ ﻮاس ﺗﺄﺧ ﺬ اﻷوﻟﻮﻳ ﺔ اﻷوﻟ ﻰ ﻓ ﻲ
اﻟﺘﻨﻔﻴﺬ ﻗﺒﻞ ) اﻟﺰﻳ ﺎدة أو اﻟﻨﻘﺼ ﺎن ( ، ﻛﻤ ﺎ ﻓ ﻲ ﻟﻐ ﺎت اﻟﺒﺮﻣﺠ ﺔ اﻷﺧ ﺮى ، واﻷﻣﺜﻠ ﺔ اﻵﺗﻴ ﺔ
ﺗﺒﻴﻦ ﻣﻔﻬﻮم اﻷوﻟﻮﻳﺔ ) اﻷﺳﺒﻘﻴﺔ (:-
X+y/z*a
ﻳﺄﺧﺬ ﺗﺴﻠﺴﻞ أوﻟﻮﻳﺎت ﻋﻤﻠﻴﺎﺗﻪ اﻟﺸﻜﻞ واﻟﺨﻄﻮات اﻟﺘﺎﻟﻴﺔ:-
١- اﻟﻌﻤﻠﻴﺔ اﻷوﻟﻰ: اﻟﻘﺴﻤﺔ y / z
٢- اﻟﻌﻤﻠﻴﺔ اﻟﺜﺎﻧﻴﺔ: )a * (y/z
٣- اﻟﻌﻤﻠﻴﺔ اﻟﺜﺎﻟﺜﺔ: ﺟﻤﻊ اﻟﻨﺎﺗﺞ ﻓﻲ اﻟﺨﻄﻮة 2 إﻟﻰ xﻓﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ:
X+ y/ z*z
ﻻﺣ ﻆ أﻧﻨ ﺎ ﺑ ﺪأﻧﺎ ﺑ ﺈﺟﺮاء اﻟﻌﻠﻤﻴ ﺎت اﻟﺤﺴ ﺎﺑﻴﺔ ﻣ ﻦ اﻟﻴﺴ ﺎر إﻟ ﻰ اﻟﻴﻤ ﻴﻦ ، وﺗﻌﻄ ﻰ أﻻ وﻟﻮﻳ ﻪ
ﻷﻳﺔ ﻋﻤﻠﻴﺔ ﺣﺴﺐ ﻗﺎﻋ ﺪة اﻷوﻟﻮﻳ ﺔ ، ﻓﺠ ﺎءت اﻟﻘﺴ ﻤﺔ ، ﻓ ﻲ اﻟﻤﺜ ﺎل ﻗﺒ ﻞ اﻟﺠﻤ ﻊ ، ﻛﻤ ﺎ ﺟ ﺎء
اﻟﻀﺮب ﺑﻌﺪ اﻟﻘﺴﻤﺔ وﺗﻼ ذﻟﻚ اﻟﺠﻤﻊ ﻛﺄﺧﺮ ﻋﻤﻠﻴﺔ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻷدوات اﻟﻌﻼﻗﻴﺔ واﻟﻤﻨﻄﻘﻴﺔ Relational and Logical
Operations
ﻳﺮﺟ ﻊ اﺳ ﻢ اﻷدوات اﻟﻌﻼﻗﻴ ﺔ إﻟ ﻰ اﻟﻌﻤﻠﻴ ﺎت اﻟﻤﺨﺘﺼ ﺔ ﺑ ﺎﻟﻘﻴﻢ اﻟﺘ ﻲ ﺑﻴﻨﻬ ﺎ ﻋﻼﻗ ﺎت وﻫ ﻮ
أﺟﺮاء ﻋﻤﻠﻴﺎت ﻣﻘﺎرﻧ ﺔ ﻣﻨﻄﻘﻴ ﺔ ﺑ ﻴﻦ ﻛﻤﻴ ﺎت ﺣﺴ ﺎﺑﻴﺔ أو رﻣﺰﻳ ﺔ ، وﺗﻜ ﻮن ﻧﺘﻴﺠﺘ ﻪ ﻣﻨﻄﻘﻴ ﺔ
وﻫ ﻲ أﻣ ﺎ ﻧﻌ ﻢ ) (trueأو ) ، (falseوﻳﻜﺜ ﺮ اﺳ ﺘﺨﺪام اﻟﺘﻌ ﺎﺑﻴﺮ اﻟﻤﻨﻄﻘﻴ ﺔ ﻓ ﻲ اﻟﺠﻤ ﻞ
اﻟﺸﺮﻃﻴﺔ ، واﻷﻣﺜﻠﺔ اﻵﺗﻴﺔ ﺗﺒﻴﻦ ﻟﻚ ﻣﺎ ﻫﻮ اﻟﺘﻌﺒﻴﺮ اﻟﻤﻨﻄﻘﻲ:
اﻟﺘﻌﺒﻴﺮ اﻟﻤﻨﻄﻘﻲ: x= =yﺟﻮاب أﻣﺎ ﻧﻌﻢ أو ﻻ .
واﻟﺘﻌﺒﻴﺮ اﻟﻤﻨﻄﻘﻲ: 0.001 > matrixﺟﻮاب أﻣﺎ ﻧﻌﻢ أو ﻻ .
وﻓ ﻲ ﻟﻐ ﺔ ++ Cﺗﻌﺎﻣ ﻞ اﻟﻨﺘﻴﺠ ﺔ ﻻ ) (falseﻋﻠ ﻰ أﻧﻬ ﺎ ﺻ ﻔﺮ )0( وﺗﺄﺧ ﺬ اﻟﻨﺘﻴﺠ ﺔ ﻧﻌ ﻢ
) (trueأﻳﺔ ﻗﻴﻤﺔ ﻏﻴﺮ اﻟﺼﻔﺮ واﻟﻤﺸﻬﻮر أﻧﻬﺎ )1( .
وﻳﺒﻴﻦ ﻟﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ اﻷدوات اﻟﻌﻼﻗﻴﺔ واﻟﻤﻨﻄﻘﻴﺔ:
اﻷدوات اﻟﻌﻼﻗﻴﺔ
ﻣﻌﻨﺎﻫﺎ اﻷداة
اﻛﺒﺮ ﻣﻦ >
اﺻﻐﺮ ﻣﻦ <
اﻛﺒﺮ ﻣﻦ أو ﻳﺴﺎوي =>
اﺻﻐﺮ ﻣﻦ أو ﻳﺴﺎوي =<
ﻳﺴﺎوي ==
ﻻ ﻳﺴﺎوي =!
اﻟﺠﺪول٥-١
اﻷدوات اﻟﻤﻨﻄﻘﻴﺔ
ﻣﻌﻨﺎﻫﺎ اﻷداة
) Andﺣﺮف اﻟﻌﻄﻒ و( &&
) Orﺣﺮف اﻟﻌﻄﻒ أو ( ||
) Notﻟﻠﻨﻔﻲ( أداة أﺣﺎدﻳﺔ unary !
اﻟﺠﺪول٦-١
إﻟﻴﻚ اﻵن ﻫﺬه اﻷﻣﺜﻠﺔ : اﻓﺮض أن ;3=int a=b
ﻓﺎن اﻟﺘﻌﺒﻴﺮ 3 < aﻧﺘﻴﺠﺘﻪ falseأي 0
3=< aﻧﺘﻴﺠﺘﻪ trueأي 1 اﻟﺘﻌﺒﻴﺮ
a>bﻧﺘﻴﺠﺘﻪ falseأي 0 اﻟﺘﻌﺒﻴﺮ
a!=bﻧﺘﻴﺠﺘﻪ falseأي 0 اﻟﺘﻌﺒﻴﺮ
a= = bﻧﺘﻴﺠﺘﻪ trueأي 1 اﻟﺘﻌﺒﻴﺮ
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺟﺪول اﻟﺼﺪق ﺳﻮف ﻧﺴﻮق ﻫﺬا اﻟﺠﺪول ﻛﺎﻟﺘﺎﻟﻲ:-
ﺟﺪول اﻟﻨﻔﻲ ﺟﺪول اﻟﺘﺨﻴﻴﺮ ﺟﺪول اﻟﺠﻤﻊ
)!x (not x )X||y (x or y )X && y (x and y
x !y x Y X||y X Y X&&y
F T F F F F F F
T F F T T F T F
T F T T F F
T T T T T T
اﻟﺠﺪول٧-١
!! اﻟﻤﺴﺎﻋﺪة ﻋﻠﻰ ﻓﻬﻢ ﺟﺪاول اﻟﺠﻤﻊ واﻟﺘﺨﻴﻴﺮ واﻟﻨﻔﻲ أﻋﻼه:-
ﺟﺪول اﻟﺠﻤﻊ:
ﺗﺨﻴﻞ أن Fﺗﻤﺜﻞ اﻟﺴﻢ ، وان Tﺗﻤﺜﻞ اﻟﻌﺴﻞ ، وﺑﻨﺎء ﻋﻠ ﻰ ذﻟ ﻚ ﻓ ﺎن F&&Tﺗﻌﻨ ﻲ ﺳ ﻤﺎ
ﻣ ﻊ ﺳ ﻢ واﻟﻨﺘﻴﺠ ﺔ ﺳ ﻢ أي ، Fﻛ ﺬﻟﻚ F&&Tﺗﻌﻨ ﻲ ﺧﻠ ﻂ اﻟﺴ ﻢ ﻣ ﻊ اﻟﻌﺴ ﻞ واﻟﻨﺘﻴﺠ ﺔ ﺳ ﻢ
أي ، Fوﻛ ﺬﻟﻚ T&&Fﻳﻨ ﺘﺞ ﻋﻨﻬ ﺎ Fأﻣ ﺎ T&&Tﻓﻬ ﻲ ﻋﺴ ﻞ ﻋﻠ ﻰ ﻋﺴ ﻞ أي أن
اﻟﻨﺘﻴﺠﺔ . T
ﺟﺪول اﻟﺘﺨﻴﻴﺮ:
F||Fﻓﺎﻟﻨﺘﻴﺠ ﺔ ﻣﻌﺮوﻓ ﻪ Fأﻣ ﺎ ﺑ ﻴﻦ اﻟﺴ ﻢ واﻟﻌﺴ ﻞ ﻓﻠ ﻮ ﺧﻴ ﺮت ﺑ ﻴﻦ اﻟﺴ ﻢ Fواﻟﺴ ﻢ F
F||Tﻓﺎﻟﻨﺘﻴﺠﺔ ﺳﻮف ﺗﻜﻮن ﺑﺎﻟﻄﺒﻊ ﻟﻠﻨﺠﺎة ﻋﺴﻞ ، Tوﻧﺘﻴﺠﺔ T||Tﻫﻲ ﻋﺴﻞ ...T
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻷدوات اﻟﺪﻗﻴﻘﺔ Bowties Operators
ﺗﺘﻤﻴ ﺰ ﻟﻐ ﺔ ++ Cﻋ ﻦ ﺳ ﺎﺋﺮ اﻟﻠﻐ ﺎت اﻟﺮاﻗﻴ ﺔ ﻣﺜ ﻞ ﻓﻴﺠ ﻮال ﺑﻴﺴ ﻚ وﺑﺎﺳ ﻜﺎل أﻧﻬ ﺎ ﺗﺴ ﺘﺨﺪم
أدوات دﻗﻴﻘ ﺔ ﻋﻠ ﻰ ﻣﺴ ﺘﻮى وﺣ ﺪة اﻟﺘﺨ ﺰﻳﻦ اﻷوﻟﻴ ﺔ ] [Bitواﻟﻤﺨﺘﺼ ﺮة ﻣ ﻦ Binary
*Digit
ﺳﻤﻴﺖ ﻫﺬه اﻷدوات ﺑﺎﻟﺪﻗﻴﻘﺔ أو أدوات )اﻟﺒ ﺖ( ﻷﻧﻬ ﺎ ﺗﺘﻌﺎﻣ ﻞ ﻣ ﻊ ] ) [bitوﺣ ﺪة اﻟﺘﺨ ﺰﻳﻦ
اﻷوﻟﻴﺔ( ﻣﺒﺎﺷﺮة ، ﻓﺤﺼ ﺎ ، وﺿ ﺒﻄﺎ ، وإزاﺣ ﺔ ، وﺗﺴ ﺘﻌﻤﻞ ﻫ ﺬه اﻷدوات ﻣ ﻊ اﻟﻤﻌﻄﻴ ﺎت
اﻟﺼﺤﻴﺤﺔ intواﻟﺮﻣﺰﻳﺔ charﻓﻘﻂ ، وﻻ ﺗﺴﺘﻌﻤﻞ ﻣﻊ ﻏﻴﺮﻫﺎ ﻣﻦ أﻧﻮاع اﻟﻤﻌﻄﻴﺎت..
واﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻳﺒﻴﻦ اﻷدوات اﻟﺪﻗﻴﻘﺔ ووﻇﻴﻔﺔ ﻛﻞ ﻣﻨﻬﺎ:
ﻋﻤﻠﻬﺎ اﻷداة
) (notآداه أﺣﺎدﻳﺔ ~
) (andﺣﺮف اﻟﻮاو )و( &
) (orﺣﺮف اﻟﻌﻄﻒ )أو( |
إزاﺣﺔ إﻟﻰ اﻟﻴﺴﺎر >>
إزاﺣﺔ إﻟﻰ اﻟﻴﻤﻴﻦ <<
)) (xorأو( اﻻﺳﺘﺜﻨﺎﺋﻴﺔ ^
اﻟﺠﺪول٨-١
وﻛﻐﻴﺮﻫﺎ ﻣﻦ اﻷدوات ، ﻓﺎن اﻷدوات اﻟﺪﻗﻴﻘﺔ ﺗﺘﺒﻊ ﻗﻮاﻋﺪ اﻷوﻟﻴﺔ وﺣﺴﺐ اﻟﺘﺮﺗﻴﺐ
اﻟﺘﺎﻟﻲ:
أوﻟﻮﻳﺘﻬﺎ اﻷداة
اﻷوﻟﻰ ~
اﻟﺜﺎﻧﻴﺔ <<أو>>
اﻟﺜﺎﻟﺜﺔ &
اﻟﺮاﺑﻌﺔ ^
اﻟﺨﺎﻣﺴﺔ |
اﻟﺠﺪول٩-١
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أداة اﻟﻨﻔﻲ )~(
ﺗﻌﻤﻞ ﻫﺬه اﻷداة ﻋﻠ ﻰ إﺑ ﺪال اﻟﺼ ﻔﺮ )0( ﺑﻮاﺣ ﺪ)1( أو اﻟﻌﻜ ﺲ ، وﻣﻌﻨ ﻰ ﻫ ﺬا أﻧﻬ ﺎ ﺗﻀ ﻊ
0 ﻣﻜ ﺎن 1 وﻛ ﺬﻟﻚ 1 ﻣﻜ ﺎن 0 ، ﻓﻤ ﺜﻼ ﻟ ﻮ ﻛ ﺎن ﻟ ﺪﻳﻨﺎ ﻗﻴﻤ ﺔ xﻣﻤﺜﻠ ﺔ ﻓ ﻲ اﻟﻨﻈ ﺎم اﻟﻌ ﺪدي
اﻟﺜﻨﺎﺋﻲ اﻟﺘﺎﻟﻲ )ﻣﻦ 8 ﺑﺖ (:-
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ﻓﻲ ﺟﻤﻴﻊ ﻣﻜﻮﻧﺎت ﻣﻦ اﻟﺒﺖ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أداة اﻟﺠﻤﻊ &
اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻳﻮﺿﺢ ﻛﻴﻔﻴﺔ ﺟﻤﻊ اﻟﻘﻴﻢ ﻋﻨﺪ ﺗﻤﺜﻴﻠﻬﺎ ﺑﺎﻟﻨﻈﺎم اﻟﻌﺪدي اﻟﺜﻨﺎﺋﻲ:
اﻟﻌﻤﻠﻴﺔ ;x&y
0 0 0 1 1 0 1 0 ﻗﻴﻤﺔ xﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ
0 0 0 0 1 0 0 1
ﻗﻴﻤﺔ yﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ
0 0 0 0 1 0 0 0
اﻟﻨﺎﺗﺞ ;X&Y
ﺣﻴﺚ ﻳﺠﻤﻊ 0+0 وﻳﻌﻄﻲ 0 ، وﻳﺠﻤﻊ 1+0 ﻟﻴﻌﻄﻲ 0 وﻳﺠﻤﻊ 1+1 وﻳﻌﻄﻲ 1
) T Ù T&T F Ù F&T FÙF&Fاﻧﻈﺮ ﺟﺪاول اﻟﺼﺪق اﻟﺴﺎﺑﻘﺔ(
أداة اﻻﺧﺘﻴﺎر|
إذا أردﻧﺎ اﺳﺘﻌﻤﺎل أداة اﻻﺧﺘﻴﺎر ﻣﻊ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻟﻘﻴﻤﺘﻲ Xو yﻋﻠﻰ اﻟﻨﺤﻮ ;x|y
0 0 0 1 1 0 1 0 x
0 0 0 0 1 0 0 1
y
0 0 0 1 1 0 1 1
اﻟﻨﺎﺗﺞ ;x|y
ﺣﻴﺚ اﻻﺧﺘﻴﺎر ﺑﻴﻦ 0 و1 ﻫﻮ 1 ، واﻻﺧﺘﻴﺎر ﺑﻴﻦ 1 و1 ﻫﻮ 1 ، وﺑﻴﻦ 0 و0 ﻫﻮ 0 .
) T Ù T|F T Ù T|T T Ù F|Tاﻧﻈﺮ ﺟﺪاول اﻟﺼﺪق اﻟﺴﺎﺑﻘﺔ (
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أداة اﻻﺧﺘﻴﺎر اﻻﺳﺘﺜﻨﺎﺋﻲ ^
ﺧﺬ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻧﻔﺴﺔ ﻟﺘﺮى ﻛﻴﻒ ﺗﺆﺛﺮ ﻫﺬه اﻷداة
0 0 0 1 1 0 1 0 x
0 0 0 0 1 0 0 1
y
0 0 0 1 0 0 1 1
اﻟﻨﺎﺗﺞ ;x^y
ﻻﺣﻆ أن اﻻﺧﺘﻴﺎر ﺑﻴﻦ 0 و0 ﻧﺘﻴﺠﺘ ﻪ 0 ، واﻻﺧﺘﻴ ﺎر ﺑ ﻴﻦ 1 و0 ﻧﺘﻴﺠﺘ ﻪ 1 ، وﺑ ﻴﻦ 1 و1
ﻧﺘﻴﺠﺘ ﻪ 0 ، أن أداة اﻻﺧﺘﻴ ﺎر اﻻﺳ ﺘﺜﻨﺎﺋﻲ ^ ) (XORﺗﺨﺘﻠ ﻒ ﻋ ﻦ أداة اﻻﺧﺘﻴ ﺎر )| (OR
ﻓ ﻲ أن اﻷوﻟ ﻰ ﺣﺎﻟ ﺔ ﺧﺎﺻ ﺔ ﻣ ﻦ اﻟﺜﺎﻧﻴ ﺔ إذ ﺗﻜ ﻮن ﻧﺘﻴﺠﺘﻬ ﺎ (1) trueﻋﻨ ﺪﻣﺎ ﻳﻜ ﻮن أﺣ ﺪ
ﻃﺮﻓ ﻲ اﻻﺧﺘﻴ ﺎر xأو yﻧﺘﻴﺠﺘ ﻪ ، trueوﻣ ﺎ ﻋ ﺪا ذﻟ ﻚ ﻓﻨﺘﻴﺠﺘﻬ ﺎ داﺋﻤ ﺎ ، (0) falseﻛﻤ ﺎ
ﻻﺣﻈﺖ ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ، أﻣﺎ ﻓﻲ ﺣﺎﻟﺔ اﻻﺧﺘﻴﺎر اﻟﻌﺎم ) (ORﻓﺎن ﻧﺘﻴﺠﺔ 1|1 ﻫﻲ 1.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أدوات اﻹزاﺣﺔ >> و <<
ﻗﺪ ﺗﺒﺪو أدوات اﻹزاﺣﺔ ﻏﺮﻳﺒﺔ ﻋﻠﻰ اﻟﻤﺒﺮﻣﺞ اﻟﺬي ﻳﺴ ﺘﺨﺪم ﻟﻐ ﺎت أﺧ ﺮى ﻣﺜ ﻞ Basicو
.. Pascalاﻟ ـﺦ . ﺣﻴ ﺚ ﻳﻨ ﺘﺞ ﻋ ﻦ اﺳ ﺘﻌﻤﺎل إﺣ ﺪاﻫﻤﺎ إزاﺣ ﺔ ﻗﻴﻤ ﺔ اﻟﻤﺘﻐﻴ ﺮ اﻟﺼ ﺤﻴﺢ
ﺑﺎﻟﻨﻈ ﺎم اﻟﺜﻨ ﺎﺋﻲ )ﺑﺎﻟﺒ ﺖ( ﻳﻤﻴﻨ ﺎ أو ﻳﺴ ﺎرا ﻋ ﺪدا ﻣ ﻦ اﻟﺨﺎﻧ ﺎت ﺣﺴ ﺐ اﻟﻄﻠ ﺐ ، وﺗﻤ ﻼ
اﻟﺨﺎﻧﺎت اﻟﻤﻔﺮﻏﺔ ﻣﻦ اﻟﺠﻬﺔ اﻟﻤﻮﺟﺒﺔ أﺻﻔﺎرا ، وﻣﻦ اﻟﺠﻬﺔ اﻟﺴﺎﻟﺒﺔ ﺗﻤﻼ آﺣﺎدا.
واﻷﻣﺜﻠﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻮﺿﺢ ﻃﺮﻳﻘﺔ اﻻﺳﺘﻌﻤﺎل.
ﻣﺜﺎل:
اﻟﺠﻤﻠﺔ ;2>> xﻋﻨﺪ ﺗﻨﻔﻴﺬﻫﺎ ﻋﻠﻰ ﻗﻴﻤ ﺔ ) xوﻫ ﻲ 32 ﺑﺎﻟﻨﻈ ﺎم اﻟﻌﺸ ﺮي( ﺑﺎﻟﻨﻈ ﺎم اﻟﺜﻨ ﺎﺋﻲ
ﻓﺎن اﻟﻌﻤﻠﻴﺔ ﺗﺘﻢ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ:
0 0 0 1 0 1 1 1 x
0 0 0 0 0 1 0 1 ;2>>x
اﻟﻨﺘﻴﺠﺔ ﻣﻦ اﻹزاﺣﺔ ﺑﻤﻘﺪار ﺧﺎﻧﺘﻴﻦ )٢ ﺑﺖ ( ﻟﻠﻴﻤﻴﻦ ﺗﺼﺒﺢ ﻗﻴﻤﺘﻬﺎ :
5 ﺑﺎﻟﻨﻈﺎم اﻟﻌﺸﺮي.
وﻫﺬا ﻳﻌﻨﻲ أن ;2>>32 ﺗﻌﻄﻲ اﻟﻨﺘﻴﺠﺔ 5 .
ﺣﻴﺚ 32 اﻟﻘﻴﻤﺔ اﻟﻤﺰاﺣﺔ.
2 ﻋﺪد ﺧﺎﻧﺎت اﻹزاﺣﺔ اﻟﻤﻄﻠﻮﺑﺔ ﻟﻠﻴﻤﻴﻦ.
ﻻﺣﻆ أن اﻟﺨﺎﻧﺘﻴﻦ اﻟﻤﻔﺮﻏﺘﻴﻦ ﺑﺴﺒﺐ اﻹزاﺣﺔ ﻟﻠﻴﻤﻴﻦ ﻗﺪ ﻣﻠﺌﺘﺎ ﺑﻤﺼﻔﺮﻳﻦ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل ﻋﻠﻰ إزاﺣﺔ ﻗﻴﻤﺔ ﺳﺎﻟﺒﺔ:
;2<<05 - = Z
0 0 0 1 0 1 1 1 Z
0 0 0 1 0 1 1 1 3<<Z
إزاﺣﺔ )٢ﺑﺖ( ﻟﻠﻴﺴﺎر.
اﻟﺠﺪﻳ ﺪ ﻓ ﻲ ﻫ ﺬا اﻟﻤﺜ ﺎل أن اﻹزاﺣ ﺔ ﻟﻘﻴﻤ ﺔ ﺳ ﺎﻟﺒﺔ ﻳﻨ ﺘﺞ ﻋ ﻦ ﻛ ﻞ ﺧﺎﻧ ﺔ ﻣﻔﺮﻏ ﺔ اﻟﻘﻴﻤ ﺔ 1
وﻟﻴﺲ 0 ﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أدوات أﺧﺮى ﻟﻢ ﺗﺬﻛﺮ Other Operations
اﻷداة اﻟﺸﺮﻃﻴﺔ the conditional operator
وﻫﺬه اﻷداة ﺗﺘﻤﻴﺰ ﺑﻬﺎ ﻟﻐﺔ ++ cﻋﻦ ﻏﻴﺮﻫ ﺎ ، إذ ﺗﺤ ﻞ ﻣﺤ ﻞ ﺟﻤﻠ ﺔ ﺷ ﺮﻃﻴﺔ ﻣﺸ ﻬﻮرة ﻓ ﻲ
ﺑﻴﺴ ﻚ وﻓ ﻮرﺗﺮان وﺑﺎﺳ ﻜﺎل وﻫ ﻲ ، if-then-elseوﺗﻌﺘﺒ ﺮ ﻫ ﺬه اﻷداة أداة ﺛﻼﺛﻴ ﺔ ﻷﻧﻬ ﺎ
ﺗﺘﻌﺎﻣﻞ ﻣﻊ ﺛﻼث ﻛﻤﻴﺎت ﺣﺴﺐ ﺻﻴﻐﺘﻬﺎ اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ:
3Expression1 ? Expression2: Expression
ﻓﻠﻮ ﻛﺎن ﻟﺪﻳﻨﺎ اﻟﺠﻤﻠﺔ اﻟﺸﺮﻃﻴﺔ اﻟﺘﺎﻟﻴﺔ ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل:
)If (b<c
;A=b
Else
A=c
ﻣﻌﻨﺎﻫ ﺎ: اﻧ ﻪ إذا ﺗﺤﻘ ﻖ اﻟﺸ ﺮط ) (b<cﻓﻴﻨﻔ ﺬ اﻟﺴ ﻄﺮ ، a=bوإﻻ ﻓ ﺎن a=cوﺑﺎﺳ ﺘﻌﻤﺎل
اﻷداة اﻟﺸ ﺮﻃﻴﺔ ؟ ﻳﻤﻜﻨﻨ ﺎ أن ﻧﻜﺘ ﺐ ﺑ ﺪﻻ ﻣ ﻦ اﻟﺠﻤﻠ ﺔ اﻟﺸ ﺮﻃﻴﺔ ﻛﻠﻬ ﺎ اﻟﺠﻤﻠ ﺔ اﻟﻤﺨﺘﺼ ﺮة
اﻟﺘﺎﻟﻴﺔ:
A=(b<c) ? b:c إذا ﺗﺤﻘﻖ اﻟﺸﺮط ﻓﺎن
A=b
A=c
إذا ﻟﻢ ﻳﺘﺤﻘﻖ اﻟﺸﺮط
ﻓﺎن
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أداة اﻟﻌﻨﻮﻧﺔ )&( و )*( the & and * Pointer
Operator
اﻟﻤﺆﺷ ﺮ Pointerﻫ ﻮ ﻋﻨ ﻮان اﻟﻤﺘﻐﻴ ﺮ اﻟﻤﺆﺷ ﺮ ﻓ ﻲ اﻟ ﺬاﻛﺮة ، وﻟﻠﻤﺘﻐﻴ ﺮ اﻟﻤﺆﺷ ﺮ ﻓﻮاﺋ ﺪ
ﺟﻤ ﺔ ﻓ ﻲ ﻋﻤﻠﻴ ﺔ اﻟﺒﺮﻣﺠ ﺔ ﻧ ﺬﻛﺮﻫﺎ ﻋﻨ ﺪ اﻟﺘﻌ ﺮض ﻟﻬ ﺎ ﻓ ﻲ اﻟﻔﺼ ﻮل اﻟﻘﺎدﻣ ﺔ ﺑ ﺈذن اﷲ ،
وﻳﻜﺜ ﺮ اﺳ ﺘﻌﻤﺎل ﻫ ﺎﺗﻴﻦ اﻟ ﺪاﻟﺘﻴﻦ ﻣ ﻊ اﻟﻤﺘﻐﻴ ﺮات اﻟﻤﺆﺷ ﺮة اﻟﻤﺤﺠ ﻮزة ﻟﻬ ﺎ ﻓ ﻲ أﻣ ﺎﻛﻦ
ﺧﺎﺻﺔ ﻓﻲ اﻟﺬاﻛﺮة .
وﺗﻌﺪ اﻷداة & ﻫﻨﺎ أداة أﺣﺎدﻳﺔ ﺗﺘﻌﺎﻣﻞ ﻣﻊ ﻛﻤﻴﺔ واﺣﺪة ﻓﻘ ﻂ ، ﺣﻴ ﺚ ﺗﻘ ﻮم ﺑﺈﻋﻄ ﺎء ﻋﻨ ﻮان
اﻟﻄﺮف اﻷﻳﻤﻦ ﻟﻠﻤﻌﺎدﻟﺔ ، ﻟﻠﻄﺮف اﻷﻳﺴﺮ ﻣﻨﻬﺎ ، ﻓﻤﺜﻼ اﻟﻌﻤﻠﻴﺔ:
;X=&y
ﺗﻌﻄﻲ ﻋﻨﻮان yﻓﻲ اﻟﺬاﻛﺮة ، ووﺿﻌﻪ ﻓﻲ ﻣﺨ ﺰن ، xوﻫ ﺬه اﻟﺠﻤﻠ ﺔ ﺗﺨﺘﻠ ﻒ ﻃﺒﻌ ﺎ ﻋ ﻦ
اﻟﺠﻤﻠﺔ اﻟﺤﺴ ﺎﺑﻴﺔ x=yاﻟﺘ ﻲ ﻣﻌﻨﺎﻫ ﺎ وﺿ ﻊ ﻗﻴﻤ ﺔ yﻓ ﻲ ﻣﺨ ﺰن xأﻣ ﺎ ﻋﻨ ﺪ اﺳ ﺘﻌﻤﺎل &
ﻗﺒ ﻞ yﻓﻤﻌﻨﺎﻫ ﺎ إﻋﻄ ﺎء ﻋﻨ ﻮان ﻣﺨ ﺰن yﻓ ﻲ اﻟ ﺬاﻛﺮة ﻓﻘ ﻂ ﻟﻠﻤﺘﻐﻴ ﺮ ، xوﻟ ﻴﺲ ﻗﻴﻤ ﺔ y
ﻓﻠﻮ ﻛﺎﻧﺖ 01= ، yورﻗﻢ )ﻋﻨﻮان( ﻣﻮﺿ ﻌﻬﺎ ﻓ ﻲ اﻟ ﺬاﻛﺮة ﻫ ﻮ 021 ، ﻓ ﺎن xﺗﺄﺧ ﺬ ﻗﻴﻤ ﺔ
021 ﻋﻨ ﺪ اﺳ ﺘﻌﻤﺎﻟﻨﺎ & ﻣ ﻊ yوﺑﺎﻟﻨﺴ ﺒﺔ ﻟ ﻸداة اﻟﺜﺎﻧﻴ ﺔ * ﻓﻬ ﻲ أداة أﺣﺎدﻳ ﺔ أﻳﻀ ﺎ ،
وﻣﻜﻤﻠﺔ ﻟﻸداة & ، وﻟﺬﻟﻚ ﻟﻮ ﻛﺎن ﻟﺪﻳﻨﺎ اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﻴﺔ اﻟﺘﻲ ﺗﺴﺘﻌﻤﻞ اﻷداة * .
;S=*x
ﻓﺎﻧﻪ ﻳﻔﻬ ﻢ ﻣﻨﻬ ﺎ أن xﺗﺤ ﻮى ﻋﻨ ﻮان )ﻣﻮﻗ ﻊ( اﻟﻤﺘﻐﻴ ﺮ yﻓ ﻲ اﻟ ﺬاﻛﺮة ، وان ﻫ ﺬه اﻟﺠﻤﻠ ﺔ
ﺗﻀﻊ ﻓﻲ ﻣﺨﺰن sﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ، ﺻ ﺎﺣﺐ اﻟﻤﺨ ﺰن اﻷﺻ ﻞ ، آي ﻗﻴﻤ ﺔ yوﻫ ﻲ 01 ﻛﻤ ﺎ
ﻓ ﻲ اﻟﻤﺜ ﺎل اﻟﺴ ﺎﺑﻖ ، وﺑﺎﻟﺘ ﺎﻟﻲ ﻓ ﺎن ﻗﻴﻤ ﺔ 01 ﺗﺨ ﺰن ﻓ ﻲ ﻣﺨ ﺰن sﻓ ﻲ اﻟﻤﻮﻗ ﻊ )اﻟﻌﻨ ﻮان(
021 ﻟ ﺬﻟﻚ ﻧ ﺮى أن ﺟﻤﻠ ﺔ x=*&yﺗﻜﺎﻓﺌﻬ ﺎ اﻟﺠﻤﻠ ﺔ x=yوﻫ ﺬا ﻳﻌﻨ ﻲ أن اﻷداﺗ ﻴﻦ
ﺗﻌﻤﻼن وﻛﺄن اﻟﻮاﺣﺪة ﻣﻌﻜﻮﺳﺔ ﻟﻸﺧﺮى
وﻣﻤ ﺎ ﻳﺠ ﺐ اﻻﻧﺘﺒ ﺎه إﻟﻴ ﻪ ، أن اﻷداة * ﺗﺴ ﺘﺨﺪم أﻳﻀ ﺎ ﻟﻌﻤﻠﻴ ﺎت اﻟﻀ ﺮب اﻟﺤﺴ ﺎﺑﻲ ﻛﻤ ﺎ
ﺗﺴ ﺘﻌﻤﻞ اﻷداة & ﻛ ﺄداة ANDدﻗﻴﻘ ﺔ ، وﻟ ﺬا ﻻ ﻳﻠﺘ ﺒﺲ ﻋﻠﻴ ﻚ اﻷﻣ ﺮ ﺑ ﻴﻦ اﻻﺳ ﺘﻌﻤﺎﻟﻴﻦ
اﻟﻤﺨﺘﻠﻔﻴﻦ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أداة ﺗﻌﻴﻴﻦ اﻟﻄﻮل sizeof
ﺗﻌ ﺪ ﻫ ﺬه اﻷداة أداة أﺣﺎدﻳ ﺔ ) ، (unaryوﺗﺴ ﺘﻌﻤﻞ ﻟﺘﻌﻴ ﻴﻦ ﻃ ﻮل اﻟﻤﺘﻐﻴ ﺮات ) ﺑﺎﻟﺒﺎﻳ ﺖ( ،
وﺗﺨﺘﻠ ﻒ أﻃ ﻮال اﻟﻤﺘﻐﻴ ﺮات ﺣﺴ ﺐ أﻧﻮاﻋﻬ ﺎ ، وﻟ ﺬا ﻃﻠ ﺐ ﺗﻌﻴ ﻴﻦ ﻃ ﻮل ﻣﺘﻐﻴ ﺮ ﺑﺎﺳ ﺘﻌﻤﺎل
، sizeofﻳﻨﺒﻐﻲ ذﻛﺮ ﻧﻮع ﻫﺬا اﻟﻤﺘﻐﻴﺮ ﺑﻴﻦ ﻗﻮﺳﻲ ،sizeofﻓﻤﺜﻼ:
;Int n
;)N=sizeof (n
ﺣﻴﺚ ﺳﺘﻜﻮن ﻧﺘﻴﺠ ﺔ nﻫﻨ ﺎ ﺗﺴ ﺎوي 2 ﺑﺎﻳ ﺖ ، ﻫ ﻲ ﻃ ﻮل اﻟﻤﺘﻐﻴ ﺮ nاﻟﺼ ﺤﻴﺢ ) (intﻻن
ﻃﻮل اﻟﺼﺤﻴﺢ ﻋﺎدة ﻫﻮ 2 ﺑﺎﻳﺖ ، وﻃﻮل اﻟﺤﻘﻴﻘﻲ 4 ﺑﺎﻳﺖ ، ﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ:
;Float x
;)Z=sizeof (x
ﺣﻴﺚ ﺳﺘﻜﻮن ﻧﺘﻴﺠﺔ zﻫﻲ 4 ﺑﺎﻳﺖ ، وﻫﻲ ﻃﻮل xاﻟﺤﻘﻴﻘﻲ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﻔﺎﺻﻠﺔ ),( ﻛﺄداة The Comma Operator
وﻫﻲ أداة اﺳﺘﺜﻨﺎﺋﻴﺔ ) (binaryوﺗﺤﺘﻞ اﻷوﻟﻮﻳ ﺔ اﻷﺧﻴ ﺮة ﻓ ﻲ ﺳ ﻠﻢ اﻷداة اﻟﻤﺨﺘﻠﻔ ﺔ وﺗﺄﺧ ﺬ
اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ:
2Experssion1, Experssion
ﻓﻌﻨﺪﻣﺎ ﺗﻔﺼﻞ ﻓﺎﺻﻠﺔ ﺑﻴﻦ ﺗﻌﺒﻴﺮﻳﻦ ﻓﺎن ﺗﺴﻠﺴﻞ اﻟﻌﻤﻠﻴﺎت ﻳﺄﺧﺬ اﻟﺘﺮﺗﻴﺐ اﻟﺘﺎﻟﻲ:
١- ﺗﺴﺘﺨﺮج ﻗﻴﻤﺔ اﻟﺘﻌﺒﻴﺮ اﻷول ) ﻋﻠﻲ ﻳﺴﺎر اﻟﻔﺎﺻﻠﺔ ( ﺛﻢ ﺗﻌﻄﻰ ﻟﻠﺘﻌﺒﻴﺮ اﻟﺜﺎﻧﻲ.
٢- ﺗﺴ ﺘﺨﺮج ﻗﻴﻤ ﺔ اﻟﺘﻌﺒﻴ ﺮ اﻟﺜ ﺎﻧﻲ ) ﻋﻠ ﻲ ﻳﻤ ﻴﻦ اﻟﻔﺎﺻ ﻠﺔ ( ﻛﻘﻴﻤ ﺔ ﻧﻬﺎﺋﻴ ﺔ ﻟﻠﺘﻌﺒﻴ ﺮ ﻛﻠ ﻪ
ﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ:
;)1+A=(b=2,b
ﺣﻴ ﺚ ﻳﻌﻄ ﻰ اﻟﻤﺘﻐﻴ ﺮ bﻗﻴﻤ ﺔ 2 ﻓ ﻲ اﻟﺘﻌﺒﻴ ﺮ اﻷول ) ﻳﺴ ﺎر اﻟﻔﺎﺻ ﻠﺔ( ، ﺛ ﻢ وﺿ ﻊ ﻫ ﺬه
اﻟﻘﻴﻤﺔ ﻓﻲ bاﻷﺧﺮى ﻓ ﻲ اﻟﺘﻌﺒﻴ ﺮ اﻟﺜ ﺎﻧﻲ ) ﻳﻤ ﻴﻦ اﻟﻔﺎﺻ ﻠﺔ( ، ﻓﺘﺼ ﺒﺢ ﻗﻴﻤ ﺔ اﻟﺘﻌﺒﻴ ﺮ ﻋﻠ ﻰ
اﻟﻴﻤﻴﻦ )1+ (bﺗﺴﺎوي 3 وﺗﻜﻮن ﻫﺬه اﻟﻘﻴﻤﺔ ﻧﺘﻴﺠﺔ اﻟﺘﻌﺒﻴﺮﻳﻦ اﻟﻨﻬﺎﺋﻴﺔ .
ﻣﺜﺎل آﺧﺮ:
;8=B
;)A=(b=b-4,12/b
ﻓ ﻲ ﻫ ﺬا اﻟﻤﺜ ﺎل ﻳ ﺘﻢ إﻋﻄ ﺎء bاﻟﻘﻴﻤ ﺔ 8 أوﻻ ، ﺛ ﻢ ﻋﻨ ﺪ ﺗﻨﻔﻴ ﺬ اﻟﺴ ﻄﺮ اﻟﺜ ﺎﻧﻲ ، ﻳﻌﻄ ﻲ b
ﻓ ﻲ اﻟﺘﻌﺒﻴ ﺮ اﻷول داﺧ ﻞ اﻟﻘﻮﺳ ﻴﻦ اﻟﻘﻴﻤ ﺔ )4- (bآي )4-8( ، وﺗﺴ ﺎوي 4 ، وﻫ ﺬه
ﺗﻌﻄ ﻰ ﻟﻠﺘﻌﺒﻴ ﺮ اﻷﻳﻤ ﻦ ، ﺣﻴ ﺚ ﺗ ﺘﻢ اﻟﻘﺴ ﻤﺔ ) (12/bآي )4/21( ﻓﺘﺼ ﺒﺢ ﻧﺘﻴﺠ ﺔ اﻟﺘﻌﺒﻴ ﺮ
ﻛﻠﻪ 3 ، اﻟﺘﻲ ﺗﻌﻄﻲ ﺑﺎﻟﺘﺎﻟﻲ ﻟﻠﻤﺘﻐﻴﺮ . a
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺟﻤﻞ اﻟﺘﻌﺮﻳﻒ
ﺟﻤﻞ اﻟﺘﻌﺮﻳﻒ ﻫﻲ ﺟﻤﻞ ﺗﻘﻮم ﺑﺘﻌﺮﻳﻒ اﻟﻘﻴﻢ.
ﻣﺜﺎل:
;Int a
ﻳﻘﺎﺑﻞ ﻫﺬه اﻟﺠﻤﻠﺔ ﻓﻲ ﻓﻴﺠﻮال ﺑﻴﺴﻚ
Dim a as integer
وﺗﻘﻮم ﺑﺤﺠﺰ ﻣﻜﺎن ﻓﻲ اﻟﺬاﻛﺮة اﻟﻤﺸﺎر إﻟﻴﻪ ، ﺑﺎﻻﺳﻢ aﻟﺘﺨﺰﻳﻦ ﻗﻴﻤﺔ ﻋﺪدﻳﺔ ﺻﺤﻴﺤﺔ.
أﻧﻮاع اﻟﺒﻴﺎﻧﺎت اﻟﻤﻤﻜﻦ ﺗﺨﺰﻳﻨﻬﺎ ﻓﻲ اﻟﺬاﻛﺮة اﻟﻤﺴﺘﺨﺪﻣﺔ ﻟـ ++C
١. charﻟﺘﺨﺰﻳﻦ رﻣﺰ واﺣﺪ ﻓﻘﻂ.
٢. intﻟﺘﺨﺰﻳﻦ ﻋﺪد ﺻﺤﻴﺢ.
٣. floatﻟﺘﺨﺰﻳﻦ ﻋﺪد ﺣﻘﻴﻘﻲ.
٤. doubleﻟﺘﺨﺰﻳﻦ ﻋﺪد ﺣﻘﻴﻘﻲ ﻛﺒﻴﺮ.
٥. voidﻟﺘﺨﺰﻳﻦ ﺑﻴﺎﻧﺎت ﺧﺎﻟﻴﺔ.
أن ﻣﻌﺮﻓ ﺔ أﻧ ﻮاع اﻟﺒﻴﺎﻧ ﺎت ، وﻛﻴﻔﻴ ﺔ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ، ﺗﻌ ﺪ ﺿ ﺮورﻳﺔ ﻟﻔﻬ ﻢ ﻟﻐ ﺔ ++c
ﻓﻼﺳﺘﻌﻤﺎل اﻟﻤﺘﻐﻴﺮات ، ﻣ ﺜﻼ ، ﻧﺤﺘ ﺎج أن ﻧﻌﻠ ﻦ ﻓ ﻲ ﺑﺪاﻳ ﺔ ﻛ ﻞ ﺑﺮﻧ ﺎﻣﺞ ، أو ﺑﺪاﻳ ﺔ اﻟ ﺪوال
ﻋ ﻦ أﻧ ﻮاع ﻫ ﺬه اﻟﻤﺘﻐﻴ ﺮات ، وﻳ ﺘﻢ اﻟﺘﻌﺎﻣ ﻞ ﻣﻌﻬ ﺎ ، ﺧ ﻼل اﻟﺒﺮﻧ ﺎﻣﺞ ، ﻓ ﻲ ﺿ ﻮء أﻧ ﻮاع
ﻣﻌﻄﻴﺎﺗﻬﺎ ﻓﻤﺜﻼ اﻹﻋﻼن ﻋﻦ اﻟﺘﺎﻟﻴﺔ:
;Int a,b,x
ﺗﺨﺒ ﺮ ﻣﺘ ﺮﺟﻢ ++ cأن ﻳﺘﻌﺎﻣ ﻞ ﻣ ﻊ ﻫ ﺬه اﻟﻤﺘﻐﻴ ﺮات ، ﻋﻠ ﻰ أﻧﻬ ﺎ ﻣﺘﻐﻴ ﺮات ﺻ ﺤﻴﺤﺔ
وﻛﺬﻟﻚ ﺟﻤﻠﺔ اﻹﻋﻼن اﻟﺘﺎﻟﻴﺔ:
;Float m,y
ﺗﺨﺒﺮ ﻣﺘﺮﺟﻢ ++ (C++ compiler) cأن ﻫﺬه اﻟﻤﺘﻐﻴﺮات ﻣﻦ اﻟﻨﻮع اﻟﺤﻘﻴﻘﻲ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﺜﻮاﺑﺖ اﻟﺮﻣﺰﻳﺔ ذات اﻟﺸﺮﻃﺔ اﻟﻤﻌﻜﻮﺳﺔ
ﺣﻴ ﺚ أﻧﻨ ﺎ ﻻ ﻧﺴ ﺘﻄﻴﻊ اﺳ ﺘﻌﻤﺎل ﺑﻌ ﺾ اﻟﺮﻣ ﻮز اﻟﻤﻮﺟ ﻮدة ﻓ ﻲ ﻟﻮﺣ ﺔ ﻣﻔ ﺎﺗﻴﺢ اﻟﺤﺎﺳ ﺐ
ﻛﺜﻮاﺑ ﺖ رﻣﺰﻳ ﺔ ، ﻓﻘ ﺪ اﺳ ﺘﺤﺪث ﻟﻐ ﺔ ++ cﺷ ﻔﺮات رﻣﺰﻳ ﺔ ﺧﺎﺻ ﺔ ﺗﺴ ﺘﻌﻤﻞ ﺷ ﺮﻃﺔ
ﻣﻌﻜﻮﺳﺔ ﻟﻬﺎ ، وﻫﺬه اﻟﺸﻔﺮات ﻣﺪوﻧﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ:
اﻟﻘﻴﻤﺔ اﻟﺼﺤﻴﺤﺔ ﻟﻬﺎ ﻣﻌﻨﺎﻫﺎ اﻟﺸﻔﺮة
8 رﺟﻮع ﺑﻤﻘﺪار ﺧﺎﻧﺔ واﺣﺪة ""\b
31 ﺳﻄﺮ ﺟﺪﻳﺪ ""\n
9 ﺗﺮﺗﻴﺐ أﻓﻘﻲ ""\t
0 ﻟﻠﻘﻴﻤﺔ اﻟﺨﺎﻟﻴﺔ "0\"
31 ﻋﻼﻣﺔ رﺟﻮع ""\r
11 ﺗﺮﺗﻴﺐ ﻋﻤﻮدي ""\v
29 اﻟﺸﺮﻃﺔ اﻟﻤﻌﻜﻮﺳﺔ \ "\\"
21 ﺗﻘﺪﻳﻢ ﺻﻔﺤﺔ ""/f
اﻟﺠﺪول٠١-١
وﻟﺒﻴﺎن أﻫﻤﻴﺔ ﻫﺬه اﻟﺸﻔﺮات ، ﺧﺬ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ:
""first line\n second line
ﻟ ﻮ ﻃﺒ ﻊ ﻫ ﺬا اﻟ ﻨﺺ )اﻟﺜﺎﺑ ﺖ اﻟﺮﻣ ﺰي( ﻓﺎﻧ ﻪ ﺳ ﻴﻈﻬﺮ ﻓ ﻲ ﺳ ﻄﺮﻳﻦ ﻣﺘﺘ ﺎﻟﻴﻦ ﻋﻠ ﻰ اﻟﻨﺤ ﻮ
اﻟﺘﺎﻟﻲ:
First line
Second line
وﻣ ﻦ اﻟﺠ ﺪﻳﺮ ﺑﺎﻟ ﺬﻛﺮ ، أن أﻫ ﻢ ﺗﻄﺒﻴﻘ ﺎت اﻟﻤﻌﻄﻴ ﺎت اﻟﺮﻣﺰﻳ ﺔ واﺳ ﺘﻌﻤﺎﻻﺗﻬﺎ ، ﻫ ﻮ ﻣﻌﺎﻟﺠ ﺔ
اﻟﻨﺼ ﻮص ، وﻣ ﺎ ﻳﺴ ﺘﺤﻖ اﻟﺘﺴ ﺠﻴﻞ واﻻﻫﺘﻤ ﺎم ، اﻧ ﻪ ﻳﻤﻜ ﻦ إﺟ ﺮاء ﻋﻤﻠﻴ ﺎت ﻋﻠ ﻰ
اﻟﻤﻌﻄﻴﺎت اﻟﺮﻣﺰﻳﺔ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﻤﻼﺣﻈﺎت واﻟﺘﻌﻠﻴﻘﺎت ﻓﻲ ++Comments c
ﺗﺴﺘﻌﻤﻞ ﺳﺎﺋﺮ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﺟﻤﻼ ﻟﻠﺘﻌﻠﻴﻘﺎت واﻟﻤﻼﺣﻈﺎت ، وﻛﺬﻟﻚ ﻟﻐﺔ ++ Cﻣﺜﻼ
اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﻴﺔ:
10 rem this is Islam
ﻫﻲ ﺟﻤﻠﺔ ﻣﻼﺣﻆ ﻓﻲ ﻟﻐﺔ ﺑﻴﺴﻚ ، ﺗﻘﺎﺑﻠﻬﺎ ﺟﻤﻠﺔ ﺗﻌﻠﻴﻖ اﻟﺘﺎﻟﻴﺔ ﻓﻲ ﻟﻐﺔ ++:C
// this is Islam
اﻟﺘﻲ ﺗﻮﺿﺢ ﺑﻌﺪ ﺷﺮﻃﺘﻴﻦ )ﺧﻄﻴﻦ ﻣﺎﺋﻠﻴﻦ(
وﺗﺴﺘﻌﻤﻞ ﺟﻤﻞ اﻟﺘﻌﻠﻴﻖ ، ﻓﻲ أي ﻣﻜﺎن ﻣﻦ اﻟﺒﺮﻧ ﺎﻣﺞ ﻹﺑ ﺪاء ﻣﻼﺣﻈ ﺔ ﻣ ﺎ ، ﻋﻨ ﺪ ﺳ ﻄﺮ ﻣ ﺎ
ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ ، وﻻ ﺗﻌﺪ ﺟﻤﻠﺔ ﺗﻨﻔﻴﺬﻳﺔ ، ﺑﻤﻌﻨﻰ أﻧﻬﺎ ﻟﻮ ﺣ ﺬﻓﺖ ﻣ ﻦ اﻟﺒﺮﻧ ﺎﻣﺞ ، ﻻ ﻳ ﺆﺛﺮ ﻓﻴ ﻪ
ذﻟﻚ ﺷﻴﺌﺎ ، وﻋﺎدة ﻣﺎ ﻳﺘﺠﺎﻫﻠﻬﺎ اﻟﻤﺒﺮﻣﺠﻮن .
ﻣﺜﺎل: ﻻﺣﻆ ﺟﻤﻞ اﻟﺘﻌﻠﻴﻖ اﻟﺘﺎﻟﻴﺔ:
//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
}
وﻣﻦ اﻟﺠﺪﻳﺮ ﺑﺎﻟﺬﻛﺮ ﻫﻨﺎ ، ﻣﺎ ﻳﺄﺗﻲ:
ﻻ ﻳﺘﺮك أي ﻓﺮاغ ﺑﻴﻦ اﻟﺸﺮﻃﺔ / واﻟﻨﺠﻤﺔ * ﻣﻦ ﺟﻬﺘﻲ ﺟﻤﻠﺔ اﻟﺘﻌﻠﻴﻖ.
١- ﻳﻘﻮم ﻣﺘﺮﺟﻢ ++ cﺑﺈﻫﻤﺎل اﻟﻨﺼﻮص اﻟﻤﺴﺘﻌﻤﻠﺔ ﻓﻲ ﺟﻤﻞ اﻟﺘﻌﻠﻴﻖ ، أي أﻧﻬﺎ ﻻ
ﺗﻨﻔﺬ ، ﺑﻞ ﻫﻲ ﺟﻤﻞ ﺗﻮﺿﻴﺤﻴﺔ ﺗﻈﻬﺮ ﻣﻊ ﻗﺎﺋﻤﺔ اﻟﺒﺮﻧﺎﻣﺞ أو ﺳﻄﻮرا ﻓﻘﻂ .
٢- ﻳﻤﻜﻦ وﺿﻊ ﺟﻤﻠﺔ اﻟﻤﻼﺣﻈﺔ واﻟﺘﻌﻠﻴﻖ ﻓﻲ أي ﻣﻜﺎن ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ ، ﻣﺎ ﻋﺪا
وﺳﻂ اﺳﻢ ﺗﻌﺮﻳﻔﻲ ، identifierأو ﻛﻠﻤﺔ ﻣﺤﺠﻮزة . keyword
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺗﺸﻐﻴﻞ 0.6++visual c
0.6++Run visual c
ﻟﺘﺸﻐﻴﻞ ﺑﺮﻧﺎﻣﺞ ﻓﻴﺠﻮال ﺳﻲ ++ ﻧﺘﺒﻊ اﻟﺘﺎﻟﻲ:
أﺑﺪا Ùاﻟﺒﺮاﻣﺞvisualc++6.0 Ù
ﺛﻢ ﺑﻌﺪ ذﻟﻚ ﺳﺘﻈﻬﺮ ﻟﻨﺎ اﻟﺸﺎﺷﺔ اﻟﺘﺎﻟﻴﺔ:
ﻧﺨﺘﺎر اﻟﻘﺎﺋﻤﺔ fileﻣﻦ ﻫﻨﺎ
ﻧﺨﺘ ﺎر ﻣ ﻦ ﻫ ﺬه اﻟﺸﺎﺷ ﺔ ﻛﻤ ﺎ ﻫ ﻮ واﺿ ﺢ اﻟﻘﺎﺋﻤ ﺔ Fileﺛ ﻢ ﺑﻌ ﺪ ذﻟ ﻚ ﻧﺨﺘ ﺎر ﻣ ﻦ اﻟﻘﺎﺋﻤ ﺔ
Newﻟﺘﻈﻬﺮ ﻟﻨﺎ اﻟﺸﺎﺷﺔ اﻟﺘﺎﻟﻴﺔ..
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻧﻄﺒﻖ ﻣﺎ ﻳﻮﺟﺪ ﺑﺎﻟﺼﻮرة ﺑﺎﻷﺳﻔﻞ ﺛﻢ ﻧﺨﺘﺎر ﻣﻮاﻓﻖ..
ﻧﺨﺘﺎر ﻫﻨﺎ
اﻟﺘﺴﻤﻴﺔ اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺸﺮوع
ﺛﻢ ﻧﻨﻘﺮ ok
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻧﺨﺘﺎر اﻟﺘﻄﺒﻴﻖ اﻟﻤﻮﺟﻮد ﺑﺎﻷﺳﻔﻞ ﺛﻢ ﻧﺨﺘﺎر إﻧﻬﺎء ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﺑﺎﻷﺳﻔﻞ..
ﻧﺨﺘﺎر ﻫﺬا اﻟﺘﻄﺒﻴﻖ
ﺛﻢ ﻧﻨﻘﺮ finish
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻵن ﺳﺘﻈﻬﺮ ﻟﻨﺎ ﺷﺎﺷﺔ اﻟﻜﻮد وﻧﻼﺣﻆ ﺑﺎﻷﺳﻔﻞ اﻟﺸﺎﺷﺔ..
ﺑﻌ ﺪ ذﻟ ﻚ ﻧﺨﺘ ﺎر ﻣ ﻦ اﻟﻘﺎﺋﻤ ﺔ Buildﺛ ﻢ ﻧﺨﺘ ﺎر Execute .exeﻟﻴﻄﺒ ﻖ ﻟﻨ ﺎ اﻟﻤﺸ ﺮوع ..
أو ﺑﺎﻟﻨﻘﺮ ﻣﻦ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ ﻋﻠﻰ اﻟﺰر 5. F
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻃﺒﻌﺎ ﺑﻌﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺳﺘﻈﻬﺮ ﻟﻨﺎ اﻟﻨﺘﺎﺋﺞ ﻛﻤﺎ ﻓﻲ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ:
ﻃﺒﻌﺎ أﻋﺰاﺋ ﻲ ﻫ ﺬا اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﺼ ﻐﻴﺮ ﻫ ﻮ ﺑﺮﻧ ﺎﻣﺞ ﺗﻼﺣﻈ ﻮن أن اﻟﻜ ﻮد ﺗﺒﻌ ﻪ ﺧ ﺎص ﺑﻠﻐ ﺔ
Cاﻻم وﻟ ﻴﺲ ++ cﻟﻜ ﻦ ﻣ ﺎ ﻧﻌﻤ ﻞ ﻋﻠﻴ ﻪ ﻫ ﻮ ﻣﺘ ﺮﺟﻢ ﻳﻘﺒ ﻞ اﻟﻠﻐﺘ ﻴﻦ ﻣﻌ ﺎ واﻟﻤﺘ ﺮﺟﻢ ﻫ ﻮ
++ ، Visual Cوﻧﻼﺣ ﻆ اﻧ ﻪ ﺗ ﻢ ﻃﺒﺎﻋ ﺔ ﻋﺒ ﺎرة ! Hello Worldوﻫ ﻲ ﻧﺘﻴﺠ ﺔ ﺗﻨﻔﻴ ﺬ
اﻟﺪاﻟﺔ )( printfاﻟﻤﻮﺟﻮدة ﻓﻲ ﺳﻄﻮر اﻟﺒﺮﻧﺎﻣﺞ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أﺳﺎﻟﻴﺐ اﻹدﺧﺎل واﻹﺧﺮاج
Input/output Techniques
ﻣﻘﺪﻣﺔ introduction
ﻳﺘﻨﺎول ﻫﺬا اﻟﺠﺰء أﺳﺎﻟﻴﺐ إدﺧﺎل اﻟﻘﻴﻢ اﻟﺤﺴﺎﺑﻴﺔ واﻟﺮﻣﺰﻳﺔ ، وأﺳﺎﻟﻴﺐ إﺧﺮاج وﻃﺒﺎﻋﺔ
ﻧﺘﺎﺋﺞ اﻟﺒﺮاﻣﺞ واﻟﺘﻌﺎﺑﻴﺮ اﻟﺤﺴﺎﺑﻴﺔ واﻟﺮﻣﺰﻳﺔ ، وﻃﺒﺎﻋﺔ اﻟﻤﻌﻄﻴﺎت اﻟﻤﺨﺘﻠﻔﺔ ﺣﺴﺐ
اﻟﺤﺎﺟﺔ.
ﻟﻘﺪ ﺗﻌﻮدﻧﺎ ﻓﻲ ﻟﻐﺔ ﺑﻴﺴ ﻚ ، أن ﻧﺴ ﺘﻌﻤﻞ دوال ﻣﺒﻨﻴ ﺔ وﺟ ﺎﻫﺰة ﻋﻨ ﺪ اﻟﻄﻠ ﺐ ﻟﻠﻘﻴ ﺎم ﺑﺎﻹدﺧ ﺎل
ﻣﺜ ﻞ ) inputأو (readأو ﺑ ﺎﻹﺧﺮاج ﻣﺜ ﻞ ) ، (printوﻓ ﻲ ﻫ ﺬا اﻟﺼ ﺪد ، ﻓ ﺎن ﻟﻐ ﺔ
++ ، Cﺗﺘﻌﺎﻣ ﻞ ﻣ ﻊ اﻹدﺧ ﺎل واﻹﺧ ﺮاج ، ﺑﻄﺮﻳﻘ ﺔ ﻣﺨﺘﻠﻔ ﺔ، ﺣﻴ ﺚ ﺗ ﻮﻓﺮ اﻟﻠﻐ ﺔ ، ﻋ ﺪدا
ﻛﺒﻴﺮا ﻣﻦ دوال اﻹﺧﺮاج واﻹدﺧﺎل ، ﺣﻴﺚ ﻳﻤﻜ ﻦ ﻟﻠﻤﺒ ﺮﻣﺞ أن ﻳﺴ ﺘﺪﻋﻴﻬﺎ ، وﻳﺴ ﺘﻔﻴﺪ ﻣﻨﻬ ﺎ
، ﺣﺴﺐ ﻧﻮع اﻟﻤﻌﻄﻴﺎت واﻟﻤﺘﻐﻴﺮات ، ﻛﻴﻔﻤﺎ ﻳﻨﺎﺳﺒﻪ ، وﺳ ﻮف ﻧ ﻮرد أن ﺷ ﺎء اﷲ ﻓ ﻲ ﻫ ﺬا
اﻟﻔﺼﻞ أﻫﻢ ﻫﺬه اﻟﺪوال واﺷﻬﺮﻫﺎ ﻟـ ++. C
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻹدﺧﺎل واﻹﺧﺮاج input\output
ﺗ ﻮﻓﺮ ﻟﻐ ﺔ ++ ، Cﻣﺠﻤﻮﻋ ﺔ ﻣ ﻦ اﻟ ﺪوال واﻟﺮوﺗﻴﻨﻴ ﺎت اﻟﻤﻌﺮﻓ ﺔ ﺿ ﻤﻦ Iostreamﻣﺜ ﻞ
coutﻟﻺﺧﺮاج و cinﻟﻺدﺧﺎل وﺳﻮف ﻧﻌﺮف اﻟﻤﻠﻒ iostream.h
اﻟﻤﻠﻒ Iostream.hﻳﻌﻨﻲ:
: ioﻣﺨﺘﺼﺮ ﻟـ input/outputآي اﻹدﺧﺎل واﻹﺧﺮاج.
: Streamﻣﻜﺘﺒﺔ ﻗﻴﺎﺳﻴﺔ ﺧﺎﺻﺔ ﺑﺎﻹﺧﺮاج واﻹدﺧﺎل اﻟــﺦ..
header file : Hآي اﻟﻤﻠﻒ اﻟﺪﻟﻴﻞ.
ﻣﺜﺎل١:
إذا أردت ﻃﺒﺎﻋﺔ اﻟﻌﺪد 001 ﻓﻲ ﻟﻐﺔ ﺑﻴﺴﻚ ﻓﺎﻟﺠﻤﻠﺔ:
001 Print
ﺗﺆدي ﻋﻤﻠﻴﺔ اﻟﻄﺒﺎﻋﺔ ، أﻣﺎ ﻓﻲ ﻟﻐﺔ ++ Cﻓﺎن اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻌﻤﻞ ذﻟﻚ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;001<<cout
;0return
}
ﺗ ﺆدي إﻟ ﻰ ﻃﺒﺎﻋ ﺔ اﻟﻌ ﺪد 001 ﺣﻴ ﺚ coutاﺳ ﻢ وﺣ ﺪة اﻹﺧ ﺮاج اﻟﻘﻴﺎﺳ ﻲ واﻷداة<<
ﺗ ﺆدي إﻟ ﻰ إرﺳ ﺎل اﻟﻌ ﺪد 001 إﻟ ﻰ وﺣ ﺪة اﻹﺧ ﺮاج ، أن ﻫ ﺬا اﻷﺳ ﻠﻮب اﻟﺠﺪﻳ ﺪ ﻓ ﻲ
اﻹﺧﺮاج ﻳﺨﺘﻠﻒ ﻋﻤﺎ ﻓﻲ ﻟﻐﺔ . c
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
(ﻃﺒﺎﻋﺔ اﻟﻨﺼﻮص )اﻟﺜﻮاﺑﺖ اﻟﺮﻣﺰﻳﺔ
:٢ﻣﺜﺎل
:ﺗﺄﻣﻞ ﻗﻄﻌﺔ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ
#include “ stdafx.h”
#include “ iostream.h” ﻟﻼﻧﺘﻘﺎل ﻟﺴﻄﺮ ﺟﺪﻳﺪ
main ()
{
cout<<“smoking is dangerous \n”;;
return0;
}
ﺑﺪﻻendl \ إﻳﻌﺎز ﻟﻼﻧﺘﻘﺎل إﻟﻰ ﺳﻄﺮ ﺟﺪﻳﺪ ، وﻗﺪ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﺪاﻟﺔn ﺑﻌﺒﺎرة أﺧﺮى
:\ وﻛﻤﺎ ﻳﻠﻲn ﻣﻦ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
cout<<“ smoking is dangerous”<<endl;
return0;
}
:وﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻄﺒﻊ اﻟﻨﺎﺗﺞ اﻟﺘﺎﻟﻲ
smoking is dangerous
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل ٣:
ﻟﻼﺳﺘﻔﺎدة ﻣﻦ إﻣﻜﺎﻧﻴﺎت اﻹﻳﻌﺎز \nﻓﻲ ﻋﻤﻠﻴﺎت اﻟﻄﺒﺎﻋﺔ :ﺗﺄﻣﻞ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;”cout<<“matrix
;”cout<<“matrix \n
;”cout<<“matrix \n\n
;”cout<<“matrix \n\n\n
;”cout<<“matrix
;0return
}
ﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺗﺮى اﻟﻄﺒﺎﻋﺔ اﻟﺘﺎﻟﻴﺔ ﻋﻠﻰ اﻟﺸﺎﺷﺔ:
اﻟﺴﻄﺮ اﻷولmatrixmatrix Ù
اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲmatrix Ù
اﻟﺴﻄﺮ اﻟﺜﺎﻟﺚ Ùﺳﻄﺮ ﻓﺎرغ
اﻟﺴﻄﺮ اﻟﺮاﺑﻊmatrix Ù
اﻟﺴﻄﺮ اﻟﺨﺎﻣﺲÙﺳﻄﺮ ﻓﺎرغ
اﻟﺴﻄﺮ اﻟﺴﺎدسÙﺳﻄﺮ ﻓﺎرغ
ﻧﻼﺣﻆ ﻓﻲ ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ:
١- اﻧ ﻪ ﻳ ﺘﻢ اﻻﻧﺘﻘ ﺎل ﻣ ﻦ اﻟﺴ ﻄﺮ اﻷول ﺑﻌ ﺪ ﻃﺒﺎﻋ ﺔ matrixإﻟ ﻰ اﻟﺴ ﻄﺮ اﻟﺜ ﺎﻧﻲ ﻟﻌ ﺪم
وﺟ ﻮد إﻳﻌ ﺎز اﻻﻧﺘﻘ ﺎل ، \nوﻟ ﺬا ﻓ ﺎن ﺟﻤﻠ ﺔ اﻟﻄﺎﺑﻌ ﺔ اﻟﺘﺎﻟﻴ ﺔ ﻇﻬ ﺮت ﻧﺘﺎﺋﺠﻬ ﺎ ﻓ ﻲ ا
ﻟﺴ ﻄﺮ اﻷول ﻧﻔﺴ ﻪ ، ﻣﺘﺼ ﻠﺔ ﺑﻄﺎﻋ ﺔ matrixاﻷوﻟ ﻰ ، وﻳﻨﺘﻘ ﻞ اﻟﻤﺆﺷ ﺮ اﻟﻀ ﻮﺋﻲ
إﻟﻰ ﺳﻄﺮ ﺟﺪﻳﺪ ﻟﻮﺟﻮد إﻳﻌﺎز . \n
٢- ﻳ ﺘﻢ ﺗﻨﻔﻴ ﺬ ﺟﻤﻠ ﺔ اﻟﻄﺒﺎﻋ ﺔ اﻟﺜﺎﻟﺜ ﺔ ﻓ ﻲ اﻟﺴ ﻄﺮ اﻟﺠﺪﻳ ﺪ )اﻟﺜ ﺎﻧﻲ( ، وﻳ ﺘﻢ اﻻﻧﺘﻘ ﺎل إﻟ ﻰ
اﻟﺴﻄﺮ اﻟﺮاﺑﻊ ﻗﻔﺰا ﻋﻦ اﻟﺴﻄﺮ اﻟﺜﺎﻟ ﺚ ، وذﻟ ﻚ ﻟﻮﺟ ﻮد اﻹﻳﻌ ﺎز \n\nﺣﻴ ﺚ ﻳﻘ ﻮم ﻛ ﻞ
إﻳﻌ ﺎز \nﺑﻨﻘ ﻞ اﻟﻤﺆﺷ ﺮ اﻟﻀ ﻮﺋﻲ ﺳ ﻄﺮا واﺣ ﺪا ، وﻓ ﻲ اﻟﺴ ﻄﺮ اﻟﺮاﺑ ﻊ ﺗﻄﺒ ﻊ ﺟﻤﻠ ﺔ
اﻟﻄﺒﺎﻋ ﺔ اﻟﺮاﺑﻌ ﺔ ، وﻳ ﺘﻢ ﺑﻌ ﺪﻫﺎ اﻻﻧﺘﻘ ﺎل إﻟ ﻰ اﻟﺴ ﻄﺮ اﻟﺴ ﺎﺑﻊ ﻓ ﻮرا ﺣﺴ ﺐ
اﻹﻳﻌﺎز. \n\n\n
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻃﺒﺎﻋﺔ اﻟﻘﻴﻢ اﻟﻌﺪدﻳﺔ
:٤ﻣﺜﺎل
:ﻳﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﺑﻄﺎﻋﺔ اﻟﻌﺪد 644 ﻛﻘﻴﻤﺔ ﺻﺤﻴﺤﺔ ﻋﻠﻰ ﺷﺎﺷﺔ اﻟﺤﺎﺳﻮب
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
cout<<446;
return0;
}
:ﻋﻨﺪ اﻟﻄﺒﺎﻋﺔ ﻳﻈﻬﺮ ﻟﻨﺎ اﻟﺘﺎﻟﻲ
446
:٥ﻣﺜﺎل
:10.5 ، اﻟﺘﺎﻟﻲ ﻳﻄﺒﻊ اﻟﻘﻴﻤﺔ اﻟﺤﻘﻴﻘﺔC++ ﺑﺮﻧﺎﻣﺞ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
cout<<10.5;
return0;
}
:ﻋﻨﺪ اﻟﻄﺒﺎﻋﺔ ﻳﻈﻬﺮ اﻟﺘﺎﻟﻲ
10.5
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:٦ﻣﺜﺎل
: اﻟﺘﺎﻟﻲC++ اﻧﻈﺮ ﻣﺎذا ﻳﻔﻌﻞ ﺑﺮﻧﺎﻣﺞ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
int a=100;
cout<<a;
return0;
}
:ﻋﻨﺪ اﻟﻄﺒﺎﻋﺔ ﻳﻈﻬﺮ ﻟﻨﺎ اﻟﺘﺎﻟﻲ
100
:٧ﻣﺜﺎل
:اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﻳﻘﻮم ﺑﻄﺒﺎﻋﺔ ﻗﻴﻤﺔ ﻣﺘﻐﻴﺮ ﺣﻘﻴﻘﻲ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
float x;
x=4.25
cout<<x;
return0;
}
:ﻋﻨﺪ اﻟﻄﺒﺎﻋﺔ ﺳﻴﻈﻬﺮ ﻟﻨﺎ اﻟﺘﺎﻟﻲ
4.25
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل٨:
إذا ﺗﻄﻠ ﺐ اﻷﻣ ﺮ ﻃﺒﺎﻋ ﺔ اﻟﻤﺘﻐﻴ ﺮﻳﻦ aاﻟﺼ ﺤﻴﺢ ، و xاﻟﺤﻘﻴﻘ ﻲ اﻟ ﻮاردﻳﻦ ﻓ ﻲ اﻟﻤﺜ ﺎﻟﻴﻦ
اﻟﺴﺎﺑﻘﻴﻦ ، ﻓﻲ ﺑﺮﻧﺎﻣﺞ واﺣﺪ ، ﻓﺎﻟﺒﺮﻧﺎﻣﺞ ﺳﻴﻜﻮن ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;001=int a
52.4=float x
;cout<<a<<x
;0return
}
وﺳﺘﻈﻬﺮ ﻧﺘﺎﺋﺞ ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻛﻤﺎ ﻃﻠﺒﻨﺎ )اﻟﺼﺤﻴﺢ ﻳﺴﺒﻖ اﻟﺤﻘﻴﻘﻲ( ، ﻫﻜﺬا:
001 52.4
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻃﺒﺎﻋﺔ اﻟﻘﻴﻢ اﻟﻌﺪدﻳﺔ واﻟﺮﻣﺰﻳﺔ )اﻟﻨﺼـﻮص( ﻓـﻲ ﺟﻤﻠـﺔ
واﺣﺪة
ﻣﺜﺎل٩:
ﺳﻮف ﻧﻘﻮم ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﺑﻄﺒﺎﻋﺔ ﻗﻴﻢ ﻋﺪدﻳﺔ وﻧﺼﻴﺔ ﻣﻊ اﻟﺒﻌﺾ ﻛﺎﻟﺘﺎﻟﻲ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;001=int a
;cout<<“a=”<<a
;0return
}
ﻋﻨﺪ اﻟﻄﺒﺎﻋﺔ ﻳﻜﻮن اﻟﻨﺎﺗﺞ ﻛﺎﻟﺘﺎﻟﻲ:
001=A
ﻣﺜﺎل٠١:
ﻣﺎذا إذا أردﻧﺎ ﻃﺒﺎﻋﺔ ﻋﺪد ﺻﺤﻴﺢ وﺣﻘﻴﻘﻲ ﻣﻊ ﻧﺼﻮص ﺑﻨﻔﺲ اﻟﻮﻗﺖ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;001=int
52.4=float x
;cout<<“a=”<<a<<“x=”<<x
;0return
}
وﻋﻨﺪ اﻟﻄﺒﺎﻋﺔ ﺳﻴﻈﻬﺮ ﻟﻨﺎ اﻟﺘﺎﻟﻲ:
52.4=A=100 x
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:١١ﻣﺜﺎل
إذا أردﻧ ﺎ أن ﺗﻈﻬ ﺮ ﻧﺘ ﺎﺋﺞ اﻟﻤﺜ ﺎل اﻟﺴ ﺎﺑﻖ ﻓ ﻲ ﺳ ﻄﺮﻳﻦ ﺑ ﺪﻻ ﻣ ﻦ ﺳ ﻄﺮ واﺣ ﺪ ، ﻓﺠﻤﻠ ﺔ
:اﻟﻄﺒﺎﻋﺔ ﺳﺘﻜﻮن ﻛﺎﻟﺘﺎﻟﻲ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
int a=100;
float x=4.25
cout<<“a=”<<a<<“\n”<<“x=”<<x;
return0;
}
:وﺗﻜﻮن ﻧﺘﻴﺠﺔ اﻟﻄﺒﺎﻋﺔ ﻋﻠﻰ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ
A=100
X=4.25
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻹدﺧﺎل ﺑﻠﻐﺔ ++Streams C
ﻳﺘﻨ ﺎول ﻫ ﺬا اﻟﻤﺒ ﺪأ ﻣﻌﺎﻟﺠ ﺔ اﻹدﺧ ﺎل ﺣﻴ ﺚ ﻳﻌ ﺪ اﺳ ﺘﺨﺪام streamsاﻓﻀ ﻞ ﻣ ﻦ دوال
اﻹدﺧﺎل ﻟﻠـﻐﺔ . C
وﺻﻴﻐﺔ اﻟﺠﻤﻠﺔ ﻛﺎﻟﺘﺎﻟﻲ:
;Cin>>a
وﻧﺸﺎﻫﺪ أﻧﻬﺎ ﻋﻜﺲ ﻋﻤﻠﻴﺔ اﻹﺧﺮاج ﺣﻴﺚ اﻹﺧﺮاج << أﻣﺎ اﻹدﺧﺎل >> .
وﺗﺴ ﺘﺨﺪم ﻫ ﺬه اﻟﺠﻤﻠ ﺔ ﻹدﺧ ﺎل ﻗ ﻴﻢ ﻋﺒ ﺮ ﻟﻮﺣ ﺔ اﻟﻤﻔ ﺎﺗﻴﺢ ﻟﻠﻤﺘﻐﻴ ﺮات ﻓ ﻲ اﻟ ﺬاﻛﺮة ، وﻳ ﺘﻢ
ﺗﻌﻴﻴﻦ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ﻓﻲ اﻟﺬاﻛﺮة ﺑﺎﺳﺘﺨﺪام ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ .
ﻣﻼﺣﻈﺔ/
ﻻ ﻳﺠﻮز أن ﻧﺴﺘﺨﺪم اﻟﻤﺘﻐﻴﺮ ﻗﺒﻞ ﺗﻌﺮﻳﻔﺔ.
ﻣﺜﺎل ﺻﺤﻴﺢ:
;Int x
;Cin>>x
ﻣﺜﺎل ﺧﺎﻃﺊ:
;Cin>>x
ﻣﺜﺎل٢١:
ﺳﻮف ﻧﻘﻮم ﺑﺈدﺧﺎل ﻋﺪد ﺻﺤﻴﺢ ﻓﻲ ﻫﺬا اﻟﺘﻄﺒﻴﻖ ﺛﻢ ﻧﻘﻮم ﺑﻄﺒﺎﻋﺘﻪ ﻛﺎﻟﺘﺎﻟﻲ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int=a
;cin>>a
;cout<<a
;0return
}
ﻧﻼﺣﻆ ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل أﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺘﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ aﺑﺄﻧ ﻪ ﻋ ﺪد ﺻ ﺤﻴﺢ ﺑﻌ ﺪ ذﻟ ﻚ ﻋﻨ ﺪ ﺗﻨﻔﻴ ﺬ
اﻟﺒﺮﻧ ﺎﻣﺞ ﺳ ﻴﻄﻠﺐ ﻣﻨ ﺎ إدﺧ ﺎل ﻋ ﺪد ﺳ ﻨﺪﺧﻞ اﻟﻌ ﺪد 01 ﻣ ﺜﻼ ﻋﻨ ﺪ ذﻟ ﻚ ﺳ ﻴﻜﻮن اﻟﻨ ﺎﺗﺞ
ﻛﺎﻟﺘﺎﻟﻲ:
01
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل٣١:
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻹدﺧﺎل ﻋﻤﺮك ﺛﻢ ﻃﺒﺎﻋﺘﻪ ، وﻃﺒﺎﻋﻪ ﻧﺼﻔﻪ وﺿﻌﻔﻪ؟
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int a
;cin>>a
;cout<<a
;2/cout<<a
;2*cout<<a
;0return
}
ﻓﻲ اﻟﻤﺜﺎل أﻋﻼه ﻗﻤﻨﺎ أوﻻ ﺑﺘﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ ﻛﺎﻟﺘﺎﻟﻲ:
;Int a
ﺛﻢ ﺑﻌﺪ ذﻟﻚ ﻃﻠﺐ ﻣﻨﺎ إدﺧﺎل اﻟﻌﻤﺮ:
ﻋﻨﺪ اﻟﻄﻠﺐ ﺳﻨﺪﺧﻞ ﻣﺜﻼ 02
Cin>>a
وﺑﻌﺪﻫﺎ ﻗﻤﻨﺎ ﺑﻄﺒﺎﻋﺔ اﻟﻌﻤﺮ:
;Cout<<a
ﺛﻢ ﻗﻤﻨﺎ ﺣﺴﺐ اﻟﻤﻄﻠﻮب ﺑﻄﺒﺎﻋﺔ ﻧﺼﻒ اﻟﻌﻤﺮ:
;2/Cout<<a
ﺛﻢ ﻗﻤﻨﺎ ﺣﺴﺐ اﻟﻤﻄﻠﻮب اﻷﺧﻴﺮ ﺑﻄﺒﺎﻋﺔ ﺿﻌﻒ اﻟﻌﻤﺮ:
;2*Cout<<a
ﻟﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ اﻟﻨﻬﺎﺋﻴﺔ ﻛﺎﻟﺘﺎﻟﻲ:
04 01 02
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل٤١:
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻹدﺧﺎل ﻋﺪد ﻣﺎ وﻟﻴﻜﻦ اﻟﻌﺪد 7 وﻣﻦ ﺛﻢ ﻃﺒﺎﻋﺔ ﺟﺪول اﻟﻀﺮب ﻟﻪ؟
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int a ﻋﻨﺪ ﻃﻠﺐ إدﺧﺎل ﻗﻴﻤﺔ ﻧﺪﺧﻞ
;cin>>a اﻟﺮﻗﻢ 7 ﺣﺴﺐ ﻃﻠﺐ اﻟﺴﺆال..
;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
;01*cout<<a
;0return
}
ﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺳﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ ﻛﺎﻟﺘﺎﻟﻲ:
07 36 65 94 24 53 82 12 41 7
ﻣﺜﺎل٥١:
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹدﺧﺎل ﺛﻼث ﻋﻼﻣﺎت ﻟﻄﺎﻟﺐ 03 52 04 وﻃﺒﺎﻋﺔ ﻣﻌﺪل اﻟﻌﻼﻣﺎت؟
”#include “ stdafx.h
”#include “ iostream.h
)( main ﻧﺪﺧﻞ ﺣﺴﺐ اﻟﻤﻄﻠﻮب 52 04
{ 03
;int a,b,c
;cin>>a>>b>>c
;3/)cout<<(a+b+c
;0return
}
ﻧﻼﺣﻆ أن ﻓﻲ ﺟﻤﻞ اﻹﺧﺮاج ﻗﻤﻨﺎ ﺑﻜﺘﺎﺑﺔ ﻗﺎﻋﺪة وﻫ ﻲ ﺟﻤ ﻊ اﻟ ﺜﻼث أﻋ ﺪاد ﻣ ﻊ ﺑﻌﻀ ﻬﺎ ﺛ ﻢ
ﻗﺴﻤﺘﻬﺎ ﻋﻠﻰ ﻋﺪدﻫﺎ وﻫﻲ ﻗﺎﻋﺪة ﻣﻌﺮوﻓﺔ ﻹﻇﻬﺎر اﻟﻤﻌﺪل..
وﺳﻒ ﻳﻜﻮن اﻟﻨﺎﺗﺞ ﻛﺎﻟﺘﺎﻟﻲ:
13
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:١٦ﻣﺜﺎل
:ﺳﻨﺤﺎول اﻵن إدﺧﺎل ﺛﻼث ﻗﻴﻢ ﻋﺪدﻳﺔ ، وﻣﻦ ﺛﻢ ﻃﺒﺎﻋﺘﻬﺎ
#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
.. ﻟﻨﻮﺿﺢ ﻟﻠﻤﺴﺘﺨﺪم أﻳﻦ اﻹدﺧﺎل واﻹﺧﺮاج
:وﺳﻮف ﻳﻜﻮن اﻟﻨﺎﺗﺞ ﻛﺎﻟﺘﺎﻟﻲ
print the following items
10
6.3
2001.5
this is the end
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺟﻤﻞ اﻟﺘﺤﻜﻢ واﻟﺸﺮط واﻟﺘﻜﺮار
ProgramControl,Conditional&Loop Statements
ﻣﻘﺪﻣﺔ introduction
ﻗﺪ ﻧﺤﺘﺎج أن ﻧﻨﺘﻘﻞ ﻣ ﻦ ﺳ ﻄﺮ إﻟ ﻰ آﺧ ﺮ ﻓ ﻲ ﺑﺮﻧ ﺎﻣﺞ ++ ، Cوﻗ ﺪ ﻧﺤﺘ ﺎج أن ﻧﻘ ﻮم ﺑﺘﻨﻔﻴ ﺬ
ﺑﻌ ﺾ اﻟﺠﻤ ﻞ ﻋﻨ ﺪ ﺗﺤﻘ ﻖ ﺑﻌ ﺾ اﻟﺸ ﺮوط ، وﻗ ﺪ ﻧﺤﺘ ﺎج أن ﻧﻜ ﺮر ﻋﻤﻠﻴ ﺔ ﻣ ﻦ ﻋﻤﻠﻴ ﺎت
اﻹدﺧ ﺎل أو اﻹﺧ ﺮاج أو اﻟﺤﺴ ﺎب ﻋ ﺪدا ﻣ ﻦ اﻟﻤ ﺮات ، وﻗ ﺪ ﻧﺤﺘ ﺎج أن ﻧﺒﻨ ﻲ ﺷ ﺒﻜﺔ ﻣ ﻦ
ﺗﻮزﻳ ﻊ اﻷواﻣ ﺮ ﻋﻠ ﻰ ﻋ ﺪد ﻣ ﻦ ﺳ ﻄﻮر اﻟﺒﺮﻧ ﺎﻣﺞ ، ﺣﺴ ﺐ ﻣﻘﺘﻀ ﻴﺎت ﺑﻌ ﺾ اﻷﺣ ﻮال ،
وﺣﺴﺒﻤﺎ ﺗﻘﺘﻀ ﻴﻪ ﻃﺒﻴﻌ ﺔ اﻟﻤﺴ ﺄﻟﺔ ، ﻓ ﻲ ﻫ ﺬه اﻟﺤ ﺎﻻت: ﻧﺤﺘ ﺎج أن ﻧ ﺘﻌﻠﻢ أﺳ ﺎﻟﻴﺐ اﻟﺸ ﺮط ،
وأﺳﺎﻟﻴﺐ اﻟﺘﻜ ﺮار ، وﻛﻴﻔﻴ ﺔ اﻟ ﺘﺤﻜﻢ ﻓ ﻲ ﻣﺴ ﺎر اﻟﺒﺮﻧ ﺎﻣﺞ ، وﺗﻌ ﺪ أﺳ ﺎﻟﻴﺐ اﻟﺸ ﺮط واﻟ ﺘﺤﻜﻢ
واﻟﺘﻜﺮار ﺑﻤﺜﺎﺑﺔ اﻟﻘﻠﺐ ﻓﻲ ﺟﺴﻢ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ، وﺑﺪوﻧﻬﺎ ﻻ ﻳﻤﻜﻦ ﺗﻨﻈﻴﻢ آي ﺑﺮﻧﺎﻣﺞ.
وﺗﻮﻓﺮ ﻟﻐﺔ ++ Cﻟﻠﻤﺒ ﺮﻣﺞ ﻋ ﺪدا ﻣ ﻦ اﻷﺳ ﺎﻟﻴﺐ واﻟ ﺪوال اﻟﻔﻌﺎﻟ ﺔ ، اﻟﻤﺘﻌﻠﻘ ﺔ ﺑﻬ ﺬا اﻟﺸ ﺄن ،
وﺗﻤﺘ ﺎز ﻫ ﺬه اﻷﺳ ﺎﻟﻴﺐ ﺑﺄﻧﻬ ﺎ أﺳ ﺎﻟﻴﺐ ﺑﻨﺎﺋﻴ ﺔ أو ﺑﻨﻴﻮﻳ ﺔ structuredآي ﻳﻤﻜ ﻦ ﺗﻨﻈ ﻴﻢ
ﻋﻤﻠﻴ ﺎت اﻟ ﺘﺤﻜﻢ واﻟﺘﻜ ﺮار ﻓﻴﻬ ﺎ ، ﺑﺄﺳ ﻠﻮب ذاﺗ ﻲ ﻣ ﻦ ﺑﺪاﻳ ﺔ اﻟﻌﻤﻠﻴ ﺎت وﺣﺘ ﻰ ﻧﻬﺎﻳﺘﻬ ﺎ دون
ﺗ ﺪﺧﻞ ﻣ ﻦ اﻟﻤﺒ ﺮﻣﺞ أﺛﻨ ﺎء ﻫ ﺬه ا ﻟﻌﻤﻠﻴ ﺎت ، ﻟﻸﺷ ﺮاف ﻋﻠ ﻰ اﻟﺘﻮﺟﻴ ﻪ واﻟﺘﺨﻄ ﻴﻂ ﻟﻜ ﻞ
ﺧﻄﻮه ﻣﻦ ﺧﻄﻮات اﻟﺒﺮﻧ ﺎﻣﺞ ، وﻳﻌ ﺮف ﺑﻌ ﺾ اﻟﺨﺒ ﺮاء واﻟﻤﺨﺘﺼ ﻴﻦ اﻟﺒﺮﻣﺠ ﺔ اﻟﺒﻨﻴﻮﻳ ﺔ:
أﻧﻬﺎ اﻟﺒﺮﻣﺠﺔ اﻟﺘﻲ ﻻ ﺗﺴﺘﻌﻤﻞ ﺟﻤﻠﺔ اﻻﻧﺘﻘﺎل ، GOTOﻟﺘﻮﺟﻴ ﻪ اﻟﺒﺮﻧ ﺎﻣﺞ ﻓ ﻲ ﻛ ﻞ ﺧﻄ ﻮة
، وﻣ ﻊ ذﻟ ﻚ ﻓ ﺎن ﻟﻐ ﺔ ++ ، Cﺗ ﻮﻓﺮ ﺟﻤﻠ ﺔ اﻻﻧﺘﻘ ﺎل ﻫ ﺬه ، ﻟﻜﻨﻬ ﺎ ﻻ ﺗﺴ ﺘﻌﻤﻞ إﻻ
ﻟﻠﻀﺮورة.
وﺣﻴ ﺚ أن ﺟ ﻮاب اﻟﺸ ﺮط أﻣ ﺎ أن ﻳﻜ ﻮن ﺻ ﻮاﺑﺎ trueأو زاﺋﻔ ﺎ falseﻓ ﺎن ﻟﻐ ﺔ ++، C
ﺗﻌﻄ ﻲ اﻟﺤﺎﻟ ﺔ اﻟﺼ ﺎﺋﺒﺔ ﻗﻴﻤ ﺔ ﻋﺪدﻳ ﺔ ﺗﺨﺘﻠ ﻒ ﻋ ﻦ اﻟﺼ ﻔﺮ ، وﺗﻌﻄ ﻲ ﻗﻴﻤ ﺔ ﺻ ﻔﺮ ﻟﻠﺤﺎﻟ ﺔ
اﻟﺰاﺋﻔﺔ ) ﻋﻨﺪ ﻋﺪم ﺗﺤﻘﻖ اﻟﺸﺮط أو اﻟﺸ ﺮوط ( وﻟ ﺬا ﻓ ﺎن ﻟﻐ ﺔ ++ Cﺗ ﻮﻓﺮ ﻣﺮوﻧ ﺔ ﻛﺒﻴ ﺮة
ﻓﻲ اﺳﺘﺨﺪام ﻋﺪد ﻛﺒﻴﺮ ﻣﻦ اﻟﺪوال ، وﻓﻲ ﺗﻮﺟﻴﻪ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺮﻳﻘﺔ ﻓﻌﺎﻟﺔ وﻓﺎﺋﻘﺔ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﺠﻤﻞ اﻟﺸﺮﻃﻴﺔ
ﺗﺘﻌﺎﻣﻞ ﻟﻐﺔ ++ Cﻣﻊ ﺛﻼﺛﺔ أﻧﻮاع ﻣﻦ ﺟﻤﻞ اﻟﺸﺮط وﻫﻲ:
١- ﺟﻤﻠﺔ إذا اﻟﺸﺮﻃﻴﺔ وأﺧﻮاﺗﻬﺎ if statements
٢- ﺟﻤﻠﺔ اﻟﺘﻮزﻳﻊ switch statement
٣- ﺟﻤﻠﺔ أداة اﻟﺸﺮط ?
ﺟﻤﻠﺔ اﻟﺸﺮط إذا وأﺧﻮاﺗﻬﺎ if statements
- ﺟﻤﻠﺔ اﻟﺸﺮط إذا وأﺧﻮاﺗﻬﺎ if statements
ﺗﺄﺧﺬ ﻫﺬه اﻟﺠﻤﻠﺔ اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ:
;1If (condition) statement
ﺗﻘﻮم ﺟﻤﻠﺔ إذا اﻟﺸﺮﻃﻴﺔ ﻫﻨﺎ ، ﺑﻨﻘﻞ ﺗﺴﻠﺴﻞ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ إﻟﻰ اﻟﺠﻤﻠﺔ )أو ﺳﻠﺴﻠﺔ
اﻟﺠﻤﻠﺔ( 1 statementﻋﻨﺪﻣﺎ ﻳﺘﺤﻘﻖ اﻟﺸﺮط )أو اﻟﺸﺮوط( conditionوﺗﻜﻮن
ﻧﺘﻴﺠﺘﻪ ، trueوإذا ﻟﻢ ﻳﺘﺤﻘﻖ اﻟﺸﺮط ، أي ﺗﻜﻮن اﻟﻨﺘﻴﺠﺔ ، falseﻓﺎن اﻟﺘﻨﻔﻴﺬ ﻳﻨﺘﻘﻞ
ﻓﻮرا إﻟﻰ اﻟﺠﻤﻠﺔ ) أو ﺳﻠﺴﻠﺔ اﻟﺠﻤﻞ( 2 statmentوﻳﻌﺪ اﺳﺘﻌﻤﺎل elseﻓﻲ ++C
اﺧﺘﻴﺎرﻳﺎ ، أي ﻳﻤﻜﻦ ﺣﺬﻓﻬﺎ دون أن ﺗﺘﺄﺛﺮ اﻟﺠﻤﻠﺔ اﻟﺸﺮﻃﻴﺔ ﺗﺮﻛﻴﺒﺎ واداء وﻳﻜﻮن ﺷﻜﻠﻬﺎ
اﻟﻌﺎم ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ:
;1If (condition) statement
;2Else statment
وﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﺳﺘﻨﻔﺬ اﻟﺠﻤﻠﺔ 1 statementأن ﺗﺤﻘﻖ اﻟﺸﺮط conditionوإﻻ ﻓﺎن
اﻟﺘﻨﻔﻴﺬ ﻳﻨﺘﻘﻞ إﻟﻰ ﺳﻄﺮ ++ Cاﻟﺘﺎﻟﻲ ﻟﺠﻤﻠﺔ . if
اﻟﺼﻴﻐﺔ اﻷوﻟﻰ
وﺗﺄﺧﺬ اﻟﺒﻨﻴﺔ اﻟﻌﺎﻣﻠﺔ 1If (condition) statement
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل١:
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﺑﻠﻐﺔ ++ Cﻹﻇﻬﺎر اﻟﻌﺒﺎرة x is positiveﻋﻠﻰ ﺷﺎﺷﺔ اﻟﻌﺮض؟
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;5=int x
)0>if (x
;”cout<<x<<“ x is positive
;0return
}
ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﺳﺘﻈﻬﺮ اﻟﺠﻤﻠﺔ x is positiveﻋﻠﻰ اﻟﺸﺎﺷﺔ ﻻن اﻟﺸﺮط )0>(x
ﻣﺘﺤﻘﻖ ﻓﺎﻟﺨﻤﺴﺔ ﺑﺎﻟﻄﺒﻊ اﻛﺒﺮ ﻣﻦ اﻟﻌﺪد ﺻﻔﺮ ﻓﺎﻟﻨﺘﻴﺠﺔ ﻛﺎﻟﺘﺎﻟﻲ:
x is positive
ﻣﺜﺎل٢:
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ++ Cاﻟﺘﺎﻟﻲ ﻟﻴﺤﺴﺐ اﻟﻘﻴﻤﺔ اﻟﻤﻄﻠﻘﺔ ﻟـ Yاﻟﻤﻌﺮﻓﺔ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ:
0=>x;x
=|Y=|x
0<-x;x
”#include “ stdafx.h
”#include “ iostream.h
)( main
{ ﻧﻘﻮم ﺑﺈدﺧﺎل اﻟﻌﺪد 01
;int x
;cin>>x
;if (x>=0) cout<<x
;else cout<<-x
;0return
}
ﻓﻲ اﻟﻤﺜﺎل أﻋﻼه ﺳﻮف ﻧﺪﺧﻞ اﻟﺮﻗﻢ 01 ﻟﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ :
01
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل٣:
ﻗﻢ ﺑﺈﻧﺸﺎء ﺑﺮﻧﺎﻣﺞ ﻹدﺧﺎل ﻋﻼﻣﺔ ﻃﺎﻟﺐ ﻓﺈذا ﻛﺎﻧ ﺖ اﻟﻌﻼﻣ ﺔ اﻛﺒ ﺮ أو ﺗﺴ ﺎوي 09 ﻓﺎﻟﺘﻘ ﺪﻳﺮ
) (Aأﻣ ﺎ إذا ﻛﺎﻧ ﺖ اﻛﺒ ﺮ أو ﺗﺴ ﺎوي 08 ﻓﺎﻟﺘﻘ ﺪﻳﺮ ) ( Bأﻣ ﺎ إذا ﻛﺎﻧ ﺖ اﻛﺒ ﺮ أو ﺗﺴ ﺎوي
07 ﻓﺎﻟﺘﻘ ﺪﻳﺮ ) (Cأﻣ ﺎ إذا ﻛﺎﻧ ﺖ اﻛﺒ ﺮ أو ﺗﺴ ﺎوي 06 ﻓﺎﻟﺘﻘ ﺪﻳﺮ )( Dأﻣ ﺎ إذا ﻛﺎﻧ ﺖ اﻛﺒ ﺮ
أو ﺗﺴﺎوي 05 ﻓﺎﻟﺘﻘﺪﻳﺮ ) ( Eﻣﺎ ﻋﺪا ذﻟﻚ ﻓﺎﻟﺘﻘﺪﻳﺮ)(F؟
”#include “ stdafx.h
”#include “ iostream.h
)( main ﺗﻌﺮﻳﻒ اﻟﺪرﺟﺔ
{
;int mark
;char grade ﺗﻌﺮﻳﻒ اﻟﺘﻘﺪﻳﺮ
;cin>>mark
)09=>if (mark
;'grade='a
else ﺳﻨﺪﺧﻞ ﻣﺜﻼ
)08=>if (mark اﻟﺪرﺟﺔ 58
;'grade='b
else
)07=>if (mark
;'grade='c
else
)06=>if (mark
;'grade='d
else
)05=>if (mark
;'grade='e
else
;'grade='f
;cout<<grade
;0return
}
ﻓ ﻲ اﻟﻤﺜ ﺎل أﻋ ﻼه ﻗﻤﻨ ﺎ ﺑﺘﻌﺮﻳ ﻒ اﻟﻤﺘﻐﻴ ﺮ markﺑﺄﻧ ﻪ ﻋ ﺪد ﺻ ﺤﻴﺢ ﺛ ﻢ ﻗﻤﻨ ﺎ ﺑﻌ ﺪ ذﻟ ﻚ
ﺑﺘﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ gradeﺑﺄﻧﻪ ﻗﻴﻤﺔ ﻧﺼﻴﻪ وﻫﻮ اﻟﺘﻘﺪﻳﺮ.
ﻃﺒﻌﺎ ﻗﻤﻨﺎ ﺑﺈدﺧﺎل اﻟﺪرﺟﺔ وﻫﻲ 58 ﺳﻮف ﺗﻜﻮن اﻟﻌﻼﻣﺔ ﻛﺎﻟﺘﺎﻟﻲ:
B
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﺼﻴﻐﺔ اﻟﺜﺎﻧﻴﺔ
:( اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲif..else)وﺗﺄﺧﺬ اﻟﺒﻨﻴﺔ اﻟﻌﺎﻣﻠﺔ ﻟﺠﻤﻠﺔ إذا .... وإﻻ
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; ﻟﻄﺒﺎﻋﺔ اﻟﺘﻘﺪﻳﺮ
} :٥ﻣﺜﺎل
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻹدﺧ ﺎل ﻃﻮﻟ ﻚ وﻃ ﻮل زﻣﻴﻠ ﻚ ، وإذا ﻛ ﺎن ﻃﻮﻟ ﻚ اﻛﺒ ﺮ ﻣ ﻦ ﻃ ﻮل زﻣﻴﻠ ﻚ
اﻃﺒﻊ ﻃﻮﻟﻚ ، واﺣﺴﺐ ﻣﻌﺪل اﻷﻃﻮال ، ﺛﻢ اﻃﺒﻌﻪ وأﻻ
اﻃﺒﻊ ﻃﻮل زﻣﻴﻠﻚ ، واﻃﺒﻊ ﺿﻌﻒ اﻟﻄﻮل وﻧﺼﻒ اﻟﻄﻮل؟
اﻟﺤـﻞ/
ﺳﻨﺮﻣﺰ ﻟﻄﻮﻟﻚ 1 tوﺳﻨﺮﻣﺰ ﻟﻄﻮل زﻣﻴﻠﻚ 2t
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
أدﺧﻞ اﻷﻃﻮال
;2int t1,t
;2cin>>t1>>t
)2if (t1>t
{
;1cout<<t ﻃﺒﺎﻋﺔ ﻣﻌﺪل
;2/)2cout<<(t1+t اﻷﻃﻮال
}
else وإﻻ
{
;2cout<<t ﻟﻄﺒﺎﻋﺔ ﺿﻌﻒ اﻟﻄﻮل
;2*2cout<<t
;2/2cout<<t
} ﻟﻄﺒﺎﻋﺔ ﻧﺼﻒ اﻟﻄﻮل
;0return
}
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
switch statement ﺟﻤﻠﺔ اﻟﺘﻮزﻳﻊ
: c++ اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ ﻓﻲ ﻟﻐﺔSwitch ﺗﺄﺧﺬ ﺟﻤﻠﺔ
Switch (expression) ﺗﻌﺒﻴﺮ ﻗﻴﻤﺘﻪ ﺻﺤﻴﺤﺔ
{
ﺟﻤﻠﺔ أو ﺟﻤﻞ ﺗﻨﻔﺬ ﻋﻨﺪﻣﺎ
Case constant1: statments1; break; ﺳﺎوي اﻟﺘﻌﺒﻴﺮ ﻗﻴﻤﺔ
Case constant2: statments2; break; constant1
......................................................
......................................................
ﺟﻤﻠﺔ أو ﺟﻤﻞ ﺗﻨﻔﺬ ﻋﻨﺪﻣﺎ
...................................................... ﺳﺎوي اﻟﺘﻌﺒﻴﺮ ﻗﻴﻤﺔ
Case constantn: statmentsn; break; constant2
Default; last statements;
}
ﻳﺘﻢ ﺗﻨﻔﻴﺬﻫﺎ ﻋﻨﺪ ﻋﺪم ﺗﻨﻔﻴﺬ
ﺟﻤﻴﻊ اﻟﺤﺎﻻت اﻟﻮاردة
Switch أﻋﻼه ﻓﻲ ﺑﻨﻴﺔ
:٦ﻣﺜﺎل
#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
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺟﻤﻠﺔ أداة اﻟﺸﺮط ?
وﻫﻲ أداة ﺳﺮﻳﻌﺔ ﻣﻜﺎﻓﺌﺔ ﻟﺒﻨﻴﺔ إذا ... وإﻻ ، وﻗﺪ ﻣﺮ ﻣﻌﻨﺎ ﻛﻴﻔﻴﺔ اﺳﺘﻌﻤﺎﻟﻬﺎ ﻓﻲ أول
اﻟﻜﺘﺎب وﺳﻮف ﻧﻮرد ﻫﻨﺎ ﺻﻮرﺗﻬﺎ اﻟﻌﺎﻣﺔ:
;2Variable=(condition)? Result:result
وﻣﻌﻨﺎﻫ ﺎ: اﻧ ﻪ ﻳ ﺘﻢ ﺗﻨﻔﻴ ﺬ اﻟﻨﺘﻴﺠ ﺔ اﻷوﻟ ﻰ 1 resultﻋﻨ ﺪﻣﺎ ﻳﻜ ﻮن ﺟ ﻮاب اﻟﺸ ﺮط
conditionﻣﺘﺤﻘﻘ ﺎ ) ، (trueوإﻻ ﻓﻴ ﺘﻢ ﺗﻨﻔﻴ ﺬ اﻟﻨﺘﻴﺠ ﺔ اﻟﺜﺎﻧﻴ ﺔ 2 resultﻋﻨ ﺪﻣﺎ ﻳﻜ ﻮن
ﺟﻮاب اﻟﺸﺮط ). (false
ﻣﺜﺎل٧:
”#include “ stdafx.h
”#include “ iostream.h
)(void main
{
;int a,b
;5=a
;01=if (a>1) b
else
;02=b
;cout<<b
}
وﻣﻌﻨﺎﻫﺎ أن bﺗﺄﺧ ﺬ اﻟﻘﻴﻤ ﺔ 01 إذا ﺗﺤﻘ ﻖ اﻟﺸ ﺮط 1> aوﺗﺄﺧ ﺬ اﻟﻘﻴﻤ ﺔ 02 إذا ﻟ ﻢ ﻳﺘﺤﻘ ﻖ
اﻟﺸﺮط ﻧﻔﺴﻪ .
واﻟﻨﺘﻴﺠﺔ:
01
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﺘﻜﺮار وﺣﻠﻘﺎت اﻟﺘﻜﺮار Repetition and Loops
ﺗﻮﻓﺮ ﻟﻐﺔ ++ ، Cﻛﺴﺎﺋﺮ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ، ﻋﺪدا ﻣ ﻦ أﺳ ﺎﻟﻴﺐ اﻟﺘﻜ ﺮار اﻟﻤﺸ ﺮوط ، وﻏﻴ ﺮ
اﻟﻤﺸﺮوط وﻣﻦ ﻫﺬه اﻷﺳﺎﻟﻴﺐ:
أﺳﻠﻮب اﻟﺘﻜﺮار ﺑﺎﺳﺘﻌﻤﺎل ﺣﻠﻘﺔ For
ﻳﻤﺘﻠﻚ أﺳﻠﻮب اﻟﺘﻜﺮار ﺑﺎﺳﺘﻌﻤﺎل forﻗﻮة وﻣﺮوﻧﺔ ، ﻻ ﺗﺘﻮﻓﺮان ﻓﻲ ﻏﻴﺮﻫﺎ ﻣﻦ اﻟﻠﻐﺎت.
اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ اﻷوﻟﻰ
;For ( initial-value; condition; increment ) statement
اﻟﻘﻴﻤﺔ ﺷﺮط ﻳﻘﻴﺪ اﻟﺰﻳﺎدة ﺟﻤﻠﺔ ﻳﺘﻢ
اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻌﺪاد ﺣﺮﻛﺔ For اﻟﻤﻨﺘﻈﻤﺔ ﺗﻜﺮار
ﺣﻠﻘﺔ For وﻏﺎﻟﺒﺎ ﻣﺎ ﻓﻲ اﻟﻌﺪاد ﺗﻨﻔﻴﺬﻫﺎ ﻋﺪد
ﻳﺤﻮي ﻗﻴﻤﺔ ﻣﺮات ﺗﻜﺮار
ﻧ ﻬﺎﺋﻴﺔ For
ﺗﻘﻮم ﺟﻤﻠﺔ Forﻫﻨﺎ ﻣﺒﺘﺪﺋﺔ ﺑﻘﻴﻤ ﺔ اﻟﻌ ﺪاد اﻻﺑﺘﺪاﺋﻴ ﺔ ﺑﺘﻨﻔﻴ ﺬ اﻟﺠﻤﻠ ﺔ 1statementأول ﻣ ﺮة
، وﻓ ﻲ اﻟﻤ ﺮة اﻟﺘﺎﻟﻴ ﺔ ﺗ ﺰداد اﻟﻘﻴﻤ ﺔ اﻻﺑﺘﺪاﺋﻴ ﺔ ﻟﻠﻌ ﺪاد ﺑﻤﻘ ﺪار اﻟﺰﻳ ﺎدة ﺛ ﻢ ﺗﻨﻔ ﺬ ﺟﻤﻠ ﺔ
1 statementﻣﺮة ﺛﺎﻧﻴﺔ .. وﻫﻜﺬا ﺣﺘﻰ ﻳﺴ ﺘﻜﻤﻞ اﻟﺸ ﺮطconditionأﻣ ﺮ إﻧﻬ ﺎء ﻋﻤﻠﻴ ﺎت
اﻟﺘﻜ ﺮار واﻟﺨ ﺮوج ﻣ ﻦ ﺣﻠﻘ ﺔ ، Forواﻷﻣﺜﻠ ﺔ اﻟﺘﺎﻟﻴ ﺔ ﺗﻮﺿ ﺢ ﻛﻴﻔﻴ ﺔ اﺳ ﺘﻌﻤﺎل ﺣﻠﻘ ﺎت
اﻟﺘﻜﺮار ﺑﺠﻤﻠﺔ :For
ﻣﺜﺎل٨:
”#include “ stdafx.h
”#include “ iostream.h
)( main اﻟﻘﻴﻤﺔ اﻟﺘﻨﺎزﻟﻴﺔ
{ ﻟﻠﻌﺪاد
;char x
)1+for (x=1;x<=10;x=x اﻟﺰﻳﺎدة ﺑﻤﻘﺪار 1
;”cout<<“Islam
;cout<<endl
;0return اﻟﺘﻜﺮار إﻟﻰ
01
}
واﻟﻨﺘﻴﺠﺔ ﻛﺎﻟﺘﺎﻟﻲ:
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
Islam Islam Islam Islam Islam Islam Islam Islam Islam Islam
10 Ù 1 01 ﻣﺮات ﺑﺪاﻳﺔ ﻣﻦ اﻟﻘﻴﻤﺔIslam ﻧﻼﺣﻆ ﻫﻨﺎ اﻧﻪ ﺗﻢ ﺗﻜﺮار ﻛﻠﻤﺔ
:٩ﻣﺜﺎل
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻟﻄﺒﺎﻋﺔ ﻗﻴﻤﺔ اﻟﻌﺪاد ﻣﻦ 1 إﻟﻰ 01؟
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
int a;
for (a=1;a<=10;++a)
cout<<a<<endl;
return0;
}
:وﺗﻜﻮن ﻧﺘﺎﺋﺞ اﻟﻄﺒﺎﻋﺔ ﻋﻠﻰ اﻟﺸﺎﺷﺔ ﻫﻜﺬا
1 اﻻﺑﺘﺪاﺋﻴﺔa ﻗﻴﻤﺔ
2
3
4
5
6
7
8
9
10 اﻟﻨﻬﺎﺋﻴﺔa ﻗﻴﻤﺔ
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:١٠ﻣﺜﺎل
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻟﻄﺒﺎﻋﺔ اﻷﻋﺪاد اﻟﻔﺮدﻳﺔ ﻣﻦ 1 إﻟﻰ 51؟
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
int a;
for (a=1;a<=15;a=a+2)
cout<<a<<endl;
return0;
}
وﻣﻦ اﻟﻤﻼﺣﻆ أﻧﻨﺎ ﺟﻌﻠﻨﺎ ﻗﻴﻤ ﺔ اﻟﺰﻳ ﺎدة 2 وﻟ ﻴﺲ 1 ﻻﻧ ﻪ ﻃﻠ ﺐ أﻋ ﺪاد ﻓﺮدﻳ ﺔ ﺑﺪاﻳ ﺔ ﺑﺎﻟﻘﻴﻤ ﺔ
15 1 وﺣﺘﻰ
:واﻟﻨﺘﻴﺠﺔ ﻛﺎﻟﺘﺎﻟﻲ
1
3
5
7
9
11
13
15
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ اﻟﺜﺎﻧﻴﺔ
For ( initial-value; condition; increment )
{
ﺟﻤﻠﺔ أو اﻛﺜﺮ
statement;
}
:ﺷﺎﻫﺪ اﻷﻣﺜﻠﺔ اﻟﺘﺎﻟﻴﺔ ﻟﻨﺘﻌﺮف اﻛﺜﺮ ﻋﻠﻰ اﻟﺼﻴﻐﺔ أﻋﻼه
:١١ﻣﺜﺎل
#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;
}
:واﻟﻨﺎﺗﺞ ﺳﻮف ﻳﻜﻮن اﻟﺘﺎﻟﻲ
1
-1
-3
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:١٢ﻣﺜﺎل
#include “ stdafx.h”
#include “ iostream.h”
main ()
{ int a,b,c,x; اﻟﻘﻴﻤﺔ اﻻﺑﺘﺪاﺋﻴﺔ
a=6;
b=1;
c=3; :واﻟﻨﺎﺗﺞ ﻛﺎﻟﺘﺎﻟﻲ
for (x=11;(a*c)>(x*b);x--)
{
x=x+3;
اﻛﺜﺮ ﻣﻦ ﺟﻤﻠﺔ ﺑﻴﻦ
c=c-2;
Block اﻟﻘﻄﻌﺘﻴﻦ
cout<<x<<”*”;
}
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
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ـ ـ ـ
ﺣﻠﻘـﺎت اﻟﺘﻜ ـﺮار اﻟﻤﺘﺪاﺧﻠ ـﺔ Nested (Multiple) for
Loops
ﺗﺄﺧﺬ ﺻﻴﻐﺔ ﺣﻠﻘﺎت اﻟﺘﻜﺮار اﻟﻤﺘﺪاﺧﻠﺔ اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ:
)...( For
)...( For
)...( For
………………………….
………………………….
;Statements
ﻓﻠﻮ أﺧﺬﻧﺎ ﺣﺎﻟﺔ ﺣﻠﻘﺘﻴﻦ ﻣﺘﺪاﺧﻠﺘﻴﻦ ﻓﺎﻧﻬﻤﺎ ﺗﻜﺘﺒﺎن ﻋﻠﻰ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ:
)...(For
)...( For
;Statements
ﺗﺴﻤﻰ اﻟﺤﻠﻘﺔ ﺗﺴﻤﻰ اﻟﺤﻠﻘﺔ
اﻟﺪاﺧﻠﻴﺔ inner اﻟﺨﺎرﺟﻴﺔ outer
loop loop
ﺟﻤﻠﺔ أو ﺟﻤﻞ ﺗﻜﺮر
ﺣﺴﺐ أواﻣﺮ
اﻟﺤﻠﻘﺘﻴﻦ
وﺗﻜﻮن ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ اﻟﺠﻤﻠﺔ )أو اﻟﺠﻤﻞ( ﺟﺰءا ﻣﻜﺮرا ﻣﺮﺗﺒﻄﺎ ﺑﺎﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﻴﺔ ،
واﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ ﺗﺘﻜﺮر ﺣﺴﺐ أواﻣﺮ اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ وﻫﻜﺬا ...
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
وﻓﻲ ﺣﺎﻟﺔ اﻟﺜﻼث ﺣﻠﻘﺎت اﻟﻤﺘﺪاﺧﻠﺔ ، ﻓﺈﻧﻬﺎ ﺗﻜﺘﺐ ﻋﻠﻰ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ:
)...( For
)...( For
)...( For ﺟﻤﻠﺔ أو ﺟﻤﻞ ﺗﺘﻜﺮ
;Statement ﺣﺴﺐ أواﻣﺮ
اﻟﺤﻠﻘﺎت اﻟﺜﻼث
اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ
اﻟﺤﻠﻘﺔ
اﻟﻮﺳﻄﻲ
اﻟﺤﻠﻘﺔ
اﻟﺪاﺧﻠﻴﺔ
ﻣﺜﺎل٤١:
”#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
;0return اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﻴﺔ ﺗﺘﻜﺮر 4
} ﻣﺮات ﻟﻜﻞ ﻗﻴﻤﺔ ﻣﻦ ﻗﻴﻢ Iأي
ﻣﺠﻤﻮع 21 ﻣﺮة
ﻻﺣ ﻆ ﻫﻨ ﺎ أن اﻟﺤﻠﻘ ﺔ اﻟﺪاﺧﻠﻴ ﺔ ﺗﺘﻜ ﺮر ٤ ﻣ ﺮات ﻟﻜ ﻞ ﻗﻴﻤ ﺔ ﻣ ﻦ ﻗ ﻴﻢ ، Iﻋ ﺪاد اﻟﺤﻠﻘ ﺔ
اﻟﺨﺎرﺟﻴ ﺔ ، وﻛ ﺬﻟﻚ ﺟﻤﻠ ﺔ << ، coutوﺑﻤ ﺎ أن ، Iﺗﺄﺧ ﺬ 3 ﻗ ﻴﻢ ﻓ ﺎن اﻟﺤﻠﻘ ﺔ اﻟﺪاﺧﻠﻴ ﺔ
ﺗﺘﻜﺮر 21 ﻣﺮة ، أﻣﺎ اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ ﻓﺘﻜﺮر ﻧﻔﺴﻬﺎ ﺑﻨﻔﺴﻬﺎ ﻓﺘﺘﻜﺮ 21 ﻣﺮة ﻓﻘﻂ.
واﻟﻨﺎﺗﺞ:
2196386424321
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل٥١:
”#include “ stdafx.h
”#include “ iostream.h اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ ﻳﺘﻐﻴﺮ ﻋﺪادﻫﺎ
)( main ﺑﻴﻦ 2 و 02 ﺑﺰﻳﺎدة ﻣﻨﻈﻤﺔ
{ ﻗﺪرﻫﺎ 2
;int i,j
)2=+for (i=2;i<=20;i
)3=-for (j=30;j>=3;j
;cout<<i<<j<<endl اﻟﺤﻠﻘﺔ ا ﻟﺪاﺧﻠﻴﺔ ﻳﺘﻐﻴﺮ ﻋﺪادﻫﺎ ﺑﻴﻦ
;0return 03 و 3 ﺑﺰﻳﺎدة ﻣﻨﺘﻈﻤﺔ ﻗﺪرﻫﺎ-3
}
واﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن ﻛﺒﻴﺮ ﻟﺬﻟﻚ ﺳﺄﻋﻄﻴﻜﻢ ﺟﻮاب اﻟﺤﻞ ﻟﻠﺴﻄﺮ اﻷول واﻟﺴﻄﺮ اﻷﺧﻴﺮ وﻣﺎ
ﺑﻴﻨﻬﻤﺎ ﻟﻜﻢ.
اﻟﺴﻄﺮ اﻷول: 2161
اﻟﺴﻄﺮ اﻷﺧﻴﺮ : 302
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
أﺳﻠﻮب اﻟﺘﻜﺮار ﺑﺎﺳﺘﻌﻤﺎل ﺣﻠﻘﺔ While & Do
أﺳ ﻠﻮب اﻟﺘﻜ ﺮار ﺑﺎﺳ ﺘﻌﻤﺎل ﺣﻠﻘ ﺔ whileأﺳ ﻠﻮب آﺧ ﺮ ﻳﻤﺎﺛ ﻞ أﺳ ﻠﻮب ﺣﻠﻘ ﺔ ، forﻣ ﻊ
ﺑﻌ ﺾ اﻻﺧﺘﻼﻓ ﺎت اﻟﺒﺴ ﻴﻄﺔ ، وﻫ ﻮ أﺳ ﻠﻮب ﻳﺜ ﺮى ﻟﻐ ﺔ ++ ، Cوﻳﺰدﻫ ﺎ ﻗ ﻮة وﻣﺮوﻧ ﺔ ،
واﻟﺸﻜﻞ اﻟﻌﺎم ﻟﻬﺬا اﻷﺳﻠﻮب:
;While (conditions) statements
ﺷﺮط أو اﻛﺜﺮ ﻳﻨﻈﻢ
ﻋﻤﻠﻴﺔ اﻟﺘﻜﺮار ﺟﻤﻠﺔ ﻳﺘﻢ ﺗﻨﻔﻴﺬﻫﺎ
ﺣﺴﺐ اﻟﺸﺮط
conditions
وﻣﻌﻨﻰ ﺣﻠﻘﺔ اﻟﺘﻜﺮار whileﻫﻮ اﻷﺗﻲ:
آي ﻣﺎ دام اﻟﺸﺮط ) أو اﻟﺸ ﺮوط ( ﻣﺘﺤﻘﻘ ﺎ )وﺟﻮاﺑ ﻪ ، (trueﻓﻴ ﺘﻢ ﺗﻜ ﺮار ﺗﻨﻔﻴ ﺬ اﻟﺠﻤﻠ ﺔ أو
اﻟﺠﻤ ﻞ ) ، (statementsوﻳﻨﺘﻘ ﻞ ﺗﺴﻠﺴ ﻞ ﺗﻨﻔﻴ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ إﻟ ﻰ اﻟﺠﻤﻠ ﺔ اﻟﺘ ﻲ ﺗﻠ ﻲ ﺣﻠﻘ ﺔ
. while
واﻷﻣﺜﻠﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻮﺿﺢ ذﻟﻚ:
ﻣﺜﺎل٦١:
”#include “ stdafx.h
”#include “ iostream.h
)( main
;{ int a
;1=a
)3<while (a ﻃﺎﻟﻤﺎ اﻟﺸﺮط
;++cout<<a
;0return
} اﻟﺰﻳﺎدة ﺑﻤﻘﺪار 1
ﺑﻌﺪ ﻃﺒﺎﻋﺔ
اﻟﻨﺘﻴﺠﺔ
واﻟﻨﺎﺗﺞ
ﺳﻮف ﻳﻜﻮن:
21
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:١٧ﻣﺜﺎل
#include “ stdafx.h”
#include “ iostream.h”
main () اﻓﻌﻞ
{ int a;
a=1;
do
{ اﻟﺰﻳﺎدة ﺑﻤﻘﺪار
cout<<”*”; 1 اﻟﻘﻴﻤﺔ
a++;
}
while (a<=4) اﻗﻞ أوa ﻃﺎﻟﻤﺎ
return0; 4 ﻳﺴﺎوي اﻟﻘﻴﻤﺔ
} ارﺟﻊ اﻟﺘﻜﺮار
واﻟﻨﺎﺗﺞ
****
:١٨ﻣﺜﺎل
#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
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل٩١:
اﻛﺘ ﺐ ﺑﺮﻧﺎﻣﺠ ﺎ ﻳﻄﻠ ﺐ ﻣ ﻦ اﻟﻤﺴ ﺘﺨﺪم إدﺧ ﺎل ﻗﻴﻤ ﺔ ﻋﺪدﻳ ﺔ ، وﻃﺎﻟﻤ ﺎ أن اﻟﻘﻴﻤ ﺔ اﻟﻤﺪﺧﻠ ﺔ +
ﻳﻄﺒﻊ * ﻋﻠﻰ ﺳﻄﺮ ﺟﺪﻳﺪ؟
اﻟﺤـﻞ/
”#include “ stdafx.h
”#include “ iostream.h
)( main ﻧﺪﺧﻞ اﻟﺮﻗﻢ
;{ int a وﻟﻴﻜﻦ 01
;”cout<<”please enter a number
;cin>>a
)0=>while (a
{ ﻃﺎﻟﻤﺎ أن اﻟﺮﻗﻢ
;cout<<”*”<<endl اﻟﻤﺪﺧﻞ اﻛﺒﺮ أو
;”cout<<” please enter a number ﻳﺴﺎوي 0
;cin>>a
}
إذا ﺗﺤﻘﻖ
;0return
اﻟﺸﺮط اﻃﺒﻊ
}
ﻃﺒﻌﺎ ﻗﻤﻨﺎ ﺑﺈدﺧﺎل اﻟﺮﻗﻢ 01 واﻟﻨﺘﻴﺠﺔ ﺳﺘﻜﻮن:
*
ﻻن اﻟﻌ ﺪد 01 ﻋ ﺪد ﻣﻮﺟ ﺐ ﻟﻜ ﻦ ﺣ ﺎول أن ﺗ ﺪﺧﻞ ﻋ ﺪد ﺳ ﺎﻟﺐ ﻓﻠ ﻦ ﻳﻄﺒ ﻊ ﻟ ﻚ ﺷ ﻲ ﻟﻌ ﺪم
ﺗﺤﻘﻖ اﻟﺸﺮط ، وﻻ ﻧﻨﺴﻰ أﺧ ﻮاﻧﻲ أﻧﻨ ﺎ وﺿ ﻌﻨﺎ اﻟﺠﻤ ﻞ أو اﻟﺠﻤﻠ ﺔ اﻟﺨﺎﺻ ﺔ ﺑﺎﻟﻄﺒﺎﻋ ﺔ ﺑ ﻴﻦ
اﻟﻘﻄ ﻊ {} Blockﻻﻧ ﻪ وﺟ ﺪ اﻛﺜ ﺮ ﻣ ﻦ ﺟﻤﻠ ﺔ ﻟ ﺬﻟﻚ ﻳﺠ ﺐ وﺿ ﻊ اﻟﻘﻄ ﻊ ﻟﻜ ﻦ ﻋﻨ ﺪ ﻋ ﺪم
وﺟﻮد اﻛﺜﺮ ﻣﻦ ﺳﻄﺮ أو ﺟﻤﻠﻪ ﻛﻤﺜﺎل )٢١( ﻓﻼ ﻳﺠﻮز وﺿﻌﻬﺎ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺣﻠﻘﺎت Whileاﻟﻤﺘﺪاﺧﻠﺔ Nested While Loops
ﺗﺸ ﺒﺔ ﺣﻠﻘ ﺎت Whileاﻟﻤﺘﺪاﺧﻠ ﺔ ﺣﻠﻘ ﺎت forاﻟﻤﺘﺪاﺧﻠ ﺔ ، ﻓﻤ ﺜﻼ ﺧ ﺬ ﺣﻠﻘﺘ ﻲ اﻟﺘﻜ ﺮار
اﻟﻤﺘﺪاﺧﻠﺘﻴﻦ اﻟﺘﺎﻟﻴﺘﻴﻦ:
ﻣﺜﺎل٠٢:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{ ﺣﻠﻘﺎت ﺗﻜﺮار 3
;1=int i=j ﻣﺮات
)3=<while (i
{
)4=<while(j
{ اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﻴﺔ
;cout<<”/n”<<i*j ﺗﺘﻜﺮر 21 ﻣﺮة
;++j
}
زﻳﺎدة ﻣﻨﺘﻈﻤﺔ ﻓﻲ
;++i
ﻋﺪاد Iﺑﻤﻘﺪار 1
;1=j
}
;0return إﻋﺎدة ﺗﻌﺮﻳﻒ ﻗﻴﻤﺔ jاﻻﺑﺘﺪاﺋﻴﺔ
} ﻋﻨﺪ ﺑﺪاﻳﺔ ﺣﻠﻘﺔ j
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺟﻤﻠﺔ اﻹﻳﻘﺎف Break
ﻣ ﻦ اﻻﺳ ﻢ ﻧﺴ ﺘﻄﻴﻊ أن ﻧﻼﺣ ﻆ أن وﻇﻴﻔ ﺔ Breakﻫ ﻲ إﻳﻘ ﺎف ﺑﻨﻴ ﺔ أو ﺣﻠﻘ ﺔ ﺗﻜ ﺮار ﻋﻨ ﺪ
ﺗﺤﻘﻖ ﺷﺮط أو ﺷ ﺮوط ﻣﻌﻴﻨ ﺔ ، وﻋﻨ ﺪ ﺗﻨﻔﻴ ﺬﻫﺎ ﻳ ﺘﻢ اﻟﻘﻔ ﺰ إﻟ ﻰ ﺳﻠﺴ ﻠﺔ اﻟﺠﻤ ﻞ اﻟﺘﺎﻟﻴ ﺔ ﻟﻠﺒﻨﻴ ﺔ
أو ﺣﻠﻘ ﺔ اﻟﺘﻜ ﺮار ، وﺗﺴ ﺘﻌﻤﻞ Breakأﻳﻀ ﺎ ﻓ ﻲ إﻳﻘ ﺎف ﺣﻠﻘ ﺔ اﻟﺘﻜ ﺮار ﻻﻧﻬ ﺎﺋﻲ ، أو
اﻟﺨﺮوج ﻣﻨﻬﺎ إﻟﻰ اﻟﺠﻤﻞ اﻟﺘﻲ ﺗﻠﻴﻬﺎ وﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ:
ﻣﺜﺎل١٢:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int i
)for (i=1;i<100;++i
{
;cout<<i ﻳﻮﻗﻒ ﺗﻨﻔﻴﺬ ﻫﺬه اﻟﺠﻤﻠﺔ
;if (i= =10) break ﺣﻠﻘﺎت اﻟﺘﻜﺮار ﻋﻨﺪﻣﺎ
} ﻳﺼﺒﺢ 01=i
;0return
}
وﻃﺒﻌﺎ ﺳﻴﻘﻮم ﺑﺘﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺣﺘﻰ اﻟﻌﺪد 01
واﻟﻨﺘﺎﺋﺞ:
01987654321
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:٢٢ﻣﺜﺎل
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
int number;
for (number=1; number<=100;++ number)
{
if (number%2) // for odd values
break;
else if (number%4)
break;
else if (number%6)
break;
else
cout<< number<<endl;
}
return0;
}
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺟﻤﻠﺔ اﻻﺳﺘﻤﺮار continue
ﺗﻌﻤ ﻞ ﺟﻤﻠ ﺔ اﻻﺳ ﺘﻤﺮار continueﻋﻠ ﻰ ﺗﺠ ﺎوز ﺗﻨﻔﻴ ﺬ ﺑﻘﻴ ﺔ اﻟﺠﻤ ﻞ ﻓ ﻲ اﻟﺘﻜ ﺮار ﺧ ﻼل
اﻟﺪورة اﻟﺤﺎﻟﻴﺔ واﻻﻧﺘﻘﺎل إﻟﻰ اﻟﺪورة اﻟﺜﺎﻧﻴﺔ:
ﻣﺜﺎل٣٢:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int x,n
do ﺗﻌﻤﻞ ﻋﻠﻰ ﺗﺠﺎوز ﺗﻨﻔﻴﺬ
{
اﻟﺠﻤﻠﺘﻴﻦ اﻟﺘﺎﻟﻴﺘﻴﻦ
;cin>>x>>n وﺗﺒﺪاء دورة ﺟﺪﻳﺪة إذا
;if (n<1) continue ﺗﺤﻘﻖ اﻟﺸﺮط
;cout<<x
;--n
}
;)1<while (n
;0return
}
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:٢٤ﻣﺜﺎل
ﺗﻄﺒﻊ ﺟﻤﻴﻊ اﻷرﻗﺎم ﻣﻦ 1 إﻟﻰ 001 ﻣﺎ ﻋﺪا اﻷرﻗﺎم اﻟﺘﻲ ﺗﻘﺴﻢ ﻋﻠﻰ 2 و 4 و6 ﺑﺪون
:ﺑﺎق
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
int number;
for (number=1;number<=100;++number)
{
if (number%2)
continue;
else if (number%4)
continue ;
else if (number%6)
continue;
else
cout<<number<<endl;
}
return0;
}
:اﻟﻨﺎﺗﺞ
12
24
36
48
60
72
84
96
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺟﻤﻠﺔ اﻟﺨﺮوج )(exit
ﺗﻌﻤﻞ ﻫﺬه اﻟﺪاﻟﺔ ﻋﻠ ﻰ إﻳﻘ ﺎف ) أو اﻟﺨ ﺮوج ﻣ ﻦ ( اﻟﺒﺮﻧ ﺎﻣﺞ ﻓ ﻲ ﻣﻜ ﺎن ﻣﻨ ﻪ ، وﺗﺸ ﺒﺔ end
ﻓﻲ ﻟﻐ ﺔ ﺑﻴﺴ ﻚ ، وﺗﻜ ﻮن ﻗﻴﻤ ﺔ اﻟﺪاﻟ ﺔ ﺻ ﻔﺮا )0( exitﻋﻨ ﺪﻣﺎ ﻳ ﺘﻢ اﻟﺨ ﺮوج ﻣ ﻦ اﻟﺒﺮﻧ ﺎﻣﺞ
ﺑﻨﺠ ﺎح وأﻻ ﻓ ﺎن ﻗﻴﻤ ﺔ اﻟﺪاﻟ ﺔ ﺗﻜ ﻮن )1( exitوﺗﻮﻗ ﻒ اﻟﺒﺮﻧ ﺎﻣﺞ ﻋﻨ ﺪ وﺟ ﻮد ﺧﻄ ﺄ أو ﻧﺤ ﻮ
ذﻟ ﻚ ، وﻓ ﻲ ﻫ ﺬه اﻟﺤﺎﻟ ﺔ ، وﻳﻌﻴ ﺪ اﻟﺒﺮﻧ ﺎﻣﺞ ﺗﻨﻔﻴ ﺬه إﻟ ﻰ ﻧﻈ ﺎم اﻟﺘﺸ ﻐﻴﻞ operating
. system
ﻣﺜﺎل٥٢:
”#include “ stdafx.h
”#include “ iostream.h ﻣﺜﺎل٣٢:
)( main
{
;char ma
;cin>>ma
;)1(if ( ma != ‘A’) exit
;cout<<”\n”<<ma
;0return
}
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺟﻤﻠﺔ اﻻﻧﺘﻘﺎل goto
ﻣ ﻦ اﻟﻤﻌ ﺮوف أن ﻣﻌﻈ ﻢ ﻟﻐ ﺎت اﻟﺒﻨﻴﻮﻳ ﺔ اﻟﺤﺪﻳﺜ ﺔ ، ﺗﺤ ﺮص ، ﻓ ﻲ ﻏﺎﻟ ﺐ اﻷﺣﻴ ﺎن أﻻ
ﺗﺴﺘﻌﻤﻞ ﺟﻤﻠﺔ gotoﻣ ﻦ اﺟ ﻞ اﻟﺘﺄﻛﻴ ﺪ ﻋﻠ ﻰ اﻟﻤﺒ ﺮﻣﺞ ، أن ﻳ ﺘﻌﻠﻢ ﺑﺮاﻣﺠ ﻪ ﺑﻄﺮﻳﻘ ﺔ ﺑﻨﻴﻮﻳ ﺔ
structuredذاﺗﻴﺔ اﻟﻤ ﺪاﺧﻞ واﻟﻤﺨ ﺎرج ، واﻟﻌﻤﻠﻴ ﺎت ، دون ﺗ ﺪﺧﻞ ﻣ ﻦ اﻟﻤﺒ ﺮﻣﺞ ﺑﻘﻮﻟ ﻪ :
اذﻫﺐ gotoﻣﻦ ﻫﻨ ﺎ ، أو اذﻫ ﺐ ﻣ ﻦ ﻫﻨ ﺎك آي أن اﻟﺒﺮﻧ ﺎﻣﺞ ﻓ ﻲ ﻫ ﺬه اﻟﺤﺎﻟ ﺔ ﻳﻌﺘﻤ ﺪ ﻋﻠ ﻰ
ﻧﻔﺴﻪ .
ﻣﺜﺎل٦٢:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int x
;cin>>x
;if (x<10) goto negative
;negative: cout<<”value is under 10”<<endl
;0return
}
ﻓﻲ ﻫﺬا اﻟﺴ ﺆال ﻳﻄﻠ ﺐ ﻣ ﻦ اﻟﻤﺴ ﺘﺨﺪم إدﺧ ﺎل ﻗﻴﻤ ﺔ ﻓ ﺈذا ﻛﺎﻧ ﺖ اﻟﻘﻴﻤ ﺔ اﻗ ﻞ ﻣ ﻦ 01 ﺣﺴ ﺐ
اﻟﺸﺮط ﻓﺎﻧﻪ ﻳﻌﺮض ﻟﻚ اﻟﺮﺳﺎﻟﺔ 01 . value is under
أﻣ ﺎ إذا ﻛﺎﻧ ﺖ اﻛﺒ ﺮ ﻣ ﻦ اﻟﻌ ﺪد 01 ﻓﺎﻧ ﻪ ﻳﻄﺒ ﻊ اﻟﻌ ﺪد ﻣﺒﺎﺷ ﺮة ﻣ ﻦ دون اﻟ ﺬﻫﺎب ﻟﻠﺴ ﻄﺮ
اﻷﺧﻴﺮ ﻟﺘﺤﻘﻖ اﻟﺸﺮط .
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﻤﺘﻐﻴﺮات اﻟﻤﺮﻗﻤﺔ واﻟﻤﺼﻔﻮﻓﺎت
Arrays and Matrices
ﻣﻘﺪﻣﺔ introduction
أن ﻃ ﺮق اﻟﺘﻌﺎﻣ ﻞ ﻣ ﻊ أﺳ ﻤﺎء اﻟﻤﺘﻐﻴ ﺮات واﻟﺜﻮاﺑ ﺖ اﻟﻌﺪدﻳ ﺔ واﻟﺮﻣﺰﻳ ﺔ ، اﻟﺘ ﻲ وردت ﻓ ﻲ
اﻟﻔﺼﻮل اﻟﺴﺎﺑﻘﺔ ، ﺗﻌﺪ ﺻﺎﻟﺤﺔ ﻟﻠﺘﻌﺎﻣ ﻞ ﻣ ﻊ ﻋ ﺪد ﻣﺤ ﺪود ﻣ ﻦ ﻫ ﺬه اﻟﺜﻮاﺑ ﺖ واﻟﻤﺘﻐﻴ ﺮات ،
ﺳ ﻮاء ﻓ ﻲ ﻋﻤﻠﻴ ﺎت اﻹدﺧ ﺎل واﻹﺧ ﺮاج أو ﻓ ﻲ اﻟﻌﻤﻠﻴ ﺎت اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﻤﻨﻄﻘﻴ ﺔ ، وﻋﻨ ﺪﻣﺎ
ﻳﺼ ﺒﺢ ﻋ ﺪد اﻟﻤﺘﻐﻴ ﺮات ﻛﺒﻴ ﺮا ﺟ ﺪا ، ﺗﺼ ﺒﺢ ﺗﻠ ﻚ اﻟﻄ ﺮق ﻏﻴ ﺮ ﻋﻤﻠﻴ ﺔ ، ﻓﻤ ﺜﻼ ﻟ ﻮ أردﻧ ﺎ
إدﺧ ﺎل ﻣﺎﺋ ﺔ ﻗﻴﻤ ﺔ ﻟﻠﻤﺘﻐﻴ ﺮات -1 .... x2,xإﻟ ﻲ 001 ، xﻓﻜ ﻢ اﻟﺤﻴ ﺰ اﻟﻤﻄﻠ ﻮب ﻣ ﻦ
اﻟﺒﺮﻧﺎﻣﺞ ﻟﻌﻤﻠﻴ ﺎت اﻹدﺧ ﺎل واﻹﺧ ﺮاج واﻟﻌﻤﻠﻴ ﺎت اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﻤﻨﻄﻘﻴ ﺔ ﻟﻬ ﺬه اﻟﻤﺘﻐﻴ ﺮات ؟
ﻫﺬا ﻣﻦ ﺟﻬﺔ ، وﻣ ﻦ ﺟﻬ ﺔ أﺧ ﺮى : ﻓﺄﻧﻨ ﺎ ﻧ ﻮﻓﺮ ﻣﺨﺰﻧ ﺎ ﺧﺎﺻ ﺎ ﻟﻜ ﻞ ﻣﺘﻐﻴ ﺮ ﻧﺘﻌﺎﻣ ﻞ ﻣﻌ ﻪ ،
أﺛﻨ ﺎء ﺗﻨﻔﻴ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ ، وﻟ ﺬﻟﻚ ﻟﺤﻔ ﻆ ﻗﻴﻤﺘ ﻪ ﻓ ﻲ ﻣﺨ ﺰن ، وﻣ ﻦ ﺛ ﻢ ﻻﺳ ﺘﻌﻤﺎل ﻗﻴﻤﺘ ﻪ ﻓ ﻲ
ﻋﻤﻠﻴﺎت أﺧﺮى ﺗﺎﻟﻴﺔ ، وﻣﻦ ﻧﺎﺣﻴﺔ ﺛﺎﻟﺜ ﺔ ، ﻓ ﺎن ﻣ ﻦ اﻟﺼ ﻌﻮﺑﺔ ﺑﻤﻜ ﺎن ، ﺑ ﻞ ﻣ ﻦ اﻟﻤﺴ ﺘﺤﻴﻞ
اﺳﺘﻌﻤﺎل اﺳﻢ اﻟﻤﺘﻐﻴﺮ اﻟﻌﺪدي أو اﻟﺮﻣﺰي ﻛﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ، وﺛﻼﺛﺔ أﺑﻌﺎد ...اﻟـﺦ
ﻟﻸﺳﺒﺎب اﻟﺜﻼﺛﺔ اﻟﻮاردة أﻋﻼه ، ﺟﺎءت ﻓﻜﺮة اﺳ ﺘﻌﻤﺎل ﻣﺘﻐﻴ ﺮ ﺟﻤ ﺎﻋﻲ ﻳﻀ ﻢ ﺗﺤ ﺖ اﺳ ﻤﻪ
ﻋ ﺪدا ﻣ ﻦ اﻟﻌﻨﺎﺻ ﺮ ﻳﺴ ﻤﻰ ﺑ ﺎﻟﻤﺘﻐﻴﺮ اﻟﺮﻗﻤ ﻲ ، subscripted variableوﻳ ﺘﻢ ﺗﺮﻗﻤﻴ ﻪ
ﺑ ﻴﻦ ﻗﻮﺳ ﻴﻦ ﻣ ﺮﺑﻌﻴﻦ ] [ ﻳﻮﺿ ﻊ ﺑﻴﻨﻬﻤ ﺎ ﻗﻴﻤ ﺔ اﻟﻌ ﺪاد اﻟﻤ ﺮﻗﻢ ، subscriptوﻗ ﺪ ﻧﺴ ﻤﻴﺔ
اﻟ ﺪﻟﻴﻞ indexأﺣﻴﺎﻧ ﺎ ، وﻳﻤﻜﻨﻨ ﺎ ﺗﺸ ﺒﻴﻪ اﻟﻤﺘﻐﻴ ﺮ اﻟﻤ ﺮﻗﻢ ﺑﻘﺴ ﻢ اﻟﻬ ﺎﺗﻒ ﻟﻤﺆﺳﺴ ﺔ ﻣ ﺎ ، ﻓﻬ ﻮ
ﻣﻘﺴﻢ واﺣﺪ ، ﺗﻨﻈﻢ ﺗﺤﺘﻪ ﻋﺪد ﻣﻦ اﻷرﻗﺎم اﻟﻔﺮﻋﻴ ﺔ ﻟﻠﻤ ﻮﻇﻔﻴﻦ وﻛ ﻞ رﻗ ﻢ ﻣ ﻦ ﻫ ﺬه اﻷرﻗ ﺎم
ﻣﺴ ﺘﻘﻞ وﻣﺘﻤﻴ ﺰ ﻋ ﻦ اﻷرﻗ ﺎم اﻟﻔﺮﻋﻴ ﺔ اﻷﺧ ﺮى ، وﻟ ﻪ ﻣﺨ ﺰن ﺧ ﺎص ﻓ ﻲ اﻟ ﺬاﻛﺮة ، اﻵن
اﻧ ﻪ ﻛﻐﻴ ﺮه ﻣ ﻦ اﻷرﻗ ﺎم اﻟﻔﺮﻋﻴ ﺔ ﺗ ﺎﺑﻊ ﻟﻠ ﺮﻗﻢ اﻟﻌ ﺎم ﻟﻤﻘﺴ ﻢ اﻟﻤﺆﺳﺴ ﺔ ، ﻛﻤ ﺎ ﻳﻤﻜ ﻦ ﺗﺸ ﺒﻴﻪ
اﻟﻤﺘﻐﻴ ﺮ اﻟﻤ ﺮﻗﻢ ﺑ ﺎﻟﺠﻴﺶ اﻟ ﺬي ﻳﻌﺎﻣ ﻞ ﻛﺎﺳ ﻢ ﻣﺘﻐﻴ ﺮ واﺣ ﺪ ، ﻟﻜ ﻦ ﻳﻀ ﻢ ﻋ ﺪدا ﻛﺒﻴ ﺮا ﻣ ﻦ
اﻟﻌﻨﺎﺻﺮ ، ﻓﻤﺜﻼ اﻟﻌﻨﺎﺻﺮ اﻟﺘﺎﻟﻴﺔ :)ﻣﻦ اﻟﻴﻤﻴﻦ إﻟﻰ اﻟﻴﺴﺎر(:
]0[A[n] ...a[2], a[1], a
ﺗﺎﺑﻊ ﻟﻠﻤﺘﻐﻴﺮ اﻟﺠﻤﺎﻋﻲ ] [a
وﻛﻞ ﻋﻨﺼﺮ ﻣﻦ ﻫﺬه اﻟﻌﻨﺎﺻ ﺮ ﻟ ﻪ ﻋﻨ ﻮان ﻓ ﻲ اﻟ ﺬاﻛﺮ ، addressﻓ ﺎﻟﻌﻨﻮان اﻷول ﻳﻜ ﻮن
ﻟﻠﻌﻨﺼﺮ اﻷول واﻟﺜﺎﻧﻲ ﻟﻠﺜﺎﻧﻲ واﻟﺜﺎﻟﺚ ﻟﻠﺜﺎﻟﺚ ... وﻫﻜﺬا.
وﻳﺴ ﺘﻌﻤﻞ اﻟﻤﺘﻐﻴ ﺮ اﻟﺠﻤ ﺎﻋﻲ ]اﻟﻤ ﺮﻗﻢ[ أو اﻟﻤﺼ ﻔﻮﻓﺔ ، ﻓ ﻲ ﻟﻐ ﺔ ++ cوﻏﻴﺮﻫ ﺎ ، ﺣﺠ ﺰ
ﺟﻤ ﺎﻋﻲ ﻣﺴ ﺒﻖ ﻓ ﻲ اﻟ ﺬاﻛﺮة ﻟﺠﻤﻴ ﻊ ﻋﻨﺎﺻ ﺮه ، ﻓﻠ ﻮ ﻛ ﺎن ﻳﺘﺒﻌ ﻪ ﺧﻤﺴ ﻮن ﻋﻨﺼ ﺮا ، ﻓﺎﻧ ﻪ
ﻳﺤﺠﺰ ﻟﻪ 05 ﻣﺨﺰﻧﺎ ، ﻋﻠﻰ اﻷﻗﻞ ﻓﻲ اﻟﺬاﻛﺮة .
ﻣ ﻦ اﻟﻔﻮاﺋ ﺪ اﻟﻤﻬﻤ ﺔ ﻟﻠﻤﺘﻐﻴ ﺮات اﻟﻤﺮﻗﻤ ﺔ واﻟﻤﺼ ﻔﻮﻓﺎت : ﻫ ﻮ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ﻓ ﻲ اﻟﺘﺮﺗﻴ ﺐ
اﻟﺘﺼ ﺎﻋﺪي واﻟﺘﻨ ﺎزﻟﻲ ﻟﻠﻌﻨﺎﺻ ﺮ واﻟﻘ ﻴﻢ اﻟﻤﺨﺘﻠﻔ ﺔ ، وﻋﻤﻠﻴ ﺎت ﺗﺮﺗﻴ ﺐ اﻷﺳ ﻤﺎء اﻷﺑﺠ ﺪي
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﻨﺼ ﻮص اﻟﺮﻣﺰﻳ ﺔ ، وﻓ ﻲ ﻋﻤﻠﻴ ﺎت ﺿ ﺮب اﻟﻤﺼ ﻔﻮﻓﺎت ، وإﻳﺠ ﺎد ﻣﻌﻜ ﻮس اﻟﻤﺼ ﻔﻮﻓﺔ
وﻋﻤﻠﻴﺎﺗﻬﺎ اﻷﺧﺮى ، وﻓﻲ اﻟﺘﺤﻠﻴﻞ اﻟﻌﺪدي ... اﻟـﺦ.
اﻟﻤﺘﻐﻴﺮ اﻟﻤﺮﻗﻢ ) اﻟﻤﺼﻔﻮﻓﺔ ( ذو اﻟﺒﻌﺪ اﻟﻮاﺣﺪ one-dimensional Array
اﻟﻤﺘﻐﻴﺮ اﻟﻤﺮﻗﻢ ذو اﻟﺒﻌﺪ اﻟﻮاﺣﺪ ﻫ ﻮ ﻣﺼ ﻔﻮﻓﺔ ذات ﺑﻌ ﺪ واﺣ ﺪ أو ﻣﺘﺠ ﻪ ) (vectorوﻳﻤﺜ ﻞ
ﻓﻲ اﻟﺠﺒﺮ ﻋﻠﻰ اﻟﻨﺤﻮ اﻷﻓﻘﻲ ]3[a1 a2 ...a
أو اﻟﻌﻤﻮدي
1A
2A
:
:
:
3a
وﻳﺄﺧﺬ اﻟﻤﺮﻗﻢ اﻟﻤﺘﻐﻴﺮ ﻓﻲ ++ cاﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ:
;]Type-specifier array-name[size
اﻟﻌﺪد ﻣﻦ
اﻻﺳﻢ اﻟﺠﻤﺎﻋﻲ
ﻣﺜﻞ double -–int اﻟﻌﻨﺎﺻﺮ
char
وﻳﺒ ﺪأ اﻟﻌ ﺪاد اﻟﻤ ﺮﻗﻢ ﻋ ﺎدة ﻣ ﻦ اﻟﺼ ﻔﺮ ، آي أن اﻟﻌﻨﺼ ﺮ اﻷول ﻣ ﻦ اﻟﻤﺼ ﻔﻮﻓﺔ ][ aﻫ ﻮ
]0[ aواﻟﺜﺎﻧﻲ ]1[ ... aوﻫﻜﺬا ﻓﻤﺜﻼ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﺎﻟﻴﺔ:
;]02[Int a
اﺳﻤﻬﺎ ، aوﻗﺪ ﺣﺠﺰ ﻟﻬﺎ 02 ﻣﻮﻗﻌﺎ ﻟﻌﺸﺮﻳﻦ ﻋﻨﺼﺮا ﻣﻦ اﻟﻨﻮع اﻟﺼﺤﻴﺢ .
واﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﺎﻟﻴﺔ:
;]51[Char name
ﻣﺼﻔﻮﻓﺔ رﻣﺰﻳﺔ ، اﺳﻤﻬﺎ nameﻳﺤﺠﺰ ﻟﻬﺎ ﺧﻤﺴﺔ ﻋﺸﺮ ﻋﻨﺼﺮا ﻣﻦ اﻟﻨﻮع اﻟﺮﻣﺰي
ﻟﻬﺎ .
وﻫﻜـﺬا...
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل١:
ﻣﺜﺎل ﻋﻠﻰ ﻋﻤﻠﻴﺔ إدﺧﺎل ذاﺗﻲ ﻟﻘﻴﻢ ﻋﻨﺎﺻﺮ ﻣﺘﻐﻴﺮ ﻣﺮﻗﻢ ) ﻣﺼﻔﻮﻓﺔ ( ذي ﺑﻌﺪ واﺣﺪ
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;]02[int a
;int I
)for (I=0;I<20;++I
;1+a[I]=I
;0return
} ﻋﺪاد ﻣﺮﻗﻢ
اﻟﻤﺼﻔﻮﻓﺔ
ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﻳﺘﻢ إدﺧﺎل ﻋﺸﺮﻳﻦ ﻋﻨﺼﺮا ﻣﻦ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ a
1=]0[ Aﻋﻨﺪﻣﺎ ﻳﻜﻮن 0=I
2=]1[ Aﻋﻨﺪﻣﺎ ﻳﻜﻮن 1=I
…
…
…
02=]91[ aﻋﻨﺪﻣﺎ ﻳﻜﻮن 91=I
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:٢ﻣﺜﺎل
:ﻣﺜﺎل ﻋﻠﻰ ﻋﻤﻠﻴﺎت إدﺧﺎل ، وﺣﺴﺎب ، وﻋﻤﻠﻴﺎت ﻃﺒﺎﻋﺔ ﻋﻨﺎﺻﺮ ﻣﺼﻔﻮﻓﺔ
#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;
}
:وﺳﺘﻜﻮن ﻗﻴﻢ اﻟﻨﺘﺎﺋﺞ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ
0 0
1 1
2 4
3 9
4 16
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
إﻋﻄﺎء ﻗﻴﻤﺔ أوﻟﻴﺔ ﻟﻠﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ اﻟﻮاﺣـﺪ Array
Initialization
ﻣﺜﺎل ﻋﻠﻰ إدﺧﺎل ﻋﺪة ﻋﻨﺎﺻﺮ ﻣﻦ ﻣﺼﻔﻮﻓﺔ اﻟﺪرﺟﺎت ][grade
}59,05,45,09,08{=]5[Int grade
وﻣﺜﺎل ﻋﻠﻰ إدﺧﺎل ﻗﻴﻢ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﻣﺰﻳﺔ ][name
”Char name[4]=“nor
ﻻﺣ ﻆ أن اﻟﻤﺘﻐﻴ ﺮ اﻟﻤ ﺮﻗﻢ ][ nameﻣﻜ ﻮن ﻣ ﻦ أرﺑﻌ ﺔ ﻋﻨﺎﺻ ﺮ ﺑﻴﻨﻤ ﺎ ﺗ ﻢ إﻋﻄ ﺎؤه ﺛﻼﺛ ﺔ
ﻋﻨﺎﺻﺮ ﻓﻘﻂ واﻟﺴﺒﺐ أن اﻟﻌﻨﺼﺮ اﻟﺮاﺑﻊ ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ اﻟﻤﻌﻄﻴﺎت اﻟﺮﻣﺰﻳﺔ ﻳﻜﻮن ﺧﺎﻟﻴﺎ.
ﻣﺜﺎل٣:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{ ﺗﻢ إﻋﻄﺎء اﻟﻘﻴﻢ ﻣﻦ ﻗﺒﻞ
}09,08,07,05,06,04{=]6[int a اﻟﻤﺴﺘﺨﺪم ﻣﺴﺒﻘﺎ ﻫﻨﺎ
;int I
)++for(I=0;I<6;I
;cout<<a[I]<<endl
;0return
}
واﻟﻨﺎﺗﺞ ﻃﺒﻌﺎ ﺳﻴﻜﻮن ﻛﺎﻟﺘﺎﻟﻲ:
04
06
05
07
08
09
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:٤ﻣﺜﺎل
ﻗ ﻢ ﺑﻜﺘﺎﺑ ﺔ ﺑﺮﻧ ﺎﻣﺞ ﻳﻘ ﻮم ﺑﺈﻳﺠ ﺎد ﻣﺠﻤ ﻮع ، وﻣﻌ ﺪل ﻋﻼﻣ ﺎت اﻟﻄﺎﻟ ﺐ ﻓ ﻲ 5 ﻣ ﻮاد وﻫ ﺬه
:اﻟﻌﻼﻣﺎت ﻛﺎﻟﺘﺎﻟﻲ
87,67,81,90,55
#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
87 اﻟﻤﻌﺪل
735 واﻟﻤﺠﻤﻮع
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ـ ـ ـ ـ ـ
ﻋﻨـﻮان ﻋﻨﺎﺻـﺮ اﻟﻤﺼـﻔﻮﻓﺔ ﻓـﻲ اﻟـﺬاﻛﺮة Addressing
Array Elements in Memory
ذﻛﺮﻧﺎ ﻣﻦ ﻗﺒﻞ أن آي ﻣﺘﻐﻴﺮ أو ﻋﻨﺼﺮ ﻣﻦ ﻣﺘﻐﻴﺮ ذاﺗﻲ ﻣﺮﻗﻢ ، ﻳﺤﺘ ﻞ ﻣﻮﻗﻌ ﺎ ﻣ ﻦ اﻟ ﺬاﻛﺮة
ﻳﺴ ﺘﻌﻤﻞ ﻋ ﺎدة ﻣﺆﺷ ﺮا ﻟﻜ ﻞ ﻣﺘﻐﻴ ﺮ أو ﻋﻨﺼ ﺮ ، ﻟﻴﻜ ﻮن دﻟ ﻴﻼ ﻋﻠ ﻰ اﺳ ﺘﻌﻤﺎل ﻫ ﺬه
اﻟﻤﺘﻐﻴ ﺮات واﻟﻌﻨﺎﺻ ﺮ ﺑﺴ ﻬﻮﻟﺔ وﻳﺴ ﺮ ، واﻟﻤﺜ ﺎل اﻟﺘ ﺎﻟﻲ ﻳﻮﺿ ﺢ ﻫ ﺬه اﻟﻌﻤﻠﻴ ﺔ ﺑﺎﻟﻨﺴ ﺒﺔ
ﻟﻠﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ.
;]5[Int x
ﻳﻤﻜ ﻦ ﺗﻤﺜﻴ ﻞ ﻋﻨﺎﺻ ﺮ اﻟﻤﺼ ﻔﻮﻓﺔ xاﻟﻤﻌﻠ ﻦ ﻋﻨﻬ ﺎ ، ﻣ ﻊ ﻋﻨﺎوﻳﻨﻬ ﺎ ﺑﺎﻟﺸ ﻜﻞ اﻟﺘﻮﺿ ﻴﺤﻲ
اﻟﺘﺎﻟﻲ ) ﻣﻦ اﻟﻴﺴﺎر إﻟﻰ اﻟﻴﻤﻴﻦ(
اﻷول اﻟﺜﺎﻧﻲ اﻟﺜﺎﻟﺚ اﻟﺮاﺑﻊ اﻟﺨﺎﻣﺲ
]0[X ]1[X ]2[X ]3[X ]4[X
001 101 201 301 401
ﻋﻨﻮاﻧﻪ ﻓﻲ
اﻟﺬاﻛﺮة
اﻟﻌﻨﺼﺮ
إذا ﻓﺮﺿﻨﺎ أن ﻋﻨﻮان ﻣﻮﻗ ﻊ اﻟﻌﻨﺼ ﺮ اﻷول ]0[ xﻓ ﻲ اﻟ ﺬاﻛﺮة ﻫ ﻮ 001 ، ﻓ ﺎن ﻋﻨ ﺎوﻳﻦ
اﻟﻌﻨﺎﺻﺮ اﻷﺧﺮى ﺗﻜﻮن ﻋﻠﻰ اﻟﺘﻮاﻟﻲ 101 201 301 401
ﻳﻤﻜﻦ ﺗﺸﺒﻴﻪ اﻟﻌﻼﻗﺔ ﺑﻴﻦ ﻗﻴﻤﺔ اﻟﻌﻨﺼﺮ ، وﻋﻨﻮاﻧﻪ ، ﺑﺎﻟﻌﻼﻗ ﺔ ﺑ ﻴﻦ ﻋﻼﻣ ﺔ ﻃﺎﻟ ﺐ ، ورﻗﻤ ﻪ
اﻟﺠﺎﻣﻌﻲ ، إذ ﻋﻼﻣﺘﻪ ﻫﻲ ﻗﻴﻤﺔ ﻧﺸﻄﻪ ﻛﻌﻨﺼﺮ ، ﻟﻴﺲ ﻟﻬﺎ ﻋﻼﻗﺔ ﺑﺮﻗﻢ ﻣﻘﻌﺪه اﻟﺠﺎﻣﻌﻲ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪﻳﻦ Two-Dimensional Arrays
ﺗﺸ ﺒﺔ اﻟﻤﺼ ﻔﻮﻓﺔ ذات اﻟﺒﻌ ﺪﻳﻦ ﻓ ﻲ ﻃﺮﻳﻘ ﺔ ﺗﻌﺎﻣﻠﻬ ﺎ ، اﻟﻤﺼ ﻔﻮﻓﺔ ذات اﻟﺒﻌ ﺪ اﻟﻮاﺣ ﺪ إﻻ أن
ﻟﻬ ﺎ ﻋ ﺪادﻳﻦ) 2 (indexدﻟﻴﻠ ﻴﻦ أو ﻣ ﺮﻗﻤﻴﻦ إﺣ ﺪاﻫﻤﺎ ﻋ ﺪاد ﻟﻠﺼ ﻔﻮف ، واﻷﺧ ﺮ ﻋ ﺪاد
ﻟﻸﻋﻤﺪة وﻳﺄﺧﺬ اﻹﻋﻼن ﻋﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ:
;]2 Type-specifier arraey_name [index 1][index
اﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺪﻟﻴﻞ اﻷول اﻟﺪﻟﻴﻞ اﻟﺜﺎﻧﻲ
ﻓﻤﺜﻼ اﻟﻤﺼﻔﻮﻓﺔ :
;]3[]2[Int x
وﻫﻲ ﻣﺼﻔﻮﻓﺔ ﺻ ﺤﻴﺤﺔ اﻟﻌﻨﺎﺻ ﺮ intأﺑﻌﺎدﻫ ﺎ ﻫ ﻲ ﻋ ﺪد اﻟﺼ ﻔﻮف=2 ، وﻋ ﺪد اﻷﻋﻤ ﺪة
=3
ﻻﺣﻆ أن ﻋﺪد اﻟﺼﻔﻮف ﻳﻮﺿﻊ ﺑﻴﻦ ﻗﻮﺳﻴﻦ وﺣﺪه ، وﻛﺬﻟﻚ ﻋﺪد اﻷﻋﻤﺪة .
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل٥:
ﺷﺎﻫﺪ ﻫﺬا اﻟﻤﺜﺎل اﻟﺬي ﻳﺴﺘﺨﺪم 5 ﻃﻼب و 3 ﻋﻼﻣﺎت:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;]3[]5[int m
;int I,j
)++for(I=0;I<5;I
)++for(j=0;j>3;j
;]cin>>m[I][j
;0return
}
وﺑﺎﻟﻨﺴ ﺒﺔ ﻟﻌﻨ ﺎوﻳﻦ اﻟﻌﻨﺎﺻ ﺮ اﻟﻤﺼ ﻔﻮﻓﺔ ﻣﺘﻌ ﺪدة اﻷﺑﻌ ﺎد ﻓ ﻲ اﻟ ﺬاﻛﺮة ، ﻻ ﻳﺨﺘﻠ ﻒ ﻋﻤ ﺎ
ذﻛﺮﻧﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻤﺼﻔﻮﻓﺎت ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ ، وﻟﺬﻟﻚ ﻟ ﻮ ﻓﺮﺿ ﻨﺎ ، ﻓ ﻲ اﻟﻤﺜ ﺎل اﻟﺴ ﺎﺑﻖ أن
اﻟﻌﻨﺼﺮ ]0,0[ xﻛﺎن ﻋﻨﻮاﻧ ﻪ 001 ﻣ ﺜﻼ ﻓ ﺎن ﻋﻨ ﺎوﻳﻦ اﻟﻌﻨﺎﺻ ﺮ اﻟﺘﺎﻟﻴ ﺔ: ﺣﺴ ﺐ ﺗﺮﺗﻴﺒﻬ ﺎ
اﻟﻤ ﺬﻛﻮر أﻋ ﻼه ﻫ ﻲ 001-101-201 ﻟﻌﻨﺎﺻ ﺮ اﻟﺼ ﻒ اﻷول 301-401-501
ﻟﻌﻨﺎﺻﺮ اﻟﺼﻒ اﻟﺜﺎﻧﻲ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﺪوال
Functions
ﻣﻘﺪﻣﺔ Introduction
ﺗﻌﺮف اﻟﺪاﻟﺔ ) اﻻﻗﺘ ﺮان ( ﻋﻠ ﻰ أﻧﻬ ﺎ : ﺟﻤﻠ ﺔ أو ﻣﺠﻤﻮﻋ ﺔ ﺟﻤ ﻞ أو ﺗﻌﻠﻴﻤ ﺎت ، ذات ﻛﻴ ﺎن
ﺧ ﺎص ، ﺗﻘ ﻮم ﺑﻌﻤﻠﻴ ﺔ أو ﻣﺠﻤﻮﻋ ﺔ ﻋﻤﻠﻴ ﺎت ، ﺳ ﻮاء ﻋﻤﻠﻴ ﺎت إدﺧ ﺎل أو إﺧ ﺮاج أو
ﻋﻤﻠﻴﺎت ﺣﺴﺎﺑﻴﺔ أو ﻣﻨﻄﻘﻴﺔ ، وﺗﺤﺘﻞ اﻟﺪاﻟﺔ ﻣﻮﻗﻌﺎ ﻣ ﻦ اﻟﺒﺮﻧ ﺎﻣﺞ ، آي أﻧﻬ ﺎ ﺟ ﺰء ﻣﻨ ﻪ ، أو
ﻳﻤﻜﻦ اﻟﻘﻮل أن ﺑﺮﻧﺎﻣﺞ ++ ، cﻳﺘﻜﻮن ﻣﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪوال.
وﻣﻦ ﻓﻮاﺋﺪ اﻟﺪوال اﻟﺘﺎﻟﻲ:
١- ﺗﺴ ﺎﻋﺪ اﻟ ﺪوال اﻟﻤﺨﺰﻧ ﺔ ﻓ ﻲ ذاﻛ ﺮة اﻟﺤﺎﺳ ﺐ ﻋﻠ ﻰ اﺧﺘﺼ ﺎر اﻟﺒﺮﻧ ﺎﻣﺞ إذ ﻳﻜﺘﻔ ﻰ
ﺑﺎﺳﺘﻌﺎدﺗﻬﺎ ﺑﺎﺳﻤﻬﺎ ﻓﻘﻂ ﻟﺘﻘﻮم ﺑﺎﻟﻌﻤﻞ اﻟﻤﻄﻠﻮب.
٢- ﺗﺴﺎﻋﺪ اﻟﺪوال اﻟﻤﺨﺰﻧﺔ ﻓﻲ ﻣﻜﺘﺒﺔ اﻟﺤﺎﺳﺐ ، أو اﻟﺘ ﻲ ﻳﻜﺘﺒﻬ ﺎ اﻟﻤﺒ ﺮﻣﺞ ﻋﻠ ﻰ ﺗﻼﻓ ﻲ
ﻋﻤﻠﻴﺎت اﻟﺘﻜﺮار ﻓﻲ ﺧﻄﻮات اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﻲ ﺗﺘﻄﻠﺐ ﻋﻤﻼ ﻃﻮﻳﻼ وﺷﺎﻗﺎ.
٣- ﺗﺴﺎﻋﺪ اﻟﺪوال اﻟﺠﺎﻫﺰة ﻋﻠﻰ ﺗﺴﻬﻴﻞ ﻋﻤﻠﻴﺔ اﻟﺒﺮﻣﺠﺔ ﻧﻔﺴﻬﺎ.
٤- ﺗﻮﻓﺮ ﻣﺴﺎﺣﺔ ﻣﻦ اﻟﺬاﻛﺮة اﻟﻤﻄﻠﻮﺑﺔ.
٥- اﺧﺘﺼﺎر ﻋﻤﻠﻴﺎت زﻣﻦ اﻟﺒﺮﻣﺠﺔ وﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺄﺳﺮع وﻗﺖ ﻣﻤﻜﻦ.
وﻟﻠﺘﺪﻟﻴﻞ ﻋﻠﻰ أﻫﻤﻴﺔ اﻟﺪوال ﻓﻲ ﺑﺮﻣﺠﺔ ++ cﺧﺬ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ:
ﻟﻮ أردﻧﺎ ﻛﺘﺎﺑﺔ ﺧﻮارزﻣﻴﺔ ﻟﺨﻄﻮات ﺻﻨﻊ ﻛﺄس ﻣﻦ اﻟﺸﺎي ﻓﺄﻧﻨﺎ ﻧﻜﺘﺐ ﻣﺎ ﻳﺄﺗﻲ:
١- ﺿﻊ اﻟﻤﺎء ﻓﻲ ﻏﻼﻳﺔ اﻟﺸﺎي.
٢- ﺳﺨﻦ اﻟﻤﺎء ﺣﺘﻰ ﻳﻐﻠﻰ.
٣- أﺿﻒ ﺷﺎﻳﺎ إﻟﻰ اﻟﻤﺎء.
٤- أﺿﻒ ﺳﻜﺮا إﻟﻴﻪ.
٥- أﻃﻔﺊ اﻟﻨﺎر.
٦- ﺻﺐ ﺷﺎﻳﺎ ﻓﻲ ﻛﺄس.
اﻓ ﺮض اﻵن أﻧﻨ ﺎ ﻧ ﻮد ﻃﻠ ﺐ ﻛ ﺄس ﻣ ﻦ اﻟﺸ ﺎي ﻣ ﻦ ﻣﻘﻬ ﻰ ﻣﺠ ﺎور : أن ﺧﻄ ﻮات
اﻟﺨﻮارزﻣﻴﺔ اﻟﺘﻲ ﻧﺤﺘﺎﺟﻬﺎ اﻵن ﻫﻲ ﺧﻄﻮه واﺣﺪه ﻓﻘﻂ وﻫﻲ:
١- اﺳﺘﺪع ﻛﺄس ﻣﻦ اﻟﺸﺎي.
ﺗﺨﻴ ﻞ اﻵن ﻛ ﻢ وﻓﺮﻧ ﺎ ﻣ ﻦ اﻟﺨﻄ ﻮات ﻟ ﻮ اﺳ ﺘﻌﻤﻠﻨﺎ اﻟ ﺪوال اﻟﺠ ﺎﻫﺰة ) أو اﻟﺘ ﻲ ﻳﺠﻬﺰﻫ ﺎ
اﻟﻤﺒﺮﻣﺞ ﻣﻦ ﻗﺒﻞ ( ﺑ ﺪﻻ ﻣ ﻦ ﺧﻄﻮاﺗﻬ ﺎ اﻟﺘﻔﺼ ﻴﻠﻴﺔ وﺑﺨﺎﺻ ﺔ ﻓ ﻲ ﺑﺮﻧ ﺎﻣﺞ ﻳﺘﻄﻠ ﺐ ﺣﺴ ﺎﺑﺎت
وﻋﻤﻠﻴﺎت ﻛﺜﻴﺮة وﻛﻢ ﻳﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ ﺳﻬﻼ وواﺿﺤﺎ وﻗﺘﺬاك.
وﺗﺄﺧﺬ اﻟﺪاﻟﺔ اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ:
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
;Type-specified function-name (formal parameters
{
function body
}
وﻗ ﺪ ذﻛﺮﻧ ﺎ ﻣ ﻦ ﻗﺒ ﻞ أن اﻟﺪاﻟ ﺔ ﻗ ﺪ ﺗﻌﺘﻤ ﺪ ﻋﻠ ﻰ ﻣﺘﻐﻴ ﺮ أو اﻛﺜ ﺮ ، وﻗ ﺪ ﻻ ﺗﻌﺘﻤ ﺪ ﻋﻠ ﻰ آي
ﻣﺘﻐﻴ ﺮ ، وﻓ ﻲ ﻛ ﻼ اﻟﺤ ﺎﻟﺘﻴﻦ ، ﻳﺴ ﺘﻌﻤﻞ ﺑﻌ ﺪ اﺳ ﻢ اﻟﺪاﻟ ﺔ ﻗﻮﺳ ﻴﻦ )( ﺳ ﻮاء ﻛ ﺎن ﺑﻴﻨﻬﻤ ﺎ
ﻣﺘﻐﻴﺮات أم ﻻ .
ﻣﺜﺎل١:
”#include “ stdafx.h
”#include “ iostream.h
)(1max
{
;”cout<<”hello
}
)(void main
{
;)( 1max
;)(1max
;)(1max1(); max
}
واﻟﻨﺎﺗﺞ:
hello hello hello hello
ﻃﺒﻌﺎ ﻟﻠﻌﻠﻢ أﻋﺰاﺋﻲ أﻧﻨﺎ ﻓﻲ ﻫﺬا اﻟﻔﺼﻞ اﻟ ﺪوال ﻧﻼﺣ ﻆ أن ﺑﺪاﻳ ﺔ ﻗ ﺮاءة اﻟﻤﺘ ﺮﺟﻢ ﻟﻠﺒﺮﻧ ﺎﻣﺞ
ﻻ ﺗﺒﺪأ ﻣﻦ أول اﻟﺒﺮﻧﺎﻣﺞ ﻛﺎﻟﻤﻌﺘ ﺎد ﻓ ﺎﻟﻘﺮاءة ﺗﺒ ﺪأ ﻣ ﻦ اﻷﺳ ﻔﻞ آي أﻧﻬ ﺎ ﺗﺒ ﺪا ﺑﺎﻟﻤ ﺎﻳﻦ main
ﺳ ﻮاء ﻛ ﺎن ﻓ ﻲ اﻟﻮﺳ ﻂ أو اﻷﺳ ﻔﻞ ﻓﺄﻧﻬ ﺎ ﺗﻘ ﺮاء أوﻻ اﻟ ـ mainﺛ ﻢ ﺗﺒﺤ ﺚ ﻣ ﺎ داﺧﻠ ﻪ وﺗﺒ ﺪا
ﺑﺎﻟﺒﺤ ﺚ ﻋ ﻦ ﻣﻌﻨ ﻰ اﻟﻜﻠﻤ ﺔ )(1 maxﻓ ﻲ اﻟﺪاﻟ ﺔ )(1 maxﻓ ﻲ اﻷﻋﻠ ﻰ ﻟﺘﺠ ﺪ أن ﻫﻨ ﺎك
ﺟﻤﻠﺔ ﻃﺒﺎﻋﺔ وﻫﻜﺬا ﺗﺘﻜﺮر ﺣﺘﻰ ﻳﺘﻢ ﺗﻌﺮﻳﻒ ﻣﺎ ﺑﺪاﺧﻞ اﻟـ. main
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺗﻄﺒﻴﻘﺎت ﻋﻠﻰ اﻟﺪوال
ﻣﺜﺎل٢:
ﺷﺎﻫﺪ ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ وﺗﺘﺒﻌﻪ أوﻻ ﺑﺎﻟـ mainواﻧﻈﺮ ﻟﻠﻨﺘﺎﺋﺞ:
”#include “ stdafx.h
”#include “ iostream.h
;int x,y
)(void max
{
;x=x+y
}
)(void fax
{
;)(max
;)(max
{
)(void main
{
;0=y=10; x
;)(max
;)(fax
;cout<<x<<y
}
أﻋﺰاﺋﻲ ﺳﺄﺷﺮح اﻟﻨﺘﺎﺋﺞ ﻗﺒﻞ إﻇﻬﺎرﻫﺎ ﻟﻠﺘﺴﻬﻴﻞ ﻋﻠﻴﻜﻢ ﻓﻲ اﻷﻣﺜﻠﺔ اﻟﻘﺎدﻣﺔ:
ﻟﻨﺘﻌﺒﺮ أن ﻫﻨﺎك ﺛﻼث ﻛﻮاﻛﺐ:
ﻛﻮاﻛﺐ mainاﻟﺮﺋﻴﺴﻲ
ﻛﻮﻛﺐ fax
ﻛﻮﻛﺐ max
ﻣﻦ اﻟﻤﻌﺮوف أﻧﻨﺎ ﺳ ﻮف ﻧﺒ ﺪا ﺑﻜﻮﻛ ﺐ mainﻟﻨﺸ ﺎﻫﺪ ﻣ ﺎ ﺑ ﺪاﺧﻞ ﻧﺸ ﺎﻫﺪ أن ﻫﻨ ﺎك ﻗﻴﻤﺘ ﻴﻦ
ﻋﺪدﻳﺘﻴﻦ x yﻟﻜﻨﻪ ﻻ ﻳﻌﺮﻓﻪ ﻫﻞ ﻫ ﻲ أﻋ ﺪاد ﺣﻘﻴﻘﻴ ﺔ أم ﺻ ﺤﻴﺤﻪ ﻟ ﺬﻟﻚ ﻳ ﺬﻫﺐ ﻓ ﻲ اﻷﻋﻠ ﻰ
ﻟﻴﺒﺤ ﺚ ﻋﻨﻬ ﺎ ﻓ ﻲ أول اﻟﺒﺮﻧ ﺎﻣﺞ ﻟﻴﺠ ﺪ أﻧﻬ ﺎ أﻋ ﺪاد ﺻ ﺤﻴﺤﺔ ، intﺛ ﻢ ﺑﻌ ﺪ ذﻟ ﻚ ﻳﺮﺟ ﻊ
ﻟﻠﻜﻮﻛ ﺐ اﻟﺮﺋﻴﺴ ﻲ mainﻟﻴﺸ ﺎﻫﺪ ﻋﺒ ﺎرة )( maxﻓﻴ ﺬﻫﺐ ﻟﻠﺒﺤ ﺚ ﻋﻨﻬ ﺎ ﻓ ﻲ اﻟﻜﻮﻛ ﺐ
maxﻃﺒﻌ ﺎ ﻟﻴﺠ ﺪ ﺑ ﺪاﺧﻠﻬﺎ أن ﻗﻴﻤ ﺔ xﺗﺴ ﺎوي x+yأي أن 01+0= xﻟﺘﺼ ﺒﺢ ﻗﻴﻤ ﺔ
01= xﺑﻌ ﺪ ذﻟ ﻚ ﻳﺨ ﺮج ﻣ ﻦ اﻟﻜﻮﻛ ﺐ maxوﻳﺮﺟ ﻊ ﻟﻠﻜﻮﻛ ﺐ اﻟﺮﺋﻴﺴ ﻲ ﻟﻴﺸ ﺎﻫﺪ اﻟﻌﺒ ﺎرة
)( faxﻓﻴ ﺬﻫﺐ ﻟﻠﺘﻌ ﺮف ﻋﻠﻴﻬ ﺎ ﺑﺎﻟﻜﻮﻛ ﺐ )( faxوﻳﺸ ﺎﻫﺪ ﺑ ﺪاﺧﻠﻬﺎ ﻋﺒ ﺎرة maxﻟﻴ ﺬﻫﺐ
ﺑﺬﻟﻚ ﻟﻠﻜﻮﻛﺐ maxوﻳﺠﻤﻊ ﻣﻦ ﻣﺮة أﺧﺮى ﻓﺘﺼﺒﺢ ﻛﺎﻟﺘﺎﻟﻲ:
01+01= Xوﺑ ﺬﻟﻚ ﺗﺼ ﺒﺢ ﻗﻴﻤ ﺔ 02= xﺑﻌ ﺪ ذﻟ ﻚ ﻳﺮﺟ ﻊ ﻟﻠﻜﻮﻛ ﺐ faxﻟﻴﺸ ﺎﻫﺪ ﻋﺒ ﺎرة
)( maxﻓﻴﺬﻫﺐ ﻟﻠﻜﻮﻛﺐ maxوﻳﺠﻤﻊ ﻣﺮة أﺧﺮى ﻛﺎﻟﺘﺎﻟﻲ:
01+02= Xوﺑﺬﻟﻚ ﺗﺼﺒﺢ ﻗﻴﻤﺔ 03=x
ﺛﻢ ﺑﻌﺪﻫﺎ ﻳﺮﺟﻊ ﻟﻠﻜﻮﻛﺐ اﻟﺮﺋﻴﺴﻲ mainﻟﻴﺸﺎﻫﺪ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ واﻟﻨﺎﺗﺞ ﻛﺎﻟﺘﺎﻟﻲ:
01 03
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:٣ﻣﺜﺎل
#include “ stdafx.h”
#include “ iostream.h”
void x1()
{
cout<<”*”;
}
void x2()
{
cout<<”\t”;
}
void yaya()
{
x1();
x2();
x1();
}
void kiki()
{
cout<<”\n”:
}
void main()
{
int I;
for(I=0;I<=3;I++)
{
yaya();
kiki();
}
}
:واﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن ﻛﺎﻟﺘﺎﻟﻲ
* *
* *
* *
* *
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل٤:
ﻗﻢ ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﻘﺮاءة ﻋ ﺪد ﺻ ﺤﻴﺢ وﻣ ﻦ ﺛ ﻢ ﻃﺒﺎﻋ ﺔ ﻣ ﺎ إذا ﻛ ﺎن اﻟ ﺮﻗﻢ زوﺟ ﻲ أم
ﻓﺮدي ﻣﻦ ﺧﻼل داﻟﺔ أو اﻗﺘﺮان؟
”#include “ stdafx.h
”#include “ iostream.h
;int x
)(check
{ اﻃﺒﻊ إذا ﻛﺎن زوﺟﻲ
)0==)2%if ((x
;cout<<”even”<<endl
else
;cout<<”odd”<<endl
} اﻃﺒﻊ إذا ﻛﺎن ﻓﺮدي
)(main
{
;cin>>x
;)( check ادﺧﻞ اﻟﻘﻴﻤﺔ 9 ﻣﺜﻼ
;0return
}
ﻃﺒﻌﺎ واﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن ﺣﺴﺒﻤﺎ أدﺧﻠﺖ ﻟﻨﺪﺧﻞ ﻣﺜﻼ اﻟﻘﻴﻤﺔ 9.. واﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن:
ood
ﻻن اﻟﻘﻴﻤﺔ اﻟﻤﺪﺧﻠﺔ 9 ﻋﺪد ﻓﺮدي وﻟﻴﺲ زوﺟﻲ .
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﻣﺜﺎل٥:
ﻗﻢ ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻳﻘ ﻮم ﺑﺎﺳ ﺘﺨﺮاج اﻛﺒ ﺮ رﻗ ﻢ ﻣ ﺎ ﺑ ﻴﻦ رﻗﻤ ﻴﻦ ﻣ ﺪﺧﻠﻴﻦ ﻣ ﻦ ﻗﺒ ﻞ اﻟﻤﺴ ﺘﺨﺪم
وذﻟﻚ ﻣﻦ ﺧﻼل داﻟﺔ اﺳﻤﻬﺎ max؟
”#include “ stdafx.h
”#include “ iostream.h
;int x,y
ﻟﻠﻤﻘﺎرﻧﺔ ﻣﻦ اﻷﻛﺒﺮ
)(max
ﺑﻴﻦ اﻟﻘﻴﻤﺘﻴﻦ
{
)if (x>y
;cout<<x<<endl
else
;cout<<y<<endl
}
)(main
{
;cin>>x>>y ادﺧﻞ اﻟﻘﻴﻤﺘﻴﻦ وﻟﺘﻜﻦ
;)( max اﻟﻘﻴﻤﺔ 01 و02
{
;0return
}
واﻟﻨﺎﺗﺞ ﻃﺒﻌﺎ ﺳﻴﻜﻮن:
02
ﻻن اﻟﻌﺪد اﻟﺬي أدﺧﻠﻨﺎ 02 اﻛﺒﺮ ﻣﻦ اﻟﻌﺪد اﻟﺬي أدﺧﻠﻨﺎ 01 ﻓﻘﺎم ﺑﻄﺒﺎﻋﺘﻪ ﺣﺴﺐ اﻟﺸﺮط .
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺗﻘﻨﻴﺔ اﻷﻗﺮاص و دوال اﻟﻤﻠﻔﺎت اﻻﻧﺘﻘﺎﻟﻴﺔ
disk Files
ﻣﻘﺪﻣﺔ Introduction
ﺻ ﻤﻤﺖ ﻫ ﺬه اﻟ ﺪوال ﻟﻠﺘﻌﺎﻣ ﻞ ﻣ ﻊ اﻟﻤﻠﻔ ﺎت اﻻﻧﺘﻘﺎﻟﻴ ﺔ ﻟﻸﻗ ﺮاص Buffered filw
systemﻟﻤﻌﺎﻟﺠ ﺔ اﻟﻨﺼ ﻮص ، ﻛﻤ ﺎ ﻛ ﺎن ﻣﺘ ﻮﻓﺮا ﻓ ﻲ ﻟﻐ ﺔ ++ Cاﻟﻨﻈ ﺎم اﻷﺧ ﺮ ﻏﻴ ﺮ
اﻻﻧﺘﻘ ﺎﻟﻲ unbufferedاﻟﻤﺸ ﺎﺑﻬﺔ ﻟﻨﻈ ﺎم ﻳ ﻮﻧﻴﻜﺲ ﻟﻺدﺧ ﺎل واﻹﺧ ﺮاج UNIX-like
، I/Oوﻛ ﺎن اﻟﻨﻈ ﺎم اﻷﺧﻴ ﺮ ﻳﺴ ﺘﻌﻤﻞ ﻟﻠﺘﻌﺎﻣ ﻞ ﻣ ﻊ اﻟﻤﻌﻄﻴ ﺎت ﺑﻨﺴ ﻖ اﻟﻨﻈ ﺎم اﻟﺜﻨ ﺎﺋﻲ
، binary systemأﻻ أن ﻟﺠﻨ ﺔ Cﻓ ﻲ ﻣﻌﻬ ﺪ اﻟﻤﻘ ﺎﻳﻴﺲ اﻷﻣﺮﻳﻜ ﻲ اﻟ ﻮﻃﻨﻲ ﻟﻠﻐ ﺎت
اﻟﺒﺮﻣﺠ ﺔ ANISI-C Committeeﻗ ﺮرت ﻣ ﺆﺧﺮا اﻻﺳ ﺘﻐﻨﺎء ﻋ ﻦ اﻟﻨﻈ ﺎم ﻏﻴ ﺮ
اﻻﻧﺘﻘ ﺎﻟﻲ ﻣ ﻦ أﻧﻈﻤ ﺔ اﻟﺘﻌﺎﻣ ﻞ ﻣ ﻊ اﻟﻤﻌﻄﻴ ﺎت اﻟﺜﻨﺎﺋﻴ ﺔ ، ﻓﺄوﺟ ﺪت اﻟﺒ ﺪﻳﻞ ، ﺑﺤﻴ ﺚ ﻳﺼ ﺒﺢ
ﺑﻤﻘﺪور دوال اﻟﻨﻈ ﺎم اﻻﻧﺘﻘ ﺎﻟﻲ اﻟﺘﻌﺎﻣ ﻞ ﻣ ﻊ ﻛ ﻞ ﻣ ﻦ اﻟﻨﺼ ﻮص textواﻟﻤﻌﻄﻴ ﺎت اﻟﺜﻨﺎﺋﻴ ﺔ
binary systemﻓ ﻲ وﻗ ﺖ واﺣ ﺪ . أي أن آﺧ ﺮ ﺻ ﻮرة ) (versionﻣ ﻦ ، Cﻳﺘﻌﺎﻣ ﻞ
ﺑﻨﻈﺎم واﺣﺪ ﻓﻘﻂ ﻫﻮ ﻧﻈﺎم اﻟﻤﻠﻔﺎت اﻻﻧﺘﻘﺎﻟﻴﺔ .
وﻧﺤﺘﺎج ﻋﻨﺪ اﻟﺘﻌﺎﻣﻞ ﻣﻊ دوال ﻫﺬا اﻟﻨﻈ ﺎم ، أن ﻧﺴ ﺘﻌﻤﻞ ﻣﻠ ﻒ اﻟ ﺪﻟﻴﻞ ﻟﻺدﺧ ﺎل واﻹﺧ ﺮاج
stdio.hوﻳﻠﺨﺺ ﻟﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ اﺷﻬﺮ ﻫﺬه اﻟﺪوال:
وﻇﻴﻔﺘﻬﺎ اﺳﻢ اﻟﺪاﻟﺔ
ﺗﻔﺘﺢ ﻟﻚ ﻣﻠﻔﺎ )(fopen
ﺗﻐﻠﻖ ﻟﻚ ﻣﻠﻔﺎ )(fclose
ﺗﺨﺮج ) ﺗﻄﺒﻊ ( ﻟﺒﻨﺔ ) رﻣﺰا ( وﻫﻲ ﻣﺜﻞ char )(putc
ﺗﺪﺧﻞ ﻟﺒﻨﺔ ) رﻣﺰا ( إﻟﻰ اﻟﻤﻠﻒ ، وﻫﻲ ﻣﺜﻞ char )(getc
ﺗﺒﺤﺚ ﻟﻚ ﻋﻦ ﺑﻌﺾ اﻟﺮﻣﻮز ) ﻧﺺ( ﻓﻲ اﻟﻤﻠﻒ )(fseek
ﻣﺜﻞ وﻇﻴﻔﺔ printfﻟﻜﻦ ﻟﻠﻤﻠﻔﺎت )(fprintf
ﻣﺜﻞ وﻇﻴﻔﺔ scanfﻟﻜﻦ ﻟﻠﻤﻠﻔﺎت )(fscanf
ﺗﻌﻄﻲ اﻟﻨﺘﻴﺠﺔ trueﻋﻨﺪ وﺻﻮل ﻧﻬﺎﻳﺔ اﻟﻤﻠﻒ )(feof
ﺗﻌﻄﻲ اﻟﻨﺘﻴﺠﺔ trueﻋﻨﺪ ﺣﺪوث ﺧﻄﺄ )(ferror
ﺗﺮﺟﻊ اﻟﻤﻠﻒ إﻟﻰ ﺑﺪاﻳﺘﻪ )(rewind
اﻟﺠﺪول ١- ٥
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
داﻟﺔ ﻓﺘﺢ اﻟﻤﻠﻒ )( fopen
ﻣﺜﺎل١:
”#include “stdio.h
)(main ﻧﻜﺘﺐ آي اﺳﻢ ﻟﻠﺘﺨﺰﻳﻦ
{ ﺑﻤﻮﻗﻊ اﻟﺬاﻛﺮة ﻣﺜﻼ f
;FILE *f
;)”F=fopen(“C:\\matrix.txt”,”w
;)Fclose (f
اﻟﺮﻣﺰ wﻻﺳﺘﺤﺪاث
;0return ﻧﺺ ﺟﺪﻳﺪ ﻟﻠﻜﺘﺎﺑﺔ
} اﺳﻢ اﻟﻤﻠﻒ وﻧﺤﺪد ﻣﻮﻗﻌﻪ ) ﻣﺴﺎره(
ﻓﻲ اﻟﻘﺮص C
ﻧﻼﺣﻆ أﻧﻨﺎ ﻗﻤﻨﺎ ﻓﻲ اﻟﺴﻄﺮ اﻷول أﻋ ﻼه ﺑﺈﻧﺸ ﺎء ﻣﻮﻗ ﻊ ﻟﻠﻤﻠ ﻒ ﻓ ﻲ ذاﻛ ﺮة اﻟﺤﺎﺳ ﻮب ﻃﺒﻌ ﺎ
ﻧﻜﺘﺐ FILEﺑﺎﻷﺣﺮف اﻷﺑﺠﺪﻳﺔ اﻟﻜﺒﺮى ﺛﻢ ﺑﻌﺪ ذﻟﻚ * وﺑﻌﺪﻫﺎ ﻧﻄﻠﻖ اﻟﻤﺴﻤﻰ ﻣﺜﻼ f
ﺑﻌﺪ ذﻟﻚ ﻧﻘﻮم ﺑﻌﻤ ﻞ اﻟﺪاﻟ ﺔ اﻟﺨ ﺎص ﺑﻔ ﺘﺢ ﻣﻠ ﻒ ﻓ ﻲ ﻗ ﺮص diskوﺗﻌ ﻮد ) ﺗﻌﻄ ﻲ ﻗﻴﻤ ﺔ (
ﺑﻤﺆﺷﺮ اﻟﻤﻠﻒ اﻟﻤﻌﺮف ﻟﻪ وﻫﻮ fﻃﺒﻌﺎ.
ﺛﻢ ﻧﻘﻮم ﺑﺘﺤﺪﻳﺪ ﻣﻮﻗﻊ اﻟﻤﻠﻒ اﻟﻤﺮاد إﻧﺸﺎءه وﻳﺠﺐ اﻟﺘﺤ ﺬﻳﺮ ﻫﻨ ﺎ اﻧ ﻪ ﻳﺠ ﺐ ﻋ ﺪم ﻛﺘﺎﺑ ﺔ اﺳ ﻢ
ﻣﻠﻒ ﻣﻦ ﻣﻠﻔﺎت اﻟﻨﻈﺎم systemﻟﺘﺠﻨﺐ ﻋ ﺪم ﺣ ﺪوث ﺧﻠ ﻞ وﻣﺸ ﺎﻛﻞ ﺑﺎﻟﺠﻬ ﺎز ﻣ ﺜﻼ ﻧﻜﺘ ﺐ
ﻛﻤﺎ أﻋﻼه matrix.txtوﻫﻮ ﻣﻠﻒ ﻧﺼ ﻲ وﻳﺠ ﺐ وﺿ ﻊ اﻟﻌﻼﻣﺘ ﻴﻦ \\ ﺑﻌ ﺪ ﻛﺘﺎﺑ ﺔ اﻟﻘ ﺮص
Cوﻻ ﻳﺼﺢ وﺿﻊ ﻋﻼﻣﺔ واﺣﺪه \ ﻓﻘ ﻂ ، ﺑﻌ ﺪ ذﻟ ﻚ ﻧﻜﺘ ﺐ اﻟﺮﻣ ﺰ wﻻﺳ ﺘﺤﺪاث اﻟﻤﻠ ﻒ
اﻟﺠﺪﻳ ﺪ ﺛ ﻢ ﺑﻌ ﺪ ذﻟ ﻚ ﻓ ﻲ اﻟﺴ ﻄﺮ اﻷﺧﻴ ﺮ ﻧﻘ ﻮم ﺑﺈﻏﻼﻗ ﻪ ﺑﺎﻟﺪاﻟ ﺔ ) fclose (fوﻳﺠ ﺐ ﻛﺘﺎﺑ ﺔ
ﻫﺬه اﻟﺪاﻟﺔ ﻛﻲ ﻳﺼﺒﺢ اﻟﺒﺮﻧﺎﻣﺞ ﺻﺤﻴﺢ .
اﻵن ﻗﻢ ﺑﺘﻨﻔﻴ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ ﺑﻌ ﺪ ذﻟ ﻚ ﻟ ﻦ ﻳﻈﻬ ﺮ ﻟ ﻚ ﺷ ﻲ ﻗ ﺪ ﺗﺴ ﺘﻐﺮب ﻣ ﺎ اﻟﻔﺎﺋ ﺪة اﻵن اذﻫ ﺐ
ﻋﺰﻳﺰي إﻟﻰ اﻟﻘﺮص Cوﻫﻮ اﻟﺬي ﻗﻤﺖ ﺑﺈﻧﺸﺎء اﻟﻤﻠﻒ ﻓﻴﻪ ) اﻟﻤﺴﺎر أﻋﻼه(
وﺷﺎﻫﺪ اﻟﻤﻠﻒ اﻟﺠﺪﻳﺪ
ﻫﺬا ﻫﻮ اﻟﻤﻠﻒ
اﻟﺠﺪﻳﺪ
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺟﺪول اﻷﻧﻤﺎط ، ﺣﺴﺐ ﻣﺎ ﻗﺮرﺗﻪ ANSIﻣﺆﺧﺮا:
وﻇﻴﻔﺘﻪ رﻣﺰ اﻟﻨﻤﻂ
ﻟﻔﺘﺢ ﻣﻠﻒ اﻟﻨﺺ ﻟﻠﻘﺮاءة ""r
ﻻﺳﺘﺤﺪث ﻣﻠﻒ ﻧﺺ ﻟﻠﻜﺘﺎﺑﺔ "" w
ﻟﻺﻟﺤﺎق ﺑﻤﻠﻒ ﻧﺺ "" a
ﻟﻔﺘﺢ ﻣﻠﻒ ﺛﻨﺎﺋﻲ اﻟﻘﺮاءة ""rb
ﻻﺳﺘﺤﺪاث ﻣﻠﻒ ﺛﻨﺎﺋﻲ اﻟﻜﺘﺎﺑﺔ " "wb
ﻟﻺﻟﺤﺎق ﺑﻤﻠﻒ ﺛﻨﺎﺋﻲ ""ab
ﻟﻔﺘﺢ ﻣﻠﻒ ﻧﺺ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ "+"r
ﻻﺳﺘﺤﺪاث ﻧﺺ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ "+"w
ﻟﻔﺘﺢ ﻣﻠﻒ ﻧﺺ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ "+"a
ﻟﻔﺘﺢ ﻣﻠﻒ ﺛﻨﺎﺋﻲ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ ""r+b
ﻻﺳﺘﺤﺪاث ﻣﻠﻒ ﺛﻨﺎﺋﻲ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ ""w+b
ﻟﻔﺘﺢ ﻣﻠﻒ ﺛﻨﺎﺋﻲ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ ""a+b
اﻟﺠﺪول ٢- ٥
ﻧﻼﺣﻆ أن ﻫﺬا اﻟﺠﺪول ﻳﻤﻜﻦ اﺳﺘﻌﻤﺎﻟﻪ ﻟﻜﻞ ﻣﻦ ﻣﻠﻔﺎت اﻟﻨﺺ واﻟﻤﻠﻔﺎت اﻟﺜﻨﺎﺋﻴﺔ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
داﻟﺔ اﻟﻜﺘﺎﺑﺔ داﺧﻞ اﻟﻤﻠﻒ )( fprintf
ﻣﺜﺎل٢:
ﻗ ﻢ ﺑﻜﺘﺎﺑ ﺔ اﻟ ﻨﺺ "++ " welcome to cداﺧ ﻞ اﻟﻤﻠ ﻒ اﻟ ﺬي ﻗﻤﻨ ﺎ ﺑﺈﻧﺸ ﺎﺋﻪ ﻓ ﻲ اﻟﻤﺜ ﺎل
اﻟﺴﺎﺑﻖ )1( وﻫﻮ ﻣﻠﻒ matrix؟
”#include “stdio.h
)(main
{
;FILE *f
;)”f=fopen(“C:\\matrix.txt”,”w
;)”++fprintf (f,”welcome to c اﻇﻔﻨﺎ ﻫﺬا اﻟﺴﻄﺮ
اﻟﺠﺪﻳﺪ ﻟﻠﻄﺒﺎﻋﺔ
ﺑﺪاﺧﻞ اﻟﻤﻠﻒ
;0 return
}
ﻻﺣ ﻆ ﻋﺰﻳ ﺰي اﻟﻘ ﺎرئ أﻧﻨ ﺎ ﻗﻤﻨ ﺎ ﺑﻮﺿ ﻊ اﻟﺪاﻟ ﺔ ) (fprintfوﻫ ﻲ اﻟﺪاﻟ ﺔ اﻟﺨﺎﺻ ﺔ ﺑﺎﻟﻜﺘﺎﺑ ﺔ
داﺧ ﻞ اﻟﻤﻠﻔ ﺎت ﺑﺈﻣﻜﺎﻧ ﻚ اﻟﺮﺟ ﻮع ﻟﻠﺠ ﺪول ١-٥ اﻵن ﻧﻔ ﺬ اﻟﺒﺮﻧ ﺎﻣﺞ وﺑﻌ ﺪ ﺗﻨﻔﻴ ﺬ ارﺟ ﻊ
ﻟﻠﻤﻠﻒ ﻓﻲ اﻟﻘﺮص cواﻓﺘﺤﻪ ﻟﺘﺸﺎﻫﺪ اﻟﻌﺒﺎرة ++ welcome to cﻗﺪ ﻛﺘﺒﺔ ﺑﺪاﺧﻠﻪ.
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
داﻟﺔ إﻏﻼق اﻟﻤﻠﻒ )( fclose
وﺗﻌﻤ ﻞ ﻋﻜ ﺲ اﻟﺪاﻟ ﺔ )( ، fopenﻓﺘﻐﻠ ﻖ اﻟﻤﻠ ﻒ اﻟ ﺬي ﻓﺘﺤﻨ ﺎه ﺑﺎﻟﺪاﻟ ﺔ )( ، fopenوﻛ ﻞ
اﻟﻤﻠﻔ ﺎت اﻟﻤﻄﻠﻮﺑ ﺔ ﻣﻨ ﻚ إﻏﻼﻗﻬ ﺎ ﻗﺒ ﻞ ﻧﻬﺎﻳ ﺔ اﻟﺒﺮﻧ ﺎﻣﺞ ، وﻓ ﻲ ﺣﺎﻟ ﺔ ﻋ ﺪم ﻗﻴﺎﻣﻨ ﺎ ﺑ ﺈﻏﻼق
اﻟﻤﻠ ﻒ ﻓ ﺎن ﻋ ﺪدا ﻣ ﻦ اﻟﻤﺸ ﻜﻼت ﻗ ﺪ ﺗﻘ ﻊ ، وﻣﻨﻬ ﺎ ﺿ ﻴﺎع ﺑﻌ ﺾ اﻟﻤﻌﻄﻴ ﺎت ، واﺗ ﻼف
اﻟﻤﻠﻒ ، ووﻗﻮع أﺧﻄﺎء ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ .
ﻣﺜﺎل٣:
”#include “stdio.h
)(main
{
;FILE *f
;)”f=fopen(“C:\\matrix.txt”,”w
;)”++fprintf (f,”welcome to c
)fclose (f
;0 return ﻗﻤﻨﺎ ﺑﺈﻏﻼق اﻟﻤﻠﻒ ﻓﻲ
} ﻫﺬا اﻟﺴﻄﺮ ﻛﻤﺎ ﺗﻼﺣﻆ
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
اﻟﺪاﻟﺘﺎن )(putw() getw
ﺗﻘ ﻮم ﻣﻌﻈ ﻢ ﻣﺘﺮﺟﻤ ﺎت ++ cﺑﺎﺳ ﺘﻌﻤﺎل ﻫ ﺎﺗﻴﻦ اﻟ ﺪاﻟﺘﻴﻦ اﻹﺿ ﺎﻓﻴﺘﻴﻦ ﻟﺘﻘﻮﻣ ﺎ ﺑﻌﻤﻠﻴﺘ ﻲ
ﻗ ﺮاءة وﻛﺘﺎﺑ ﺔ اﻷﻋ ﺪاد اﻟﺼ ﺤﻴﺤﺔ ﻣ ﻦ واﻟ ﻲ ﻣﻠﻔ ﺎت اﻷﻗ ﺮاص ، وﻫﺎﺗ ﺎن اﻟ ﺪاﻟﺘﺎن ﻏﻴ ﺮ
ﻣﻌﺘﻤ ﺪﻳﻦ ﻣ ﻦ ﻗﺒ ﻞ ﻣﻌﻬ ﺪ اﻟﻤﻘ ﺎﻳﻴﺲ اﻟ ﻮﻃﻨﻲ اﻷﻣﺮﻳﻜ ﻲ ، ANSIوﺗﻌﻤ ﻞ ﻫﺎﺗ ﺎن اﻟ ﺪاﻟﺘﺎن
ﺗﻤﺎﻣ ﺎ ﻛﺎﻟ ﺪاﻟﺘﻴﻦ )( getcو )( putcواﻟﻔ ﺮق اﻟﻮﺣﻴ ﺪ اﻧﻬﻤ ﺎ ﺗﺘﻌ ﺎﻣﻼن ﻣ ﻊ ﻋ ﺪد ﺻ ﺤﻴﺢ
ﺑﺪﻻ ﻣﻦ رﻣﺰي.
ﻣﺜﺎل٤:
اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻘﻮم ﺑﻜﺘﺎﺑﺔ ) ﻃﺒﺎﻋﺔ( اﻟﻌﺪد اﻟﺼﺤﻴﺢ 0001 ﻓﻲ ﻣﻠﻒ اﻟﻘﺮص اﻟﻤﺸﺎر إﻟﻴﻪ
ﺑﻤﺆﺷﺮ اﻟﻤﻠﻒ : f
;)Putw (1000,f
ﻣﺜﺎل٥:
اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻘﻮم ﺑﻜﺘﺎﺑﺔ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ اﻟﺼ ﺤﻴﺢ xﻓ ﻲ ﻣﻠ ﻒ اﻟﻘ ﺮص اﻟﻤﺸ ﺎر إﻟﻴ ﻪ ﺑﻤﺆﺷ ﺮ
اﻟﻤﻠﻒ : f
;)Putw (x,f
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
:٦ﻣﺜﺎل
: f اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻘﻮم ﺑﻘﺮاءة ﻋﺪد ﺻﺤﻴﺢ ، ﻣﻦ ﻣﻠﻒ ﻣﺸﺎر إﻟﻴﻪ ﺑﻤﺆﺷﺮ اﻟﻤﻠﻒ
#include “stdio.h”
main()
{
FILE *f;
int x;
x=getw (f);
printf (“%d”,x);
return 0;
}
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
ﺍﻟﻨﻬﺎﻳﺔ
PDF created with FinePrint pdfFactory trial version www.pdffactory.com
Get documents about "