You are on page 1of 101

‫اﻟﻤﺆﻟﻒ‪ :‬ﻣﺠﻼد ﻣﺸﺎري اﻟﺴﺒﻴﻌﻲ‬

‫اﻟﺒﺮﻳﺪ اﻹﻟﻜﺘﺮوﻧﻲ‪magedxl@hotmail.com :‬‬

‫ﻳﻤﻜﻨﻜﻢ ﻣﺮاﺳﻠﺘﻲ إذا ﻛﺎن ﻫﻨﺎك آي ﻣﺸﺎﻛﻞ ﻣﺘﻌﻠﻘﺔ ﺑﻌﺪم اﻟﺘﻮﺿﻴﺢ أو ﻧﺤﻮه ﻣﻤﺎ ﻳﻮﺟﺪ ﻓﻲ ﻫﺬا اﻟﻜﺘﺎب ‪...‬‬

‫‪‬‬

‫ﻣﻤﻨﻮع ﻣﻨﻌﺎ ﺑﺎﺗﺎ ﻃﺒﺎﻋﺔ أو اﻗﺘﺒﺎس أي ﺟﺰء ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب ﺑﺪون أذن ﺧﻄﻲ ﻣﻦ اﻟﻤﺆﻟﻒ‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﺣﻘﻮق اﻟﻄﺒﻊ ﻣﺤﻔﻮﻇﺔ©‬

‫* اﻟ ﺒﺮاﻣﺞ اﻟﻤﺬﻛ ﻮرة ﻓ ﻲ ﻫ ﺬا اﻟﻜ ﺘﺎب ﻣ ﺜﻞ " ‪"visual c++" "Windows‬وﻏ ﻴﺮﻫﺎ ﻋﻼﻣ ﺎت ﺗﺠﺎرﻳﺔ أو ﻋﻼﻣﺎت‬
‫ﻣﺴ ﺠﻠﺔ ﻻﺻ ﺤﺎﺑﻬﺎ ‪ ،‬واﻟﻤﺆﻟ ﻒ ﻳﺤ ﺘﺮم ﻫ ﺬه اﻟﻌﻼﻣ ﺎت وﻳﻘ ﺮ ﺑﻬ ﺎ ﻻﺻ ﺤﺎﺑﻬﺎ ‪ ،‬وﻟ ﻢ ﻳﺬﻛ ﺮﻫﺎ ﺗﺼ ﺮﻳﺤﺎ ﻓ ﻲ اﻟﻜ ﺘﺎب ﻃﻠ ﺒﺎ‬
‫ﻟﻼﺧﺘﺼﺎر‪.‬‬
‫* اﻟﻤﺆﻟ ﻒ ﻻ ﻳﻌ ﺪ ﻣﺴ ﺆوﻻ ﺑ ﺄي ﺷ ﻜﻞ ﺻ ﺮﻳﺤﺎ أو ﺿ ﻤﻨﻴﺎ ﻋ ﻦ أي ﻧ ﺘﺎﺋﺞ ﺗﺘﺮﺗ ﺐ ﻋ ﻦ اﺳ ﺘﺨﺪام اﻟﻤﻌﻠﻮﻣ ﺎت اﻟﺘ ﻲ‬
‫ﻳﺤﺘﻮﻳﻬﺎ اﻟﻜﺘﺎب أو آي ﺗﻌﺪﻳﻼت ﻳﺠﺮﻳﻬﺎ اﻟﻘﺎرئ ﻋﻠﻴﻬﺎ‪.‬‬
‫* ﺟﻤﻴﻊ اﻵراء وﻣﺎ ﻛﺘﺐ ﻓﻲ ﻫﺬا اﻟﻜﺘﺐ ﺗﻌﺒﺮ ﻋﻦ رأي اﻟﻤﺆﻟﻒ ﺷﺨﺼﻴﺎ‪.‬‬
‫* اﻟﻜﺘﺎب ﻣﺠﺎﻧﻲ ‪ % 100‬وﻻ ﻳﺤﻖ ﻻﺣﺪ ﺑﻴﻌﻪ أو اﺳﺘﻐﻼﻟﻪ ﺗﺠﺎرﻳﺎ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻫ ﺬا اﻟﻜ ﺘﺎب إﻫ ﺪاء إﻟ ﻰ ارض اﻟﻌ ﺮاق اﻟﺤﺒﻴ ﺒﺔ ‪ ..‬ﻧﻌ ﻢ اﻟﻌ ﺮاق ﻟﻘ ﺪ أﺿ ﻌﻨﺎ اﻟﻌ ﺮاق ارض اﻟﻔﺮات ودﺟﻠﺔ ‪ ،‬ﻓﺨﺮ اﻹﺳﻼم‬
‫واﻟﻤﺴﻠﻤﻴﻦ ﺑــﻐــﺪاد ‪...‬‬
‫أﺿﻌﻨﺎﻫﺎ ‪ ..‬أﺿﻌﻨﺎﻫﺎ‪..‬‬
‫ﻟﻜﻨﻚ ﻟﺴﺖ ﺑﺒﻌﻴﺪ وﺳﺘﻌﻮدﻳﻦ أرﺿﺎ ﻟﻠﺨﻼﻓﻪ اﻹﺳﻼﻣﻴﺔ‪..‬‬
‫ﻗﺮﻳﺒﺎ ‪ ..‬ﻗﺮﻳﺒﺎ‬

‫‪‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫أﻋﺰاﺋﻲ‪..‬‬
‫ﺗﻢ وﺑﺤﻤﺪ اﷲ اﻻﻧﺘﻬﺎء ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب ‪ ..‬اﻟﻤﻔﻴﺪ ﻟﻠﺠﻤﻴﻊ ﺑﺈذن اﷲ اﻟﻤﺒﺘﺪﺋﻴﻦ واﻟﻤﺤﺘﺮﻓﻴﻦ ﻋﻠﻰ ﺣﺪ اﻟﺴﻮاء‪..‬‬
‫وﻗﺪ ﻗﻤﺖ ﺑﺈﻧﺸﺎء ﻫﺬا اﻟﻜﺘﺎب ﺑﻌﺪ أن ﻻﺣﻈﺖ ﻗﻠﺖ اﻟﻜﺘﺐ اﻟﺘﻲ ﺗﺘﺤﺪث ﻋﻦ ﻟﻐﺔ ‪..Visual C++‬‬
‫وﻫﻲ اﻟﻠﻐﺔ اﻟﺘﻲ ﺗﻢ ﻣﻨﻬﺎ ﺑﻨﺎء ﺣﺰﻣﺔ اوﻓﻴﺲ اﻟﻤﻌﺮوﻓﺔ ﻟﺘﻄﺒﻴﻘﺎت اﻟﺤﺎﺳﺐ‪..‬‬
‫ﻟﺬﻟﻚ أرﺟﻮ أن ﻳﺤﻮز ﻫﺬا اﻟﻜﺘﺎب ﻋﻠﻰ رﺿﺎﻛﻢ وﻫﻮ ﻳﺤﺘﻮى ﻋﻠﻰ اﻟﻌﺪﻳﺪ ﻣﻦ اﻷﻣﺜﻠﺔ اﻟﺘﻄﺒﻴﻘﻴﺔ ﻣﻊ ﺷﺮح اﻷﺳﺎﺳﻴﺎت‬
‫واﻟﻌﺪﻳﺪ ﻣﻦ اﻷﺟﻮﺑﺔ اﻟﺘﻲ ﻳﺤﺘﺎﺟﻬﺎ ﻣﺒﺮﻣﺠﻲ ‪.C++‬‬
‫وﺑﺎﷲ اﻟﺘﻮﻓﻴﻖ‪..‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫‪‬‬

‫ﻋﻨﻮان اﻟﻜﺘﺎب‪............................................................................‬أ‬
‫اﻫﺪأ‪.......................................................................................‬ب‬
‫ﻣﻘﺪﻣﺔ‪ ....................................................................................‬د‬

‫اﻟﺒﺎب اﻷول‬
‫اﻷﺳﺎﺳﻴﺎت ﻣﻜﻮﻧﺎت ‪ c++‬وادواﺗﻬﺎ‬
‫رﻣﻮز ﻟﻐﺔ ‪٧......................................................................... c++‬‬
‫اﻟﻤﺘﻐﻴﺮات‪١٣................................................................................‬‬
‫اﻷدوات اﻟﻤﺴﺘﻌﻤﻠﺔ ﻓﻲ ﻟﻐﺔ ‪١٥.................................................... c++‬‬
‫اﻷدوات اﻟﺤﺴﺎﺑﻴﺔ ‪١٥......................................................................‬‬
‫اﻷدوات اﻷﺣﺎدﻳﺔ واﻟﺜﻨﺎﺋﻴﺔ‪١٧............................................................‬‬
‫اﻟﺰﻳﺎدة واﻟﻨﻘﺼﺎن‪١٧.......................................................................‬‬
‫أوﻟﻴﺎت اﻟﻌﻤﻠﻴﺎت ﻟﻸدوات اﻟﺤﺴﺎﺑﻴﺔ‪١٩..................................................‬‬
‫اﻷدوات اﻟﻌﻼﻗﻴﺔ واﻟﻤﻨﻘﻄﻴﺔ ‪٢٠..........................................................‬‬
‫اﻷدوات اﻟﺪﻗﻴﻘﺔ‪٢٢.........................................................................‬‬
‫أداة اﻟﻨﻔﻲ‪٢٣.................................................................................‬‬
‫أداة اﻟﺠﻤﻊ‪٢٤...............................................................................‬‬
‫أداة اﻻﺧﺘﻴﺎر‪٢٤............................................................................‬‬
‫أداة اﻻﺧﺘﻴﺎر اﻻﺳﺘﺜﻨﺎﺋﻲ‪٢٥...............................................................‬‬
‫أداة اﻹزاﺣﺔ‪٢٦.............................................................................‬‬
‫اﻷداة اﻟﺸﺮﻃﻴﺔ ‪٢٨.........................................................................‬‬
‫أداة اﻟﻌﻨﻮان‪٢٩..............................................................................‬‬
‫أداة ﺗﻌﻴﻴﻦ اﻟﻄﻮل‪٣٠.......................................................................‬‬
‫اﻟﻔﺎﺻﻠﺔ ﻛﺄداة‪٣١...........................................................................‬‬
‫ﺟﻤﻞ اﻟﺘﻌﺮﻳﻒ‪٣٢..........................................................................‬‬
‫اﻟﺜﻮاﺑﺖ اﻟﺮﻣﺰﻳﺔ ذات اﻟﺸﺮط اﻟﻤﻌﻜﻮﺳﺔ‪٣٣...........................................‬‬
‫اﻟﻤﻼﺣﻈﺎت واﻟﺘﻌﻠﻴﻘﺎت ﻓﻲ ‪٣٤...................................................c++‬‬

‫اﻟﺒﺎب اﻟﺜﺎﻧﻲ‬
‫ﺗﺸﻐﻴﻞ ‪Visual C++6.0‬‬
‫ﺧﻄﻮات ﺗﺸﻐﻴﻞ ﺑﺮﻧﺎﻣﺞ ‪٣٥.......................................... Visual C++‬‬

‫اﻟﺒﺎب اﻟﺜﺎﻟﺚ‬
‫أﺳﺎﻟﻴﺐ اﻹدﺧﺎل واﻹﺧﺮاج‬
‫ﻣﻘﺪﻣﺔ‪٤٠..................................................................................‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻷﺳﺎﺳﻴﺎت‬
‫ﻣﻜﻮﻧﺎت ‪ C++‬وادواﺗﻬﺎ‬
‫‪Basic Elements of C++‬‬

‫رﻣﻮز ﻟﻐﺔ ‪C++‬‬


‫*اﻟﺮﻣﻮز اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ ﻟﻐﺔ ‪C++‬‬
‫‪ -١‬اﻟﺤﺮوف اﻹﻧﺠﻠﻴﺰﻳﺔ اﻟﻜﺒﻴﺮة ‪A.B.C‬‬
‫‪ -٢‬اﻟﺤﺮوف اﻹﻧﺠﻠﻴﺰﻳﺔ اﻟﺼﻐﻴﺮة ‪a.b.c‬‬
‫‪ -٣‬اﻷرﻗﺎم اﻟﻌﺮﺑﻴﺔ اﻷﺻﻞ ‪1.2.3‬‬
‫‪ -٤‬رﻣﻮز ﺧﺎﺻﺔ ﻣﺜﻞ‪:‬‬
‫][‬ ‫"‬ ‫!‬ ‫<‬ ‫‪-‬‬ ‫‪+‬‬
‫*‬ ‫‪،‬‬ ‫||‬ ‫>‬ ‫)(‬ ‫_‬
‫>>‬ ‫><‬ ‫=<‬ ‫=>‬ ‫\‬ ‫‪/‬‬
‫=!‬ ‫&‬ ‫‪%‬‬ ‫‪$‬‬ ‫‪#‬‬ ‫<<‬
‫اﻟﺠﺪول‪١-١‬‬
‫وﺗﻌ ﺪ ﻫ ﺬه اﻟ ﺮﻣﻮز ﺑﺄﻧﻮاﻋﻬ ﺎ اﻟﻤ ﺎدة اﻟﺨ ﺎم اﻟﺘ ﻲ ﺗ ﺘﻜﻮن ﻣ ﻨﻬﺎ ﻣﻔ ﺮدات ﻟﻐ ﺔ ‪ ، C++‬وإذا‬
‫درﺳ ﺖ ﻟﻐ ﺔ أﺧ ﺮى ﻗ ﺒﻞ ﻟﻐ ﺔ ‪ ، C++‬ﻓ ﺎﻧﻚ ﺗﻼﺣ ﻆ أن ﻟﻐ ﺔ ‪ ، C++‬ﺗﺴ ﺘﻌﻤﻞ رﻣ ﻮزا‬
‫إﺿﺎﻓﻴﺔ ﻓﻲ ﻟﻮﺣﺔ ﻣﻔﺎﺗﻴﺢ اﻟﺤﺎﺳﺐ ﻻ ﺗﻮﺟﺪ ﻓﻲ ﺑﻌﺾ اﻟﻠﻐﺎت‪.‬‬

‫*ﻛﻠﻤﺎت ﻟﻐﺔ ‪C++‬‬


‫اﻟﻜﻠﻤﺎت ﻧﻮﻋﻴﻦ‪-:‬‬
‫‪ -١‬أﺳﻤﺎء ﺗﻌﺮﻳﻔﻴﺔ )‪(Identifiers‬‬
‫وﻫﻲ اﻷﺳﻤﺎء اﻟﺘﻲ ﻧﺴﻤﻴﻬﺎ ﻧﺤﻦ " اﻟﻤﺒﺮﻣﺠﻮن" ﺗﻌﺮف اﻟﺤﺎﺳﻮب ﺑﻤﺎ ﺗﺮﻳﺪ‪.‬‬

‫وﺗﻄﻠﻖ اﻷﺳﻤﺎء اﻟﺘﻌﺮﻳﻔﻴﺔ ﻋﻠﻰ‪-:‬‬


‫‪ -A‬اﻟﻤﺘﻐﻴﺮات‪.‬‬
‫‪ -B‬اﻻﺧﺘﺰاﻧﺎت )اﻟﺪوال(‪.‬‬
‫‪ -C‬اﻟﻤﺆﺷﺮات‪.‬‬

‫‪PDF created with pdfFactory Pro 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‬ﻻﻧﻪ ﺑﺪا ﺑﺮﻗﻢ وﻟﻴﺲ ﺑﺤﺮف‪.‬‬
‫‪ Ù b6.1‬ﻻﺳﺘﻌﻤﺎﻟﻪ اﻟﺮﻣﺰ اﻟﺨﺎص )‪(.‬‬
‫!‪ Ù salim‬ﻻﺳﺘﻌﻤﺎﻟﻪ اﻟﺮﻣﺰ اﻟﺨﺎص )!(‬
‫‪ Ù Ђ2‬ﻻ ﻳﺠﻮز اﺳﺘﻌﻤﺎل ﺣﺮوف ﻏﻴﺮ إﻧﺠﻠﻴﺰﻳﺔ‪.‬‬
‫‪ Ù No#1‬ﻻﺳﺘﻌﻤﺎﻟﻪ اﻟﺮﻣﺰ اﻟﺨﺎص )‪(#‬‬

‫وﻣ ﻦ اﻟﺠﺪﻳ ﺮ ﺑﺎﻟﺬﻛ ﺮ ‪ ،‬أن ﻟﻐ ﺔ ‪ C++‬ﺗﻔ ﺮق ﺑﻴ ﻦ اﻟﺤ ﺮوف اﻷﺑﺠﺪﻳﺔ اﻟﺼﻐﻴﺮة واﻟﻜﺒﻴﺮة ‪،‬‬
‫ﻓﻤ ﺜﻼ اﻷﺳ ﻤﺎء ‪ SYSTEM , system, System :‬ﺗﻌ ﺎﻣﻞ ﻛﺄﺳ ﻤﺎء ﻣﺨ ﺘﻠﻔﺔ ﻋ ﻦ‬
‫ﺑﻌﻀﻬﺎ اﻟﺒﻌﺾ ﺑﺴﺒﺐ اﺧﺘﻼف ﻣﻌﺎﻣﻠﺔ اﻟﻤﺘﺮﺟﻢ ﻟﻠﺤﺮوف اﻟﺼﻐﻴﺮة واﻟﻜﺒﻴﺮة‪.‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com


‫• ﺗﻤﺜﻴﻞ اﻟﺜﻮاﺑﺖ اﻟﻌﺪدﻳﺔ ‪Numeric Constants‬‬

‫ﻳﻤﻜﻦ ﺗﻤﺜﻴﻞ اﻟﺜﻮاﺑﺖ اﻟﻌﺪدﻳﺔ ‪ ،‬ﻓﻲ ﻟﻐﺔ ‪ C++‬ﺑﺜﻼث ﺻﻮر ﻫﻲ‪-:‬‬

‫‪ .a‬اﻟﺜﺎﺑﺖ اﻟﻌﺪدي اﻟﺼﺤﻴﺢ ‪integer‬‬


‫‪ -‬ﻫﻮ ﻋﺪد ﻣﻜﻮن ﻣﻦ اﻷرﻗﺎم ﻣﻦ ‪9 Ù 0‬‬
‫‪ -‬ﻻ ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎﺻﻠﺔ ﻋﺸﺮﻳﺔ‪.‬‬
‫‪ -‬ﻳﻤﻜﻦ أن ﻳﺤﻮى اﻹﺷﺎرة "‪ "+‬أو "‪"-‬‬

‫أﻣﺜﻠﺔ ﺻﺤﻴﺤﺔ ﻋﻠﻰ اﻟﺜﺎﺑﺖ اﻟﻌﺪدي اﻟﺼﺤﻴﺢ‪-:‬‬


‫‪0‬‬
‫‪15‬‬
‫‪1000‬‬
‫‪321‬‬
‫‪-61‬‬

‫واﻷﻋﺪاد اﻟﺘﺎﻟﻴﺔ ﻏﻴﺮ ﺻﺤﻴﺤﺔ ﻟﻸﺳﺒﺎب اﻟﻤﺒﻴﻨﺔ إزاء ﻛﻞ ﻣﻨﻬﺎ‪:‬‬


‫‪ : 3.31‬ﻻﻧﻪ ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎﺻﻠﺔ ﻋﺸﺮﻳﺔ‪.‬‬
‫‪ : 1,000‬ﻻﻧﻪ ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎرزة‪.‬‬
‫‪ : J72‬ﻻﻧﻪ ﻳﺤﺘﻮى ﻋﻠﻰ ﺣﺮف أﺑﺠﺪي‪.‬‬
‫‪ : 2 4‬ﻟﻮﺟﻮد ﻓﺮاغ ﺑﻴﻦ اﻟﻌﺪﻳﺪﻳﻦ‪.‬‬
‫‪ : 1999 1992 1992‬ﻟﻮﺟﻮد ﻓﺮاغ وأﻳﻀﺎ ﻻن اﻟﻌﺪد ﻛﺒﻴﺮ‪.‬‬

‫‪ ، C++‬ﺣﺴ ﺐ ﻃﻮﻟﻬ ﺎ ‪ ،‬واﻟﺴ ﻌﺔ‬ ‫ﻛﻤ ﺎ ﻳﻤﻜ ﻦ ﺗﺼ ﻨﻴﻒ اﻷﻋ ﺪاد اﻟﺼ ﺤﻴﺤﺔ ﻓ ﻲ ﻟﻐ ﺔ‬
‫اﻟﺘﺨﺰﻳﻨﻴﺔ ﻟﻬﺎ ﻓﻲ اﻟﺬاﻛﺮة ﻣﺜﻼ‪-:‬‬
‫اﻟﺜﻮاﺑﺖ اﻟﺼﺤﻴﺤﺔ ‪ 40000 , 19897‬ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﻃﻮﻳﻠﺔ ‪.long int‬‬
‫اﻟﺜﻮاﺑﺖ ‪ 45 , 80 , -16‬ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﻗﺼﻴﺮة ‪.short int‬‬
‫اﻟﺜﻮاﺑﺖ ‪ 967 , 20000‬ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﺑﺪون إﺷﺎرة ‪.unsigned int‬‬

‫واﻟﻔ ﺮق ﺑﻴ ﻦ اﻟﺜﻮاﺑ ﺖ اﻟﻄﻮﻳﻠ ﺔ واﻟﻘﺼ ﻴﺮة ﻫ ﻮ ﻓ ﻲ ﻋ ﺪد اﻟﻮﺣﺪات اﻟﺘﺨﺰﻳﻨﻴﺔ اﻟﻤﻄﻠﻮﺑﺔ ﻟﻜﻞ‬


‫ﻧ ﻮع ﻓ ﻲ اﻟﺬاﻛ ﺮة ‪ ،‬ﻓﺎﻟﻄﻮﻳﻠ ﺔ ﺗ ﺄﺧﺬ ﺣﻴﺰا اﻛﺒﺮ ‪ ،‬واﻟﻘﺼﻴﺮة ﺗﻮﻓﺮ ﻋﺪد اﻟﻮﺣﺪات اﻟﺘﺨﺰﻳﻨﻴﺔ‬
‫اﻟﻤﺴ ﺘﻌﻤﻠﺔ ‪ ،‬أﻣ ﺎ اﻟﺜﻮاﺑ ﺖ اﻟﺼ ﺤﻴﺤﺔ ﺑ ﺪون إﺷﺎرة ‪ ، unsigned int‬ﻓﺎن اﺳﺘﻌﻤﺎﻟﻬﺎ ﻳﻮﻓﺮ‬
‫وﺣ ﺪة ﺗﺨﺰﻳﻨ ﻴﺔ واﺣ ﺪة ﺗﺴ ﺘﻌﻤﻞ ﻟﻼﺷ ﺎره ﻋ ﻨﺪﻣﺎ ﺗﺬﻛ ﺮ ﻛﻠﻤ ﺔ ‪ ، unsigned‬ﻗ ﺒﻞ ‪، int‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫وذﻟ ﻚ ﺑﺈزاﺣ ﺔ اﻟﻘ ﻴﻤﺔ إﻟ ﻰ ﻗ ﻴﻤﺔ ﻣﻮﺟ ﺒﺔ ﺑ ﺪون إﺷ ﺎرة ‪ ،‬وﻟﻜ ﻞ ﻧ ﻮع ﻣ ﻦ اﻷﻧ ﻮاع اﻟﺴ ﺎﺑﻘﺔ‬
‫ﺗﻄﺒﻴﻘﺎﺗﻪ اﻟﻤﻨﺎﺳﺒﺔ‪.‬‬

‫‪ -b‬اﻟﺜﺎﺑﺖ اﻟﻌﺪدي اﻟﺤﻘﻴﻘﻲ ‪Floating-point Constants‬‬


‫‪ -‬ﻫﻮ ﻋﺪد ﻣﻜﻮن ﻣﻦ اﻷرﻗﺎم ‪9 Ù 0‬‬
‫‪ -‬ﻳﺠﺐ أن ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎﺻﻠﺔ ﻋﺸﺮﻳﺔ‬
‫‪ -‬ﻳﻤﻜﻦ أن ﻳﺤﻮى اﻻﺷﺎره "‪ "+‬أو "‪"-‬‬
‫‪ -‬ﻻ ﻳﺠﻮز أن ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎرزة "‪"،‬‬

‫أﻣﺜﻠﺔ ﻋﻠﻰ ﺛﻮاﺑﺖ ﻋﺪد ﺣﻘﻴﻘﻲ ﺗﺴﺘﻌﻤﻞ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺸﺮﻳﺔ ﺑﺸﻜﻞ ﺻﺤﻴﺢ ‪-:‬‬
‫‪421.5‬‬
‫‪10.6‬‬
‫‪0.0‬‬
‫‪0‬‬
‫‪01‬‬
‫‪-68.0‬‬

‫واﻷﻣﺜﻠﺔ اﻻﺗﻴﻪ ﻏﻴﺮ ﺻﺤﻴﺤﺔ ﻟﻸﺳﺒﺎب اﻟﻤﺒﻨﻴﺔ إزاء ﻛﻞ ﻣﻨﻬﺎ‪-:‬‬


‫‪ : 1000‬ﻻﻧﻪ ﻻ ﻳﺤﺘﻮى ﻋﻠﻲ ﻓﺎﺻﻠﺔ ﻋﺸﺮﻳﺔ‪.‬‬
‫‪ : 4,000.21‬ﻻﻧﻪ ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺎرزة‪.‬‬
‫‪ : 2 83.4‬ﻻن ﻳﺤﺘﻮى ﻋﻠﻰ ﻓﺮاغ ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫• ﺗﻤﺜﻴﻞ اﻟﺜﻮاﺑﺖ اﻟﺮﻣﺰﻳﺔ ‪Non-numeric‬‬
‫‪ -‬ﺳﻠﺴﻠﺔ ﻣﻦ رﻣﻮز اﻟﻠﻐﺔ ) أﺣﺮف أرﻗﺎم رﻣﻮز ﺧﺎﺻﺔ( ﻣﺤﺼﻮرة ﺑﻴﻦ‬
‫ﺣﻮاﺻﺮ ﻋﻠﻮﻳﺔ ﻣﺰدوﺟﺔ )ﻋﻼﻣﺎت ﺗﻨﺼﻴﺺ أو اﻗﺘﺒﺎس(‬

‫وﻣﻦ اﻷﻣﺜﻠﺔ ﻋﻠﻰ اﻟﺜﺎﺑﺖ اﻟﺮﻣﺰي ﻣﺎ ﻳﺄﺗﻲ ‪-:‬‬


‫"‪"first‬‬
‫"‪"my name is‬‬
‫"‪"30+50=80‬‬
‫"‪"my,no=123.04‬‬
‫"‪"Islam‬‬

‫وﺗﻼﺣ ﻆ أﻧ ﻨﺎ ﺳ ﻤﻴﻨﺎ أي ﻧ ﺺ ﻣﻮﺿﻮع ﺑﻴﻦ ﺣﺎﺻﺮﺗﻴﻦ ﻣﺰدوﺟﺘﻴﻦ ﺛﺎﺑﺘﺎ رﻣﺰﻳﺎ واﻟﺼﺤﻴﺢ‬


‫أن ﺗﺴ ﻤﻴﺘﻪ ﺛﺎﺑ ﺘﺎ رﻣ ﺰﻳﺎ ﻫ ﻲ ﻣﻦ ﻗﺒﻴﻞ اﻟﻤﺠﺎز واﻻﺻﻄﻼح ﻻ اﻟﺤﻘﻴﻘﺔ ‪ ،‬واﻣﺎ ﻛﻠﻤﺔ رﻣﺰي‬
‫‪ :‬ﻓ ﻼن اﻟ ﻨﺺ ﻣﻜ ﻮن ﻣ ﻦ ﻋ ﺪد ﻣ ﻦ اﻟ ﺮﻣﻮز ‪ ،‬وﺗﺴ ﻤﻴﺔ ﺑﻌ ﺾ اﻟﻜﺘ ﺐ ﺑﺎﻟﺜﺎﺑ ﺖ ﻏ ﻴﺮ اﻟﻌ ﺪد‬
‫‪.Non-numeric‬‬

‫ﻣﻼﺣﻈﺔ‪/‬‬
‫ﻛ ﻞ اﻟﺜﻮاﺑ ﺖ اﻟﺮﻣ ﺰﻳﺔ اﻟ ﻮاردة أﻋ ﻼه ‪ ،‬وان اﺳ ﺘﺨﺪﻣﺖ ارﻗﺎﻣ ﺎ ﺣﺴ ﺎﺑﻴﺔ داﺧﻠﻬ ﺎ ‪ ،‬أﻻ أﻧﺎ ﻻ‬
‫ﺗﺤﻤ ﻞ أي ﻗ ﻴﻤﺔ ﺣﺴ ﺎﺑﻴﺔ ‪ ،‬وﻟ ﻴﺲ ﻟﻬ ﺎ ﻣﻌ ﻨﻰ ﺣﺴ ﺎﺑﻲ ‪ ،‬وﺗﺴ ﺘﺨﺪم ﻣ ﺜﻞ ﻫ ﺬه اﻟﺜﻮاﺑ ﺖ ﻋ ﺎدة‬
‫ﻛﻤﻌﻠﻮﻣﺎت ﺗﻮﺿﻴﺤﻴﺔ ﻣﻊ ﻧﺘﺎﺋﺞ اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫‪PDF created with pdfFactory Pro 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‬رﻣﻮز‬

‫;‪X=2.0‬‬
‫;‪Y=10.6*x‬‬
‫;‪K=100‬‬
‫;‪A=t‬‬
‫;‪B=f‬‬
‫;‪C=4‬‬

‫ﻻﺣ ﻆ اﻟﺴ ﻄﺮﻳﻦ اﻷول ‪ ،‬واﻟﺜﺎﻟ ﺚ ﻳﺤ ﺘﻮﻳﺎن ﻋﻠ ﻰ اﻛ ﺜﺮ ﻣ ﻦ ﻣﺘﻐ ﻴﺮ ﺣﻴ ﺚ ﻳﻔﺼ ﻞ ﺑﻴ ﻦ ﻛﻞ‬


‫ﻣﺘﻐﻴﺮﻳ ﻦ ‪ ،‬ﻓﺎﺻ ﻠﺔ وﻛﺬﻟ ﻚ ﻳﻤﻜ ﻦ ﺗﺤﺪﻳ ﺪ أﻧ ﻮاع اﻟﻤﺘﻐ ﻴﺮات ‪ ،‬ﺑﺬﻛ ﺮ اﻟﺘﻔﺼﻴﻞ اﻟﺪﻗﻴﻖ ﻟﻠﻨﻮع‬
‫‪ ،‬ﻣ ﻦ ﺣﻴ ﺚ ﻃ ﻮل اﻟﺴ ﻌﺔ اﻟﺘﺨﺰﻳﻨ ﻴﺔ ‪ ،‬أي ﻫ ﻞ ﻫﻮ ﺻﺤﻴﺢ ﻗﺼﻴﺮ أم ﻃﻮﻳﻞ ﺣﻘﻴﻘﻲ ﻗﺼﻴﺮ‬
‫أو ﻣﻀﺎﻋﻒ ‪ ...‬اﻟـﺦ‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫• وﺗﻘﺴﻢ اﻟﻤﺘﻐﻴﺮات ﻟﻨﻮﻋﻴﻦ ‪-:‬‬
‫‪ -١‬ﻣﺘﻐﻴﺮات ﻋﺪدﻳﺔ‬
‫وﻫﻲ ﻣﻮاﻗﻊ ﻓﻲ اﻟﺬاﻛﺮة ﺗﺨﺰن ﺑﻬﺎ أﻋﺪاد ‪.‬‬

‫‪ -٢‬ﻣﺘﻐﻴﺮات رﻣﺰﻳﺔ‬
‫وﻫﻲ ﻣﻮاﻗﻊ ﻓﻲ اﻟﺬاﻛﺮة ﺗﺨﺰن ﺑﻬﺎ رﻣﻮز‪.‬‬

‫‪ -٣‬ﻣﺘﻐﻴﺮات ﻣﻨﻄﻘﻴﺔ‬
‫وﺗﺨﺰن ﺑﻬﺎ ﻗﻴﻤﺔ ﻣﻨﻄﻘﻴﺔ أﻣﺎ ‪ FALSE =0‬أو ‪TRUE=1‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻷدوات اﻟﻤﺴﺘﻌﻤﻠﺔ ﻓﻲ ﻟﻐﺔ ‪C++‬‬
‫ﻳﻮﺟﺪ ﻓﻲ ﻟﻐﺔ ‪ C++‬ﺛﻼﺛﺔ أﻧﻮاع ﻣﻦ اﻷدوات وﻫﻲ‪:‬‬
‫اﻷدوات اﻟﺤﺴ ﺎﺑﻴﺔ – اﻷدوات اﻟﻤﻨﻄﻘ ﻴﺔ واﻟﻌﻼﻗ ﺔ – اﻷدوات اﻟﺪﻗ ﻴﻘﺔ وﻓ ﻴﻤﺎ ﻳﺄﺗ ﻲ ﺗﻔﺼ ﻴﻞ‬
‫ﺑﺎﻷﻧﻮاع اﻟﺜﻼﺛﺔ‪-:‬‬

‫اﻷدوات اﻟﺤﺴﺎﺑﻴﺔ ‪Arithmetic Operators‬‬


‫ﺗﺴ ﻤﺢ ﻟﻐ ﺔ ‪ C++‬ﺑﺎﺳ ﺘﻌﻤﺎل اﻷدوات اﻟﺤﺴ ﺎﺑﻴﺔ ﻣ ﻦ ﺟﻤ ﻊ وﻃ ﺮح وﺿ ﺮي وﻗﺴ ﻤﺔ ‪،‬‬
‫ﻛﺎﻟﻠﻐ ﺎت اﻷﺧ ﺮى ‪ ،‬إﻻ أن ﻋﻤﻠ ﻴﺔ اﻟ ﺮف إﻟ ﻰ أس ‪ ،‬ﻟﻴﺲ ﻟﻬﺎ أدوات ﻣﺒﺎﺷﺮة ﻣﺜﻞ اﻷداة ‪h‬‬
‫ﻓ ﻲ ‪ Basic‬واﻷداة ** ﻓ ﻲ ﻓﻮرﺗ ﺮان ‪ ،‬واﻧﻤ ﺎ ﺗ ﺘﻢ ﻋﻠﻤ ﻴﺔ اﻟ ﺮﻓﻊ إﻟ ﻰ أس ﻓ ﻲ ﻟﻐ ﺔ ‪C++‬‬
‫ﺑﻄﺮﻳﻘﺔ أﺧﺮى ‪..‬‬
‫ﻛﻤ ﺎ ﺗﺨ ﺘﻠﻒ اﻟﻘﺴ ﻤﺔ ﻓ ﻲ ﻟﻐ ﺔ ‪ C++‬ﻋ ﻨﻬﺎ ﻓ ﻲ ‪ Basic‬إذا أن أي ﺟ ﺰء ﻛﺴ ﺮي ﻳﻨ ﺘﺞ ﻋ ﻦ‬
‫اﻟﻘﺴ ﻤﺔ ﻳﻬﻤ ﻞ ﻣﻬﻤﻬ ﺎ ﻛ ﺎن ﻛﺒ ﻴﺮا ‪ ،‬ﻛﻤ ﺎ ﻓ ﻲ ﻟﻐﺘﻲ ﺑﺎﺳﻜﺎل وﻛﻮﺑﻮل ﻓﻤﺜﻼ ﻧﺎﺗﺞ اﻟﻘﺴﻤﺔ ‪8/3‬‬
‫ﻫﻮ ‪ 2‬ﻻ اﻟﻜﺴﺮ ‪ 0.666‬ﻳﻬﻤﻞ ‪ ،‬وﻳﻜﻮن ﻧﺎﺗﺞ اﻟﻘﺴﻤﺔ ﺑﺎﺳﺘﻌﻤﺎل اﻷداة ‪ /‬ﺻﺤﻴﺢ اﻟﻌﺪد‪.‬‬
‫وﻳﻤﻜﻨﻨﺎ اﻵن أن ﻧﻠﺨﺺ اﻷدوات اﻟﺤﺴﺎﺑﻴﺔ اﻟﻤﺴﺘﻌﻤﻠﺔ ﻓﻲ ﻟﻐﺔ ‪ C++‬ﻓﻴﻤﺎ ﻳﺄﺗﻲ‪-:‬‬

‫وﻇﻴﻔﺘﻬﺎ‬ ‫اﻷداة‬
‫ﻟﻠﻄﺮح أو ﻛﺄﺷﺎره ﺳﺎﻟﺒﺔ‬ ‫‪-‬‬
‫ﻟﻠﺠﻤﻊ‬ ‫‪+‬‬
‫ﻟﻠﻀﺮب‬ ‫*‬
‫ﻟﻠﻘﺴﻤﺔ‬ ‫‪/‬‬
‫ﻟﺒﺎﻗﻲ اﻟﻘﺴﻤﺔ اﻟﺼﺤﻴﺤﺔ‬ ‫‪%‬‬
‫ﻟﻠﻨﻘﺼﺎن‬ ‫‪--‬‬
‫ﻟﻠﺰﻳﺎدة‬ ‫‪++‬‬
‫اﻟﺠﺪول‪١-٣‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫وﻳﺨ ﺘﻠﻒ أداء ﺑﻌ ﺾ اﻷدوات اﻟﺤﺴ ﺎﺑﻴﺔ ﺣﺴ ﺐ ﻧ ﻮع اﻟﻤﻌﻄ ﻴﺎت اﻟﺼ ﺤﻴﺤﺔ ‪ ،‬أو اﻟﺤﻘﻴﻘﺔ ‪،‬‬
‫أو اﻟﺮﻣ ﺰﻳﺔ ﻓﻌ ﻨﺪ ﻣﻌﺎﻣﻠ ﺔ اﻟﻤﻌﻄ ﻴﺎت اﻟﺤﻘﻴﻘ ﻴﺔ ﻟ ﻸدوات اﻟﺤﺴ ﺎﺑﻴﺔ ‪ ،‬ﻳﻤﻜ ﻦ اﻟﻘ ﻮل أن‬
‫اﻟﻌﻠﻤ ﻴﺎت اﻷﺳﺎﺳ ﻴﺔ ﻣ ﻦ ﺟﻤ ﻊ وﻃ ﺮح وﺿ ﺮب ‪ ،‬ﺗﺠ ﺮي ﺑﺎﻟﻄ ﺮﻳﻘﺔ اﻟﺘ ﻲ ﻧﻌ ﺮﻓﻬﺎ ‪ ،‬إﻻ أن‬
‫ﻫ ﻨﺎك ﻣﺤ ﺬورا ﻳﺠ ﺐ أن ﻧﺬﻛ ﺮ ﺑ ﻪ ‪ ،‬وﻫ ﻮ أن ﺗ ﺘﻌﺪي ﻗ ﻴﻤﺔ اﻟﻨﺘ ﻴﺠﺔ ﻣ ﻦ أﻳﺔ ﻋﻤﻠﻴﺔ ﺣﺴﺎﺑﻴﺔ‬
‫اﻟﺤ ﺪود اﻟﻤﺮﺳ ﻮﻣﺔ ﻟ ﻨﻮع اﻟﻤﺘﻐ ﻴﺮ اﻟ ﻨﺎﺗﺞ ‪ ،‬ﻻن ﻟﻜ ﻞ ﻧ ﻮع ﻣ ﻦ أﻧ ﻮاع اﻟﻤﺘﻐ ﻴﺮات ﺣ ﺪودا ‪،‬‬
‫ﻳﻌ ﺪ ﺗﺠﺎوزﻫ ﺎ ﺧﻄ ﺄ ﻳﻨ ﺘﺞ ﻋ ﻨﻪ ﺧﻄ ﺄ ﻓ ﻲ اﻟﻨ ﺘﺎﺋﺞ ‪ ،‬وﻋ ﻨﺪ ﻣﻌﺎﻣﻠ ﺔ اﻟﻤﻌﻄ ﻴﺎت اﻟﺼ ﺤﻴﺤﺔ‬
‫ﺑ ﺎﻷدوات اﻟﺤﺴ ﺎﺑﻴﺔ ﺗﻌﻤ ﻞ اﻷدوات ﺑﺎﻟﻄ ﺮﻳﻘﺔ اﻟﺘ ﻲ ﻧ ﺘﻮﻗﻌﻬﺎ ‪ ،‬وﻋ ﻨﺪ ﺗﻌ ﺪي اﻟﺤ ﺪود‬
‫اﻟﻤﺴ ﻤﻮح ﺑﻬ ﺎ ﻓ ﻲ اﻟﻘ ﻴﻢ اﻟﺼ ﺤﻴﺤﺔ ‪ ،‬ﻓ ﺎن ﻫ ﺬا ﻳﻌﻨ ﻲ أن ﺧﻄ ﺄ ﻗ ﺪ وﻗﻊ ‪ ، overflow‬وﻓﻲ‬
‫ﻫﺬه اﻟﺤﺎﻟﺔ ﻟﻦ ﺗﺘﻠﻘﻰ ﻣﻦ اﻟﻤﺘﺮﺟﻢ أﻳﺔ رﺳﺎﻟﺔ ﺧﻄﺄ ‪ ،‬ﻓﻤﺜﻼ إذا ﻛﺎن ﻟﺪﻳﻨﺎ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ‪:‬‬

‫) (‪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++‬‬
‫ﻓﺘﺴﺘﻌﻤﻞ اﻷداة ‪ %‬ﻟﺘﻘﻮم ﺑﻬﺬا اﻟﻌﻤﻞ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻷدوات اﻷﺣﺎدﻳﺔ واﻟﺜﻨﺎﺋﻴﺔ ‪Unary and Binary‬‬
‫‪Operators‬‬
‫ﺗﻌ ﺪ ﺟﻤ ﻴﻊ أدوات اﻟﺠﻤ ﻊ واﻟﻄ ﺮح واﻟﻀ ﺮب واﻟﻘﺴ ﻤﺔ وﺑﺎﻗ ﻲ اﻟﻘﺴ ﻤﺔ أدوات ﺛﻨﺎﺋ ﻴﺔ‬
‫‪ binary‬أي أﻧﻬ ﺎ ﺗ ﺄﺧﺬ )ﺗ ﺘﻌﺎﻣﻞ ﻣ ﻊ ( ﻗﻴﻤﺘﻴ ﻦ وﺗﻨ ﺘﺞ ﻗﻴﻤﺔ واﺣﺪة ‪ ،‬ﻓﻤﺜﻼ ﻧﺘﻴﺠﺔ ‪ 2*3‬ﻫﻲ‬
‫اﻟﻘ ﻴﻤﺔ ‪ 6‬وﻫ ﻨﺎك اﻷداة اﻷﺣﺎدﻳ ﺔ – ﻋ ﻨﺪﻣﺎ ﺗ ﺘﻌﺎﻣﻞ ﻣ ﻊ ﻗ ﻴﻤﺔ واﺣ ﺪ ﻓﻤ ﺜﻼ )‪ (-1992‬ﺗﻤ ﺜﻞ‬
‫اﻹﺷ ﺎرة ا ﻟﺴ ﺎﻟﺒﻪ وﻫ ﻲ ﻫ ﻨﺎ أداة أﺣﺎدﻳ ﺔ ‪ ، Unary‬واﻟﻌﻤﻠ ﻴﺔ ﻫ ﻨﺎ ﻟﻴﺴ ﺖ ﻋﻤﻠ ﻴﺔ ﻃ ﺮح ﻛﻤﺎ‬
‫ﻧﻌﻠﻢ‪.‬‬

‫اﻟﺰﻳﺎدة واﻟﻨﻘﺼﺎن ‪Increment and Decrement‬‬


‫ﻣﻦ ﻣﺰاﻳﺎ ﻟﻐﺔ ‪ C++‬أﻧﻬﺎ ﺗﺴﺘﻌﻤﻞ اﻷداﺗﻴﻦ اﻟﺤﺴﺎﺑﻴﺘﻴﻦ ‪ + +‬و ‪ - -‬ﻟﺰﻳﺎدة اﻟﻘﻴﻢ ﺑﻤﻘﺪار ‪1‬‬
‫أو إﻧﻘﺎﺻﻬﺎ ﺑﻤﻘﺪار ‪ ، 1‬واﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻳﺒﻴﻦ ﻃﺮﻳﻘﺔ اﻻﺳﺘﻌﻤﺎل‪:‬‬
‫;‪A++‬‬

‫;‪++a‬‬

‫ﻣﻌﻨﺎه إﺿﺎﻓﺔ ﻗﻴﻤﺔ ‪ 1‬إﻟﻰ ‪ a‬وﻳﻤﻜﻦ ﻛﺘﺎﺑﺘﻬﺎ ﺑﺼﻮره ﻣﻜﺎﻓﺌﺔ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪-:‬‬
‫;‪A=a+1‬‬

‫وﺑﺎﻟﻄﺮﻳﻘﺔ ﻧﻔﺴﻬﺎ ﻳﻤﻜﻦ إﻧﻘﺎص ‪ 1‬ﻣﻦ ﻗﻴﻤﺔ ‪ a‬ﻋﻠﻰ اﻟﻨﺤﻮ‪-:‬‬

‫;‪--a‬‬

‫أو‬
‫;‪a--‬‬

‫;‪A=a-1‬‬
‫وﻫﻮ ﻳﻜﺎﻓﺊ اﻟﺼﻮرة‬

‫ﻟﻜ ﻦ ﻫ ﻨﺎك ﻓ ﺮﻗﺎ ﻓ ﻲ ﺳ ﺮﻋﺔ اﻟﺘﻨﻔ ﻴﺬ ‪ ،‬ﻓﺎﻟﺘﻌﺒ ﻴﺮ ;‪++a‬أﺳ ﺮع ﻣ ﻦ اﻟﺘﻌﺒ ﻴﺮ ;‪ a=a+1‬وﻫ ﺬه‬
‫ﻫﻲ اﻟﻔﺎﺋﺪة ﻣﻦ ﺟﺮاء اﺳﺘﺨﺪام ﻣﺜﻞ ﻫﺬه اﻷدوات ‪.‬‬
‫وﻣﻤ ﺎ ﻳﻨﺒﻐ ﻲ اﻟﺘﻨﺒ ﻴﻪ إﻟ ﻴﻪ ﻫ ﻨﺎ أن ﻫ ﻨﺎك ﻓ ﺮﻗﺎ ﺑﻴ ﻦ ‪ a++‬و ‪ ، ++a‬ﺻ ﺤﻴﺢ أن ﻛ ﻼ ﻣ ﻦ‬
‫اﻟﺘﻌﺒﻴﺮﻳ ﻦ ﻳﺠﻤ ﻊ ‪ 1‬إﻟ ﻰ ‪ ، a‬ﻟﻜ ﻦ ﻋ ﻨﺪ اﺳ ﺘﻌﻤﺎل ‪ ++a‬ﻓ ﻲ ﺗﻌﺒ ﻴﺮ ﻣ ﻦ اﻟﺘﻌﺎﺑ ﻴﺮ ‪ ،‬ﻓ ﺎن ‪a‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﺗ ﺰداد ﻗ ﺒﻞ اﺳ ﺘﺨﺮاج ﻗ ﻴﻤﺔ اﻟﺘﻌﺒ ﻴﺮ ‪ ،‬ﺑﻴ ﻨﻤﺎ ﻓ ﻲ ﺣﺎﻟ ﺔ ‪ a++‬ﺗﺴ ﺘﺨﺮج ﻗ ﻴﻤﺔ اﻟﺘﻌﺒ ﻴﺮ‬
‫ﺑﺎﺳ ﺘﻌﻤﺎل ﻗ ﻴﻤﺔ ‪ a‬اﻟﺤﺎﻟ ﻴﺔ ﻗ ﺒﻞ زﻳﺎدﺗﻬ ﺎ ﺑﻤﻘ ﺪار ‪ ، 1‬وﺑﻌ ﺪ ذﻟ ﻚ ﺗ ﺘﻢ زﻳ ﺎدة ‪ a‬ﺑﻤﻘ ﺪار ‪ 1‬آي‬
‫أن اﻟﻌﻤﻠ ﻴﺔ اﻷوﻟ ﻰ ﺟﻤ ﻊ ﺗﻘﺪﻳ ﻢ ‪ ،‬واﻟﺜﺎﻧ ﻴﺔ ﺟﻤ ﻊ ﺗﺄﺧ ﻴﺮ ‪ ،‬وﻳﻨﻄﺒﻖ ﻫﺬا اﻟﻜﻼم أﻳﻀﺎ ﻋﻠﻰ –‬
‫‪ 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‬‬

‫ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﺗﻜﻮن ‪x=1 , z=1 , y=1‬‬

‫ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﺗﻜﻮن ‪x=2 , y=2 , z=2‬‬


‫ﻻن ‪ ، x‬ﺗﺠﻤﻊ ﻗﻴﻤﺘﻲ ‪ z,y‬ﻗﺒﻞ أن ﺗﺰداد ﻛﻞ‬
‫ﻣﻨﻬﻤﺎ ﺑﻤﻘﺪار ‪1‬‬

‫اﻵن ‪x=3 , y=3 , z=3‬‬


‫ﻻن ‪ x‬ﺗﺠﻤﻊ ‪ y‬ﺑﻌﺪ زﻳﺎدﺗﻬﺎ وﺗﺠﻤﻊ آﺧﺮ ‪ z‬ﻗﺒﻞ أن‬
‫ﺗﺰداد ‪1‬‬

‫اﻵن ‪x=5 , y=2 , z=1‬‬

‫وﺑﺈﻣﻜﺎﻧﻚ ﻛﺘﺎﺑﺔ اﻟﺠﻤﻠﺘﻴﻦ‪:‬‬


‫‪Int x,y,z‬‬
‫‪X=y=z=0‬‬

‫ﻓﻲ ﺟﻤﻠﺔ واﺣﺪ ﻋﻠﻰ اﻟﻨﺤﻮ‪:‬‬


‫‪Int x=y=z=0‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻷدوات اﻟﻌﻼﻗﻴﺔ واﻟﻤﻨﻄﻘﻴﺔ ‪Relational and Logical‬‬
‫‪Operations‬‬
‫ﻳ ﺮﺟﻊ اﺳ ﻢ اﻷدوات اﻟﻌﻼﻗ ﻴﺔ إﻟ ﻰ اﻟﻌﻤﻠ ﻴﺎت اﻟﻤﺨﺘﺼ ﺔ ﺑﺎﻟﻘ ﻴﻢ اﻟﺘ ﻲ ﺑﻴ ﻨﻬﺎ ﻋﻼﻗ ﺎت وﻫ ﻮ‬
‫أﺟ ﺮاء ﻋﻤﻠ ﻴﺎت ﻣﻘﺎرﻧ ﺔ ﻣﻨﻄﻘ ﻴﺔ ﺑﻴ ﻦ ﻛﻤ ﻴﺎت ﺣﺴ ﺎﺑﻴﺔ أو رﻣ ﺰﻳﺔ ‪ ،‬وﺗﻜ ﻮن ﻧﺘﻴﺠﺘﻪ ﻣﻨﻄﻘﻴﺔ‬
‫وﻫ ﻲ أﻣ ﺎ ﻧﻌ ﻢ )‪ (true‬أو )‪ ، (false‬وﻳﻜ ﺜﺮ اﺳ ﺘﺨﺪام اﻟﺘﻌﺎﺑ ﻴﺮ اﻟﻤﻨﻄﻘ ﻴﺔ ﻓ ﻲ اﻟﺠﻤ ﻞ‬
‫اﻟﺸﺮﻃﻴﺔ ‪ ،‬واﻷﻣﺜﻠﺔ اﻵﺗﻴﺔ ﺗﺒﻴﻦ ﻟﻚ ﻣﺎ ﻫﻮ اﻟﺘﻌﺒﻴﺮ اﻟﻤﻨﻄﻘﻲ‪:‬‬

‫اﻟﺘﻌﺒﻴﺮ اﻟﻤﻨﻄﻘﻲ‪ x= =y :‬ﺟﻮاب أﻣﺎ ﻧﻌﻢ أو ﻻ ‪.‬‬


‫واﻟﺘﻌﺒﻴﺮ اﻟﻤﻨﻄﻘﻲ‪ matrix > 100.0 :‬ﺟﻮاب أﻣﺎ ﻧﻌﻢ أو ﻻ ‪.‬‬

‫وﻓ ﻲ ﻟﻐ ﺔ ‪ C++‬ﺗﻌ ﺎﻣﻞ اﻟﻨﺘ ﻴﺠﺔ ﻻ )‪ (false‬ﻋﻠ ﻰ أﻧﻬ ﺎ ﺻ ﻔﺮ )‪ (0‬وﺗ ﺄﺧﺬ اﻟﻨﺘ ﻴﺠﺔ ﻧﻌ ﻢ‬
‫)‪ (true‬أﻳﺔ ﻗﻴﻤﺔ ﻏﻴﺮ اﻟﺼﻔﺮ واﻟﻤﺸﻬﻮر أﻧﻬﺎ )‪. (1‬‬
‫وﻳﺒﻴﻦ ﻟﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ اﻷدوات اﻟﻌﻼﻗﻴﺔ واﻟﻤﻨﻄﻘﻴﺔ‪:‬‬

‫اﻷدوات اﻟﻌﻼﻗﻴﺔ‬
‫ﻣﻌﻨﺎﻫﺎ‬ ‫اﻷداة‬
‫اﻛﺒﺮ ﻣﻦ‬ ‫>‬
‫اﺻﻐﺮ ﻣﻦ‬ ‫<‬
‫اﻛﺒﺮ ﻣﻦ أو ﻳﺴﺎوي‬ ‫=>‬
‫اﺻﻐﺮ ﻣﻦ أو ﻳﺴﺎوي‬ ‫=<‬
‫ﻳﺴﺎوي‬ ‫==‬
‫ﻻ ﻳﺴﺎوي‬ ‫=!‬
‫اﻟﺠﺪول‪١-٥‬‬
‫اﻷدوات اﻟﻤﻨﻄﻘﻴﺔ‬
‫ﻣﻌﻨﺎﻫﺎ‬ ‫اﻷداة‬
‫‪) And‬ﺣﺮف اﻟﻌﻄﻒ واو(‬ ‫&&‬
‫‪ ) Or‬ﺣﺮف اﻟﻌﻄﻒ أو (‬ ‫||‬
‫‪) Not‬ﻟﻠﻨﻔﻲ( أداة أﺣﺎدﻳﺔ ‪unary‬‬ ‫!‬
‫اﻟﺠﺪول‪١-٦‬‬

‫إﻟﻴﻚ اﻵن ﻫﺬه اﻷﻣﺜﻠﺔ ‪ :‬اﻓﺮض أن ;‪int a=b=3‬‬


‫ﻓﺎن اﻟﺘﻌﺒﻴﺮ ‪ a < 3‬ﻧﺘﻴﺠﺘﻪ ‪ false‬أي ‪0‬‬
‫‪ a<=3‬ﻧﺘﻴﺠﺘﻪ ‪ true‬أي ‪1‬‬ ‫اﻟﺘﻌﺒﻴﺮ‬
‫‪ a>b‬ﻧﺘﻴﺠﺘﻪ ‪ false‬أي ‪0‬‬ ‫اﻟﺘﻌﺒﻴﺮ‬
‫‪ a!=b‬ﻧﺘﻴﺠﺘﻪ ‪ false‬أي ‪0‬‬ ‫اﻟﺘﻌﺒﻴﺮ‬
‫‪ a= = b‬ﻧﺘﻴﺠﺘﻪ ‪ true‬أي ‪1‬‬ ‫اﻟﺘﻌﺒﻴﺮ‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻷدوات اﻟﺪﻗﻴﻘﺔ ‪Bowties Operators‬‬
‫ﺗﺘﻤ ﻴﺰ ﻟﻐ ﺔ ‪ C++‬ﻋ ﻦ ﺳ ﺎﺋﺮ اﻟﻠﻐ ﺎت اﻟﺮاﻗ ﻴﺔ ﻣ ﺜﻞ ﻓ ﻴﺠﻮال ﺑﻴﺴ ﻚ وﺑﺎﺳ ﻜﺎل أﻧﻬ ﺎ ﺗﺴ ﺘﺨﺪم‬
‫أدوات دﻗ ﻴﻘﺔ ﻋﻠ ﻰ ﻣﺴ ﺘﻮى وﺣ ﺪة اﻟﺘﺨﺰﻳ ﻦ اﻷوﻟ ﻴﺔ ]‪ [Bit‬واﻟﻤﺨﺘﺼ ﺮة ﻣ ﻦ ‪Binary‬‬
‫*‪Digit‬‬

‫ﺳ ﻤﻴﺖ ﻫ ﺬه اﻷدوات ﺑﺎﻟﺪﻗ ﻴﻘﺔ أو أدوات )اﻟﺒ ﺖ( ﻷﻧﻬ ﺎ ﺗ ﺘﻌﺎﻣﻞ ﻣﻊ ]‪ ) [bit‬وﺣﺪة اﻟﺘﺨﺰﻳﻦ‬
‫اﻷوﻟ ﻴﺔ( ﻣﺒﺎﺷ ﺮة ‪ ،‬ﻓﺤﺼ ﺎ ‪ ،‬وﺿ ﺒﻄﺎ ‪ ،‬وإزاﺣ ﺔ ‪ ،‬وﺗﺴ ﺘﻌﻤﻞ ﻫ ﺬه اﻷدوات ﻣﻊ اﻟﻤﻌﻄﻴﺎت‬
‫اﻟﺼﺤﻴﺤﺔ ‪ int‬واﻟﺮﻣﺰﻳﺔ ‪ char‬ﻓﻘﻂ ‪ ،‬وﻻ ﺗﺴﺘﻌﻤﻞ ﻣﻊ ﻏﻴﺮﻫﺎ ﻣﻦ أﻧﻮاع اﻟﻤﻌﻄﻴﺎت‪..‬‬

‫واﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻳﺒﻴﻦ اﻷدوات اﻟﺪﻗﻴﻘﺔ ووﻇﻴﻔﺔ ﻛﻞ ﻣﻨﻬﺎ‪:‬‬


‫ﻋﻤﻠﻬﺎ‬ ‫اﻷداة‬
‫)‪ (not‬آداه أﺣﺎدﻳﺔ‬ ‫~‬
‫)‪ (and‬ﺣﺮف اﻟﻮاو )و(‬ ‫&‬
‫)‪ (or‬ﺣﺮف اﻟﻌﻄﻒ )و(‬ ‫|‬
‫إزاﺣﺔ إﻟﻰ اﻟﻴﺴﺎر‬ ‫>>‬
‫إزاﺣﺔ إﻟﻰ اﻟﻴﻤﻴﻦ‬ ‫<<‬
‫)‪) (xor‬أو( اﻻﺳﺘﺜﻨﺎﺋﻴﺔ‬ ‫^‬
‫اﻟﺠﺪول‪١-٨‬‬
‫وﻛﻐﻴﺮﻫﺎ ﻣﻦ اﻷدوات ‪ ،‬ﻓﺎن اﻷدوات اﻟﺪﻗﻴﻘﺔ ﺗﺘﺒﻊ ﻗﻮاﻋﺪ اﻷوﻟﻴﺔ وﺣﺴﺐ اﻟﺘﺮﺗﻴﺐ‬
‫اﻟﺘﺎﻟﻲ‪:‬‬
‫أوﻟﻮﻳﺘﻬﺎ‬ ‫اﻷداة‬
‫اﻷوﻟﻰ‬ ‫~‬
‫اﻟﺜﺎﻧﻴﺔ‬ ‫<<أو>>‬
‫اﻟﺜﺎﻟﺜﺔ‬ ‫&‬
‫اﻟﺮاﺑﻌﺔ‬ ‫^‬
‫اﻟﺨﺎﻣﺴﺔ‬ ‫|‬
‫اﻟﺠﺪول‪١-٩‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫أداة اﻟﻨﻔﻲ )~(‬
‫ﺗﻌﻤ ﻞ ﻫ ﺬه اﻷداة ﻋﻠ ﻰ إﺑ ﺪال اﻟﺼ ﻔﺮ )‪ (0‬ﺑﻮاﺣ ﺪ)‪ (1‬أو اﻟﻌﻜ ﺲ ‪ ،‬وﻣﻌ ﻨﻰ ﻫ ﺬا أﻧﻬﺎ ﺗﻀﻊ‬
‫‪ 0‬ﻣﻜ ﺎن ‪ 1‬وﻛﺬﻟ ﻚ ‪ 1‬ﻣﻜ ﺎن ‪ ، 0‬ﻓﻤ ﺜﻼ ﻟ ﻮ ﻛ ﺎن ﻟﺪﻳ ﻨﺎ ﻗ ﻴﻤﺔ ‪ x‬ﻣﻤ ﺜﻠﺔ ﻓ ﻲ اﻟ ﻨﻈﺎم اﻟﻌ ﺪدي‬
‫اﻟﺜﻨﺎﺋﻲ اﻟﺘﺎﻟﻲ )ﻣﻦ ‪ 8‬ﺑﺖ (‪-:‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫ﻗﻴﻤﺔ ‪x‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫ﻗﻴﻤﺔ‪~x‬‬

‫وﻣﻌ ﻨﻰ ~ اﻟﻨﻔ ﻲ )‪ (not‬وﻣﻌ ﻨﻰ اﻟﻨﻔ ﻲ ﻫ ﻨﺎ اﻟﺘﻀﺎد ﺑﻴﻦ ‪ 0‬و ‪ 1‬ﻓﻲ اﻟﻨﻈﺎم اﻟﻌﺪدي اﻟﺜﻨﺎﺋﻲ‬
‫‪ ،‬ﻓﻌ ﻨﺪﻣﺎ ﺗ ﻨﻔﻰ ‪ 0‬ﺗﺜﺒ ﺖ ﺑ ﺪﻻ ﻣ ﻨﻪ ‪ 1‬واﻟﻌﻜ ﺲ ﺻ ﺤﻴﺢ ‪ ،‬وﻫ ﺬا ﻳﻮﺿ ﺤﻪ ﻟﻚ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ‬
‫إذ ﺗﻢ )ﻧﻔﻲ( ﻗﻴﻤﺔ ‪ x‬ﺑﺎﻟﺒﺖ ﻟﻴﺼﺒﺢ ‪ ~x‬ﻓﻲ ﺟﻤﻴﻊ ﻣﻜﻮﻧﺎت ﻣﻦ اﻟﺒﺖ‪.‬‬

‫‪PDF created with pdfFactory Pro 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‬وﻳﺠﻤﻊ ‪ 0+1‬ﻟﻴﻌﻄﻲ ‪ 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 pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com‬‬


‫أدوات اﻹزاﺣﺔ >> و <<‬
‫ﻗ ﺪ ﺗ ﺒﺪو أدوات اﻹزاﺣ ﺔ ﻏﺮﻳ ﺒﺔ ﻋﻠﻰ اﻟﻤﺒﺮﻣﺞ اﻟﺬي ﻳﺴﺘﺨﺪم ﻟﻐﺎت أﺧﺮى ﻣﺜﻞ ‪ Basic‬و‬
‫‪ .. Pascal‬اﻟ ـﺦ ‪ .‬ﺣﻴ ﺚ ﻳﻨ ﺘﺞ ﻋ ﻦ اﺳ ﺘﻌﻤﺎل إﺣﺪاﻫﻤ ﺎ إزاﺣ ﺔ ﻗ ﻴﻤﺔ اﻟﻤﺘﻐ ﻴﺮ اﻟﺼ ﺤﻴﺢ‬
‫ﺑﺎﻟ ﻨﻈﺎم اﻟﺜﻨﺎﺋ ﻲ )ﺑﺎﻟﺒ ﺖ( ﻳﻤﻴ ﻨﺎ أو ﻳﺴ ﺎرا ﻋ ﺪدا ﻣ ﻦ اﻟﺨﺎﻧ ﺎت ﺣﺴ ﺐ اﻟﻄﻠ ﺐ ‪ ،‬وﺗﻤ ﻼ‬
‫اﻟﺨﺎﻧﺎت اﻟﻤﻔﺮﻏﺔ ﻣﻦ اﻟﺠﻬﺔ اﻟﻤﻮﺟﺒﺔ أﺻﻔﺎرا ‪ ،‬وﻣﻦ اﻟﺠﻬﺔ اﻟﺴﺎﻟﺒﺔ ﺗﻤﻼ آﺣﺎدا‪.‬‬

‫واﻷﻣﺜﻠﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻮﺿﺢ ﻃﺮﻳﻘﺔ اﻻﺳﺘﻌﻤﺎل‪.‬‬


‫ﻣﺜﺎل‪:‬‬
‫اﻟﺠﻤﻠ ﺔ ;‪ x>>2‬ﻋ ﻨﺪ ﺗﻨﻔ ﻴﺬﻫﺎ ﻋﻠ ﻰ ﻗ ﻴﻤﺔ ‪ ) x‬وﻫ ﻲ ‪ 23‬ﺑﺎﻟﻨﻈﺎم اﻟﻌﺸﺮي( ﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ‬
‫ﻓﺎن اﻟﻌﻤﻠﻴﺔ ﺗﺘﻢ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪x‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫;‪x>>2‬‬

‫اﻟﻨﺘﻴﺠﺔ ﻣﻦ اﻹزاﺣﺔ ﺑﻤﻘﺪار ﺧﺎﻧﺘﻴﻦ )‪ ٢‬ﺑﺖ ( ﻟﻠﻴﻤﻴﻦ ﺗﺼﺒﺢ ﻗﻴﻤﺘﻬﺎ ‪:‬‬


‫‪ 5‬ﺑﺎﻟﻨﻈﺎم اﻟﻌﺸﺮي‪.‬‬
‫وﻫﺬا ﻳﻌﻨﻲ أن ;‪ 23>>2‬ﺗﻌﻄﻲ اﻟﻨﺘﻴﺠﺔ ‪. 5‬‬
‫ﺣﻴﺚ ‪ 23‬اﻟﻘﻴﻤﺔ اﻟﻤﺰاﺣﺔ‪.‬‬
‫‪ 2‬ﻋﺪد ﺧﺎﻧﺎت اﻹزاﺣﺔ اﻟﻤﻄﻠﻮﺑﺔ ﻟﻠﻴﻤﻴﻦ‪.‬‬
‫ﻻﺣﻆ أن اﻟﺨﺎﻧﺘﻴﻦ اﻟﻤﻔﺮﻏﺘﻴﻦ ﺑﺴﺒﺐ اﻹزاﺣﺔ ﻟﻠﻴﻤﻴﻦ ﻗﺪ ﻣﻠﺌﺘﺎ ﺑﻤﺼﻔﺮﻳﻦ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل ﻋﻠﻰ إزاﺣﺔ ﻗﻴﻤﺔ ﺳﺎﻟﺒﺔ‪:‬‬
‫;‪Z = - 50<<2‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪Z‬‬

‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪Z<<3‬‬

‫إزاﺣﺔ )‪٢‬ﺑﺖ( ﻟﻠﻴﺴﺎر‪.‬‬


‫اﻟﺠﺪﻳ ﺪ ﻓ ﻲ ﻫ ﺬا اﻟﻤ ﺜﺎل أن اﻹزاﺣ ﺔ ﻟﻘ ﻴﻤﺔ ﺳ ﺎﻟﺒﺔ ﻳﻨ ﺘﺞ ﻋ ﻦ ﻛ ﻞ ﺧﺎﻧ ﺔ ﻣﻔ ﺮﻏﺔ اﻟﻘ ﻴﻤﺔ ‪1‬‬
‫وﻟﻴﺲ ‪ 0‬ﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫أدوات أﺧﺮى ﻟﻢ ﺗﺬﻛﺮ ‪Other Operations‬‬
‫اﻷداة اﻟﺸﺮﻃﻴﺔ ‪the conditional operator‬‬
‫وﻫ ﺬه اﻷداة ﺗﺘﻤ ﻴﺰ ﺑﻬ ﺎ ﻟﻐ ﺔ ‪ c++‬ﻋ ﻦ ﻏ ﻴﺮﻫﺎ ‪ ،‬إذ ﺗﺤ ﻞ ﻣﺤﻞ ﺟﻤﻠﺔ ﺷﺮﻃﻴﺔ ﻣﺸﻬﻮرة ﻓﻲ‬
‫ﺑﻴﺴ ﻚ وﻓﻮرﺗ ﺮان وﺑﺎﺳ ﻜﺎل وﻫ ﻲ ‪ ، if-then-else‬وﺗﻌﺘ ﺒﺮ ﻫ ﺬه اﻷداة أداة ﺛﻼﺛ ﻴﺔ ﻷﻧﻬ ﺎ‬
‫ﺗﺘﻌﺎﻣﻞ ﻣﻊ ﺛﻼث ﻛﻤﻴﺎت ﺣﺴﺐ ﺻﻴﻐﺘﻬﺎ اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫‪Expression1 ? Expression2: Expression3‬‬

‫ﻓﻠﻮ ﻛﺎن ﻟﺪﻳﻨﺎ اﻟﺠﻤﻠﺔ اﻟﺸﺮﻃﻴﺔ اﻟﺘﺎﻟﻴﺔ ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل‪:‬‬


‫)‪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 pdfFactory Pro trial version www.pdffactory.com‬‬


‫أداة اﻟﻌﻨﻮﻧﺔ )&( و )*( ‪the & and * Pointer‬‬
‫‪Operator‬‬
‫اﻟﻤﺆﺷ ﺮ ‪ Pointer‬ﻫ ﻮ ﻋ ﻨﻮان اﻟﻤﺘﻐ ﻴﺮ اﻟﻤﺆﺷ ﺮ ﻓ ﻲ اﻟﺬاﻛ ﺮة ‪ ،‬وﻟﻠﻤﺘﻐ ﻴﺮ اﻟﻤﺆﺷ ﺮ ﻓﻮاﺋ ﺪ‬
‫ﺟﻤ ﺔ ﻓ ﻲ ﻋﻤﻠ ﻴﺔ اﻟ ﺒﺮﻣﺠﺔ ﻧﺬﻛ ﺮﻫﺎ ﻋ ﻨﺪ اﻟ ﺘﻌﺮض ﻟﻬ ﺎ ﻓ ﻲ اﻟﻔﺼ ﻮل اﻟﻘﺎدﻣ ﺔ ﺑ ﺈذن اﷲ ‪،‬‬
‫وﻳﻜ ﺜﺮ اﺳ ﺘﻌﻤﺎل ﻫﺎﺗﻴ ﻦ اﻟﺪاﻟﺘﻴ ﻦ ﻣ ﻊ اﻟﻤﺘﻐ ﻴﺮات اﻟﻤﺆﺷ ﺮة اﻟﻤﺤﺠ ﻮزة ﻟﻬ ﺎ ﻓ ﻲ أﻣﺎﻛ ﻦ‬
‫ﺧﺎﺻﺔ ﻓﻲ اﻟﺬاﻛﺮة ‪.‬‬
‫وﺗﻌ ﺪ اﻷداة & ﻫ ﻨﺎ أداة أﺣﺎدﻳ ﺔ ﺗ ﺘﻌﺎﻣﻞ ﻣ ﻊ ﻛﻤﻴﺔ واﺣﺪة ﻓﻘﻂ ‪ ،‬ﺣﻴﺚ ﺗﻘﻮم ﺑﺈﻋﻄﺎء ﻋﻨﻮان‬
‫اﻟﻄﺮف اﻷﻳﻤﻦ ﻟﻠﻤﻌﺎدﻟﺔ ‪ ،‬ﻟﻠﻄﺮف اﻷﻳﺴﺮ ﻣﻨﻬﺎ ‪ ،‬ﻓﻤﺜﻼ اﻟﻌﻤﻠﻴﺔ‪:‬‬
‫;‪X=&y‬‬

‫ﺗﻌﻄ ﻲ ﻋ ﻨﻮان ‪ 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‬دﻗ ﻴﻘﺔ ‪ ،‬وﻟ ﺬا ﻻ ﻳﻠﺘ ﺒﺲ ﻋﻠ ﻴﻚ اﻷﻣ ﺮ ﺑﻴ ﻦ اﻻﺳ ﺘﻌﻤﺎﻟﻴﻦ‬
‫اﻟﻤﺨﺘﻠﻔﻴﻦ‪.‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻔﺎﺻﻠﺔ )‪ (,‬ﻛﺄداة ‪The Comma Operator‬‬
‫وﻫ ﻲ أداة اﺳ ﺘﺜﻨﺎﺋﻴﺔ )‪ (binary‬وﺗﺤ ﺘﻞ اﻷوﻟﻮﻳ ﺔ اﻷﺧ ﻴﺮة ﻓ ﻲ ﺳﻠﻢ اﻷداة اﻟﻤﺨﺘﻠﻔﺔ وﺗﺄﺧﺬ‬
‫اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫‪Experssion1, Experssion2‬‬
‫ﻓﻌﻨﺪﻣﺎ ﺗﻔﺼﻞ ﻓﺎﺻﻠﺔ ﺑﻴﻦ ﺗﻌﺒﻴﺮﻳﻦ ﻓﺎن ﺗﺴﻠﺴﻞ اﻟﻌﻤﻠﻴﺎت ﻳﺄﺧﺬ اﻟﺘﺮﺗﻴﺐ اﻟﺘﺎﻟﻲ‪:‬‬
‫‪ -١‬ﺗﺴﺘﺨﺮج ﻗﻴﻤﺔ اﻟﺘﻌﺒﻴﺮ اﻷول ) ﻋﻠﻲ ﻳﺴﺎر اﻟﻔﺎﺻﻠﺔ ( ﺛﻢ ﺗﻌﻄﻰ ﻟﻠﺘﻌﺒﻴﺮ اﻟﺜﺎﻧﻲ‪.‬‬
‫‪ -٢‬ﺗﺴ ﺘﺨﺮج ﻗ ﻴﻤﺔ اﻟﺘﻌﺒ ﻴﺮ اﻟﺜﺎﻧ ﻲ ) ﻋﻠ ﻲ ﻳﻤﻴ ﻦ اﻟﻔﺎﺻ ﻠﺔ ( ﻛﻘ ﻴﻤﺔ ﻧﻬﺎﺋ ﻴﺔ ﻟﻠﺘﻌﺒ ﻴﺮ ﻛﻠ ﻪ‬
‫ﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ‪:‬‬
‫;)‪A=(b=2,b+1‬‬

‫ﺣﻴ ﺚ ﻳﻌﻄ ﻰ اﻟﻤﺘﻐ ﻴﺮ ‪ 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‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﺜﻮاﺑﺖ اﻟﺮﻣﺰﻳﺔ ذات اﻟﺸﺮﻃﺔ اﻟﻤﻌﻜﻮﺳﺔ‬
‫ﺣﻴ ﺚ أﻧ ﻨﺎ ﻻ ﻧﺴ ﺘﻄﻴﻊ اﺳ ﺘﻌﻤﺎل ﺑﻌ ﺾ اﻟ ﺮﻣﻮز اﻟﻤﻮﺟ ﻮدة ﻓ ﻲ ﻟﻮﺣ ﺔ ﻣﻔﺎﺗ ﻴﺢ اﻟﺤﺎﺳ ﺐ‬
‫ﻛﺜﻮاﺑ ﺖ رﻣ ﺰﻳﺔ ‪ ،‬ﻓﻘ ﺪ اﺳ ﺘﺤﺪث ﻟﻐ ﺔ ‪ c++‬ﺷ ﻔﺮات رﻣ ﺰﻳﺔ ﺧﺎﺻ ﺔ ﺗﺴ ﺘﻌﻤﻞ ﺷ ﺮﻃﺔ‬
‫ﻣﻌﻜﻮﺳﺔ ﻟﻬﺎ ‪ ،‬وﻫﺬه اﻟﺸﻔﺮات ﻣﺪوﻧﺔ ﻓﻲ اﻟﺠﺪول اﻟﺘﺎﻟﻲ‪:‬‬

‫اﻟﻘﻴﻤﺔ اﻟﺼﺤﻴﺤﺔ ﻟﻬﺎ‬ ‫ﻣﻌﻨﺎﻫﺎ‬ ‫اﻟﺸﻔﺮة‬


‫‪8‬‬ ‫رﺟﻮع ﺑﻤﻘﺪار ﺧﺎﻧﺔ واﺣﺪة‬ ‫"‪"\b‬‬
‫‪13‬‬ ‫ﺳﻄﺮ ﺟﺪﻳﺪ‬ ‫"‪"\n‬‬
‫‪9‬‬ ‫ﺗﺮﺗﻴﺐ أﻓﻘﻲ‬ ‫"‪"\t‬‬
‫‪0‬‬ ‫ﻟﻠﻘﻴﻤﺔ اﻟﺨﺎﻟﻴﺔ‬ ‫"‪"\0‬‬
‫‪13‬‬ ‫ﻋﻼﻣﺔ رﺟﻮع‬ ‫"‪"\r‬‬
‫‪11‬‬ ‫ﺗﺮﺗﻴﺐ ﻋﻤﻮدي‬ ‫"‪"\v‬‬
‫‪92‬‬ ‫اﻟﺸﺮﻃﺔ اﻟﻤﻌﻜﻮﺳﺔ \‬ ‫"\\"‬
‫‪12‬‬ ‫ﺗﻘﺪﻳﻢ ﺻﻔﺤﺔ‬ ‫"‪"/f‬‬
‫اﻟﺠﺪول‪١-١٠‬‬
‫وﻟﺒﻴﺎن أﻫﻤﻴﺔ ﻫﺬه اﻟﺸﻔﺮات ‪ ،‬ﺧﺬ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ‪:‬‬
‫"‪"first line\n second line‬‬
‫ﻟ ﻮ ﻃ ﺒﻊ ﻫ ﺬا اﻟ ﻨﺺ )اﻟﺜﺎﺑ ﺖ اﻟﺮﻣ ﺰي( ﻓﺎﻧ ﻪ ﺳ ﻴﻈﻬﺮ ﻓ ﻲ ﺳ ﻄﺮﻳﻦ ﻣﺘﺘﺎﻟﻴ ﻦ ﻋﻠ ﻰ اﻟ ﻨﺤﻮ‬
‫اﻟﺘﺎﻟﻲ‪:‬‬
‫‪First line‬‬
‫‪Second line‬‬

‫وﻣ ﻦ اﻟﺠﺪﻳ ﺮ ﺑﺎﻟﺬﻛ ﺮ ‪ ،‬أن أﻫ ﻢ ﺗﻄﺒ ﻴﻘﺎت اﻟﻤﻌﻄ ﻴﺎت اﻟﺮﻣ ﺰﻳﺔ واﺳ ﺘﻌﻤﺎﻻﺗﻬﺎ ‪ ،‬ﻫ ﻮ ﻣﻌﺎﻟﺠ ﺔ‬
‫اﻟﻨﺼ ﻮص ‪ ،‬وﻣ ﺎ ﻳﺴ ﺘﺤﻖ اﻟﺘﺴ ﺠﻴﻞ واﻻﻫ ﺘﻤﺎم ‪ ،‬اﻧ ﻪ ﻳﻤﻜ ﻦ إﺟ ﺮاء ﻋﻤﻠ ﻴﺎت ﻋﻠ ﻰ‬
‫اﻟﻤﻌﻄﻴﺎت اﻟﺮﻣﺰﻳﺔ‪.‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﺗﺸﻐﻴﻞ ‪visual c++6.0‬‬
‫‪Run visual c++6.0‬‬

‫ﻟﺘﺸﻐﻴﻞ ﺑﺮﻧﺎﻣﺞ ﻓﻴﺠﻮال ﺳﻲ ‪ ++‬ﻧﺘﺒﻊ اﻟﺘﺎﻟﻲ‪:‬‬


‫أﺑﺪا‪ Ù‬اﻟﺒﺮاﻣﺞ‪visualc++6.0 Ù‬‬
‫ﺛﻢ ﺑﻌﺪ ذﻟﻚ ﺳﺘﻈﻬﺮ ﻟﻨﺎ اﻟﺸﺎﺷﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬

‫ﻧﺨﺘﺎر اﻟﻘﺎﺋﻤﺔ ‪ file‬ﻣﻦ ﻫﻨﺎ‬

‫ﻧﺨ ﺘﺎر ﻣ ﻦ ﻫ ﺬه اﻟﺸﺎﺷ ﺔ ﻛﻤ ﺎ ﻫ ﻮ واﺿ ﺢ اﻟﻘﺎﺋﻤ ﺔ ‪ File‬ﺛ ﻢ ﺑﻌ ﺪ ذﻟ ﻚ ﻧﺨ ﺘﺎر ﻣ ﻦ اﻟﻘﺎﺋﻤ ﺔ‬


‫‪ New‬ﻟﺘﻈﻬﺮ ﻟﻨﺎ اﻟﺸﺎﺷﺔ اﻟﺘﺎﻟﻴﺔ‪..‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻧﻄﺒﻖ ﻣﺎ ﻳﻮﺟﺪ ﺑﺎﻟﺼﻮرة ﺑﺎﻷﺳﻔﻞ ﺛﻢ ﻧﺨﺘﺎر ﻣﻮاﻓﻖ‪..‬‬

‫ﻧﺨﺘﺎر ﻫﻨﺎ‬
‫اﻟﺘﺴﻤﻴﺔ اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺸﺮوع‬

‫ﺛﻢ ﻧﻨﻘﺮ ‪ok‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻧﺨﺘﺎر اﻟﺘﻄﺒﻴﻖ اﻟﻤﻮﺟﻮد ﺑﺎﻷﺳﻔﻞ ﺛﻢ ﻧﺨﺘﺎر إﻧﻬﺎء ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﺑﺎﻷﺳﻔﻞ‪..‬‬

‫ﻧﺨﺘﺎر ﻫﺬا اﻟﺘﻄﺒﻴﻖ‬

‫ﺛﻢ ﻧﻨﻘﺮ ‪finish‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻵن ﺳﺘﻈﻬﺮ ﻟﻨﺎ ﺷﺎﺷﺔ اﻟﻜﻮد وﻧﻼﺣﻆ ﺑﺎﻷﺳﻔﻞ اﻟﺸﺎﺷﺔ‪..‬‬

‫ﺑﻌ ﺪ ذﻟ ﻚ ﻧﺨ ﺘﺎر ﻣ ﻦ اﻟﻘﺎﺋﻤ ﺔ ‪ Build‬ﺛ ﻢ ﻧﺨ ﺘﺎر ‪ Execute .exe‬ﻟﻴﻄ ﺒﻖ ﻟ ﻨﺎ اﻟﻤﺸ ﺮوع ‪..‬‬
‫أو ﺑﺎﻟﻨﻘﺮ ﻣﻦ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ ﻋﻠﻰ اﻟﺰر ‪. F5‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻃﺒﻌﺎ ﺑﻌﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺳﺘﻈﻬﺮ ﻟﻨﺎ اﻟﻨﺘﺎﺋﺞ ﻛﻤﺎ ﻓﻲ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬

‫ﻃ ﺒﻌﺎ أﻋﺰاﺋ ﻲ ﻫ ﺬا اﻟ ﺒﺮﻧﺎﻣﺞ اﻟﺼ ﻐﻴﺮ ﻫ ﻮ ﺑ ﺮﻧﺎﻣﺞ ﺗﻼﺣﻈ ﻮن أن اﻟﻜ ﻮد ﺗ ﺒﻌﻪ ﺧ ﺎص ﺑﻠﻐﺔ‬
‫‪ C‬اﻻم وﻟ ﻴﺲ ‪ c++‬ﻟﻜ ﻦ ﻣ ﺎ ﻧﻌﻤ ﻞ ﻋﻠ ﻴﻪ ﻫ ﻮ ﻣ ﺘﺮﺟﻢ ﻳﻘ ﺒﻞ اﻟﻠﻐﺘﻴ ﻦ ﻣﻌ ﺎ واﻟﻤ ﺘﺮﺟﻢ ﻫ ﻮ‬
‫‪ ، Visual C++‬وﻧﻼﺣ ﻆ اﻧ ﻪ ﺗ ﻢ ﻃ ﺒﺎﻋﺔ ﻋ ﺒﺎرة !‪ Hello World‬وﻫ ﻲ ﻧﺘ ﻴﺠﺔ ﺗﻨﻔ ﻴﺬ‬
‫اﻟﺪاﻟﺔ )(‪ printf‬اﻟﻤﻮﺟﻮدة ﻓﻲ ﺳﻄﻮر اﻟﺒﺮﻧﺎﻣﺞ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫أﺳﺎﻟﻴﺐ اﻹدﺧﺎل واﻹﺧﺮاج‬
‫‪Input/output Techniques‬‬

‫ﻣﻘﺪﻣﺔ ‪introduction‬‬
‫ﻳﺘ ﻨﺎول ﻫ ﺬا اﻟﺠ ﺰء أﺳ ﺎﻟﻴﺐ إدﺧ ﺎل اﻟﻘ ﻴﻢ اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﺮﻣ ﺰﻳﺔ ‪ ،‬وأﺳ ﺎﻟﻴﺐ إﺧ ﺮاج وﻃﺒﺎﻋﺔ‬
‫ﻧ ﺘﺎﺋﺞ اﻟ ﺒﺮاﻣﺞ واﻟﺘﻌﺎﺑ ﻴﺮ اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﺮﻣ ﺰﻳﺔ ‪ ،‬وﻃ ﺒﺎﻋﺔ اﻟﻤﻌﻄ ﻴﺎت اﻟﻤﺨ ﺘﻠﻔﺔ ﺣﺴ ﺐ‬
‫اﻟﺤﺎﺟﺔ‪.‬‬
‫ﻟﻘ ﺪ ﺗﻌﻮدﻧ ﺎ ﻓ ﻲ ﻟﻐ ﺔ ﺑﻴﺴ ﻚ ‪ ،‬أن ﻧﺴ ﺘﻌﻤﻞ دوال ﻣﺒﻨ ﻴﺔ وﺟﺎﻫ ﺰة ﻋﻨﺪ اﻟﻄﻠﺐ ﻟﻠﻘﻴﺎم ﺑﺎﻹدﺧﺎل‬
‫ﻣ ﺜﻞ )‪ input‬أو ‪ (read‬أو ﺑﺎﻹﺧ ﺮاج ﻣ ﺜﻞ )‪ ، (print‬وﻓ ﻲ ﻫ ﺬا اﻟﺼ ﺪد ‪ ،‬ﻓ ﺎن ﻟﻐ ﺔ‬
‫‪ ، C++‬ﺗ ﺘﻌﺎﻣﻞ ﻣ ﻊ اﻹدﺧ ﺎل واﻹﺧ ﺮاج ‪ ،‬ﺑﻄ ﺮﻳﻘﺔ ﻣﺨ ﺘﻠﻔﺔ‪ ،‬ﺣﻴ ﺚ ﺗﻮﻓ ﺮ اﻟﻠﻐ ﺔ ‪ ،‬ﻋ ﺪدا‬
‫ﻛﺒ ﻴﺮا ﻣ ﻦ دوال اﻹﺧ ﺮاج واﻹدﺧ ﺎل ‪ ،‬ﺣﻴ ﺚ ﻳﻤﻜﻦ ﻟﻠﻤﺒﺮﻣﺞ أن ﻳﺴﺘﺪﻋﻴﻬﺎ ‪ ،‬وﻳﺴﺘﻔﻴﺪ ﻣﻨﻬﺎ‬
‫‪ ،‬ﺣﺴ ﺐ ﻧ ﻮع اﻟﻤﻌﻄ ﻴﺎت واﻟﻤﺘﻐ ﻴﺮات ‪ ،‬ﻛ ﻴﻔﻤﺎ ﻳﻨﺎﺳﺒﻪ ‪ ،‬وﺳﻮف ﻧﻮرد أن ﺷﺎء اﷲ ﻓﻲ ﻫﺬا‬
‫اﻟﻔﺼﻞ أﻫﻢ ﻫﺬه اﻟﺪوال واﺷﻬﺮﻫﺎ ﻟـ ‪. C++‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻹدﺧﺎل واﻹﺧﺮاج ‪input\output‬‬
‫ﺗﻮﻓ ﺮ ﻟﻐ ﺔ ‪ ، C++‬ﻣﺠﻤﻮﻋ ﺔ ﻣ ﻦ اﻟ ﺪوال واﻟﺮوﺗﻴﻨ ﻴﺎت اﻟﻤﻌ ﺮﻓﺔ ﺿ ﻤﻦ ‪ Iostream‬ﻣ ﺜﻞ‬
‫‪ cout‬ﻟﻺﺧﺮاج و ‪ cin‬ﻟﻺدﺧﺎل وﺳﻮف ﻧﻌﺮف اﻟﻤﻠﻒ ‪iostream.h‬‬

‫اﻟﻤﻠﻒ ‪ Iostream.h‬ﻳﻌﻨﻲ‪:‬‬
‫‪ : io‬ﻣﺨﺘﺼﺮ ﻟـ ‪ input/output‬آي اﻹدﺧﺎل واﻹﺧﺮاج‪.‬‬
‫‪ : Stream‬ﻣﻜﺘﺒﺔ ﻗﻴﺎﺳﻴﺔ ﺧﺎﺻﺔ ﺑﺎﻹﺧﺮاج واﻹدﺧﺎل اﻟــﺦ‪..‬‬
‫‪ header file : H‬آي اﻟﻤﻠﻒ اﻟﺪﻟﻴﻞ‪.‬‬

‫ﻣﺜﺎل‪:١‬‬
‫إذا أردت ﻃﺒﺎﻋﺔ اﻟﻌﺪد ‪ 100‬ﻓﻲ ﻟﻐﺔ ﺑﻴﺴﻚ ﻓﺎﻟﺠﻤﻠﺔ‪:‬‬
‫‪Print 100‬‬
‫ﺗﺆدي ﻋﻤﻠﻴﺔ اﻟﻄﺒﺎﻋﺔ ‪ ،‬أﻣﺎ ﻓﻲ ﻟﻐﺔ ‪ C++‬ﻓﺎن اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻌﻤﻞ ذﻟﻚ‪:‬‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬
‫{‬
‫;‪cout<<100‬‬
‫;‪return0‬‬
‫}‬

‫ﺗ ﺆدي إﻟ ﻰ ﻃ ﺒﺎﻋﺔ اﻟﻌ ﺪد ‪ 100‬ﺣﻴ ﺚ ‪ cout‬اﺳ ﻢ وﺣ ﺪة اﻹﺧ ﺮاج اﻟﻘﻴﺎﺳ ﻲ واﻷداة<<‬


‫ﺗ ﺆدي إﻟ ﻰ إرﺳ ﺎل اﻟﻌ ﺪد ‪ 100‬إﻟ ﻰ وﺣ ﺪة اﻹﺧ ﺮاج ‪ ،‬أن ﻫ ﺬا اﻷﺳ ﻠﻮب اﻟﺠﺪﻳ ﺪ ﻓ ﻲ‬
‫اﻹﺧﺮاج ﻳﺨﺘﻠﻒ ﻋﻤﺎ ﻓﻲ ﻟﻐﺔ ‪. c‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro 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‬‬
‫;‪return0‬‬
‫}‬

‫ﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺗﺮى اﻟﻄﺒﺎﻋﺔ اﻟﺘﺎﻟﻴﺔ ﻋﻠﻰ اﻟﺸﺎﺷﺔ‪:‬‬


‫اﻟﺴﻄﺮ اﻷول‪matrixmatrix Ù‬‬
‫اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ‪matrix Ù‬‬
‫اﻟﺴﻄﺮ اﻟﺜﺎﻟﺚ‪ Ù‬ﺳﻄﺮ ﻓﺎرغ‬
‫اﻟﺴﻄﺮ اﻟﺮاﺑﻊ‪matrix Ù‬‬
‫اﻟﺴﻄﺮ اﻟﺨﺎﻣﺲ‪Ù‬ﺳﻄﺮ ﻓﺎرغ‬
‫اﻟﺴﻄﺮ اﻟﺴﺎدس‪Ù‬ﺳﻄﺮ ﻓﺎرغ‬

‫ﻧﻼﺣﻆ ﻓﻲ ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ‪:‬‬


‫‪ -١‬اﻧ ﻪ ﻳ ﺘﻢ اﻻﻧ ﺘﻘﺎل ﻣ ﻦ اﻟﺴ ﻄﺮ اﻷول ﺑﻌ ﺪ ﻃ ﺒﺎﻋﺔ ‪ matrix‬إﻟ ﻰ اﻟﺴ ﻄﺮ اﻟﺜﺎﻧ ﻲ ﻟﻌ ﺪم‬
‫وﺟ ﻮد إﻳﻌ ﺎز اﻻﻧ ﺘﻘﺎل ‪ ، \n‬وﻟ ﺬا ﻓ ﺎن ﺟﻤﻠ ﺔ اﻟﻄﺎﺑﻌ ﺔ اﻟﺘﺎﻟ ﻴﺔ ﻇﻬ ﺮت ﻧ ﺘﺎﺋﺠﻬﺎ ﻓ ﻲ ا‬
‫ﻟﺴ ﻄﺮ اﻷول ﻧﻔﺴ ﻪ ‪ ،‬ﻣﺘﺼ ﻠﺔ ﺑﻄﺎﻋ ﺔ ‪ matrix‬اﻷوﻟ ﻰ ‪ ،‬وﻳﻨ ﺘﻘﻞ اﻟﻤﺆﺷ ﺮ اﻟﻀ ﻮﺋﻲ‬
‫إﻟﻰ ﺳﻄﺮ ﺟﺪﻳﺪ ﻟﻮﺟﻮد إﻳﻌﺎز ‪. \n‬‬
‫‪ -٢‬ﻳ ﺘﻢ ﺗﻨﻔ ﻴﺬ ﺟﻤﻠ ﺔ اﻟﻄ ﺒﺎﻋﺔ اﻟﺜﺎﻟ ﺜﺔ ﻓ ﻲ اﻟﺴ ﻄﺮ اﻟﺠﺪﻳ ﺪ )اﻟﺜﺎﻧ ﻲ( ‪ ،‬وﻳ ﺘﻢ اﻻﻧ ﺘﻘﺎل إﻟ ﻰ‬
‫اﻟﺴ ﻄﺮ اﻟ ﺮاﺑﻊ ﻗﻔ ﺰا ﻋ ﻦ اﻟﺴ ﻄﺮ اﻟﺜﺎﻟ ﺚ ‪ ،‬وذﻟ ﻚ ﻟﻮﺟﻮد اﻹﻳﻌﺎز ‪ \n\n‬ﺣﻴﺚ ﻳﻘﻮم ﻛﻞ‬
‫إﻳﻌ ﺎز ‪ \n‬ﺑ ﻨﻘﻞ اﻟﻤﺆﺷ ﺮ اﻟﻀ ﻮﺋﻲ ﺳ ﻄﺮا واﺣ ﺪا ‪ ،‬وﻓ ﻲ اﻟﺴ ﻄﺮ اﻟ ﺮاﺑﻊ ﺗﻄ ﺒﻊ ﺟﻤﻠ ﺔ‬
‫اﻟﻄ ﺒﺎﻋﺔ اﻟ ﺮاﺑﻌﺔ ‪ ،‬وﻳ ﺘﻢ ﺑﻌﺪﻫ ﺎ اﻻﻧ ﺘﻘﺎل إﻟ ﻰ اﻟﺴ ﻄﺮ اﻟﺴ ﺎﺑﻊ ﻓ ﻮرا ﺣﺴ ﺐ اﻹﻳﻌ ﺎز‬
‫‪. \n\n\n‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻃﺒﺎﻋﺔ اﻟﻘﻴﻢ اﻟﻌﺪدﻳﺔ‬
‫ﻣﺜﺎل‪:٤‬‬
‫ﻳﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﺑﻄﺎﻋﺔ اﻟﻌﺪد ‪ 446‬ﻛﻘﻴﻤﺔ ﺻﺤﻴﺤﺔ ﻋﻠﻰ ﺷﺎﺷﺔ اﻟﺤﺎﺳﻮب‪:‬‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬
‫{‬
‫;‪cout<<446‬‬
‫;‪return0‬‬
‫}‬

‫ﻋﻨﺪ اﻟﻄﺒﺎﻋﺔ ﻳﻈﻬﺮ ﻟﻨﺎ اﻟﺘﺎﻟﻲ‪:‬‬


‫‪446‬‬

‫ﻣﺜﺎل‪:٥‬‬
‫ﺑﺮﻧﺎﻣﺞ ‪ ، C++‬اﻟﺘﺎﻟﻲ ﻳﻄﺒﻊ اﻟﻘﻴﻤﺔ اﻟﺤﻘﻴﻘﺔ ‪:10.5‬‬

‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬
‫{‬
‫;‪cout<<10.5‬‬
‫;‪return0‬‬
‫}‬

‫ﻋﻨﺪ اﻟﻄﺒﺎﻋﺔ ﻳﻈﻬﺮ اﻟﺘﺎﻟﻲ‪:‬‬


‫‪10.5‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com


‫ﻣﺜﺎل‪:٨‬‬
‫إذا ﺗﻄﻠ ﺐ اﻷﻣ ﺮ ﻃ ﺒﺎﻋﺔ اﻟﻤﺘﻐﻴﺮﻳ ﻦ ‪ a‬اﻟﺼ ﺤﻴﺢ ‪ ،‬و ‪ x‬اﻟﺤﻘﻴﻘ ﻲ اﻟﻮاردﻳ ﻦ ﻓ ﻲ اﻟﻤﺜﺎﻟﻴ ﻦ‬
‫اﻟﺴﺎﺑﻘﻴﻦ ‪ ،‬ﻓﻲ ﺑﺮﻧﺎﻣﺞ واﺣﺪ ‪ ،‬ﻓﺎﻟﺒﺮﻧﺎﻣﺞ ﺳﻴﻜﻮن ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬

‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬
‫{‬
‫;‪int=100‬‬
‫‪float x=4.25‬‬
‫;‪cout<<a<<x‬‬
‫;‪return0‬‬
‫}‬

‫وﺳﺘﻈﻬﺮ ﻧﺘﺎﺋﺞ ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻛﻤﺎ ﻃﻠﺒﻨﺎ )اﻟﺼﺤﻴﺢ ﻳﺴﺒﻖ اﻟﺤﻘﻴﻘﻲ( ‪ ،‬ﻫﻜﺬا‪:‬‬
‫‪100‬‬ ‫‪4.25‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻃـﺒﺎﻋﺔ اﻟﻘـﻴﻢ اﻟﻌﺪدﻳـﺔ واﻟﺮﻣﺰﻳﺔ )اﻟﻨﺼﻮص( ﻓﻲ ﺟﻤﻠﺔ‬
‫واﺣﺪة‬
‫ﻣﺜﺎل‪:٩‬‬
‫ﺳﻮف ﻧﻘﻮم ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﺑﻄﺒﺎﻋﺔ ﻗﻴﻢ ﻋﺪدﻳﺔ وﻧﺼﻴﺔ ﻣﻊ اﻟﺒﻌﺾ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬
‫{‬
‫;‪int a=100‬‬
‫;‪cout<<“a=”<<a‬‬
‫;‪return0‬‬
‫}‬

‫ﻋﻨﺪ اﻟﻄﺒﺎﻋﺔ ﻳﻜﻮن اﻟﻨﺎﺗﺞ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬


‫‪A=100‬‬

‫ﻣﺜﺎل‪:١٠‬‬
‫ﻣﺎذا إذا أردﻧﺎ ﻃﺒﺎﻋﺔ ﻋﺪد ﺻﺤﻴﺢ وﺣﻘﻴﻘﻲ ﻣﻊ ﻧﺼﻮص ﺑﻨﻔﺲ اﻟﻮﻗﺖ‪:‬‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬
‫{‬
‫;‪int=100‬‬
‫‪float x=4.25‬‬
‫;‪cout<<“a=”<<a<<“x=”<<x‬‬
‫;‪return0‬‬
‫}‬

‫وﻋﻨﺪ اﻟﻄﺒﺎﻋﺔ ﺳﻴﻈﻬﺮ ﻟﻨﺎ اﻟﺘﺎﻟﻲ‪:‬‬


‫‪A=100 x=4.25‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro 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‬‬
‫;‪return0‬‬
‫}‬

‫ﻧﻼﺣ ﻆ ﻓ ﻲ ﻫ ﺬا اﻟﻤ ﺜﺎل أﻧ ﻨﺎ ﻗﻤ ﻨﺎ ﺑ ﺘﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ ‪ a‬ﺑﺄﻧﻪ ﻋﺪد ﺻﺤﻴﺢ ﺑﻌﺪ ذﻟﻚ ﻋﻨﺪ ﺗﻨﻔﻴﺬ‬
‫اﻟ ﺒﺮﻧﺎﻣﺞ ﺳ ﻴﻄﻠﺐ ﻣ ﻨﺎ إدﺧ ﺎل ﻋ ﺪد ﺳ ﻨﺪﺧﻞ اﻟﻌ ﺪد ‪ 10‬ﻣ ﺜﻼ ﻋ ﻨﺪ ذﻟ ﻚ ﺳ ﻴﻜﻮن اﻟ ﻨﺎﺗﺞ‬
‫ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬
‫‪10‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل‪:١٣‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻹدﺧﺎل ﻋﻤﺮك ﺛﻢ ﻃﺒﺎﻋﺘﻪ ‪ ،‬وﻃﺒﺎﻋﻪ ﻧﺼﻒ وﺿﻌﻔﻪ؟‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬
‫{‬
‫;‪int a‬‬
‫;‪cin>>a‬‬
‫;‪cout<<a‬‬
‫;‪cout<<a/2‬‬
‫;‪cout<<a*2‬‬
‫;‪return0‬‬
‫}‬

‫ﻓﻲ اﻟﻤﺜﺎل أﻋﻼه ﻗﻤﻨﺎ أوﻻ ﺑﺘﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬


‫;‪Int a‬‬
‫ﺛﻢ ﺑﻌﺪ ذﻟﻚ ﻃﻠﺐ ﻣﻨﺎ إدﺧﺎل اﻟﻌﻤﺮ‪:‬‬
‫ﻋﻨﺪ اﻟﻄﻠﺐ ﺳﻨﺪﺧﻞ ﻣﺜﻼ ‪20‬‬
‫‪Cin>>a‬‬
‫وﺑﻌﺪﻫﺎ ﻗﻤﻨﺎ ﺑﻄﺒﺎﻋﺔ اﻟﻌﻤﺮ‪:‬‬
‫;‪Cout<<a‬‬
‫ﺛﻢ ﻗﻤﻨﺎ ﺣﺴﺐ اﻟﻤﻄﻠﻮب ﺑﻄﺒﺎﻋﺔ ﻧﺼﻒ اﻟﻌﻤﺮ‪:‬‬
‫;‪Cout<<a/2‬‬
‫ﺛﻢ ﻗﻤﻨﺎ ﺣﺴﺐ اﻟﻤﻄﻠﻮب اﻷﺧﻴﺮ ﺑﻄﺒﺎﻋﺔ ﺿﻌﻒ اﻟﻌﻤﺮ‪:‬‬
‫;‪Cout<<a*2‬‬

‫ﻟﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ اﻟﻨﻬﺎﺋﻴﺔ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬


‫‪20 10 40‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل‪:١٤‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻹدﺧﺎل ﻋﺪد ﻣﺎ وﻟﻴﻜﻦ اﻟﻌﺪد ‪ 7‬وﻣﻦ ﺛﻢ ﻃﺒﺎﻋﺔ ﺟﺪول اﻟﻀﺮب ﻟﻪ؟‬

‫”‪#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‬‬
‫}‬

‫ﻋﻨﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺳﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬


‫‪7 14 21 28 35 42 49 56 63 70‬‬

‫ﻣﺜﺎل‪:١٥‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹدﺧﺎل ﺛﻼث ﻋﻼﻣﺎت ﻟﻄﺎﻟﺐ ‪ 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‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com


‫ﺟﻤﻞ اﻟﺘﺤﻜﻢ واﻟﺸﺮط واﻟﺘﻜﺮار‬
‫‪ProgramControl,Conditional&Loop Statements‬‬

‫ﻣﻘﺪﻣﺔ ‪introduction‬‬
‫ﻗ ﺪ ﻧﺤ ﺘﺎج أن ﻧﻨ ﺘﻘﻞ ﻣ ﻦ ﺳ ﻄﺮ إﻟ ﻰ آﺧ ﺮ ﻓ ﻲ ﺑ ﺮﻧﺎﻣﺞ ‪ ، C++‬وﻗ ﺪ ﻧﺤﺘﺎج أن ﻧﻘﻮم ﺑﺘﻨﻔﻴﺬ‬
‫ﺑﻌ ﺾ اﻟﺠﻤ ﻞ ﻋ ﻨﺪ ﺗﺤﻘ ﻖ ﺑﻌ ﺾ اﻟﺸ ﺮوط ‪ ،‬وﻗ ﺪ ﻧﺤ ﺘﺎج أن ﻧﻜ ﺮر ﻋﻤﻠ ﻴﺔ ﻣ ﻦ ﻋﻤﻠ ﻴﺎت‬
‫اﻹدﺧ ﺎل أو اﻹﺧ ﺮاج أو اﻟﺤﺴ ﺎب ﻋ ﺪدا ﻣ ﻦ اﻟﻤ ﺮات ‪ ،‬وﻗ ﺪ ﻧﺤ ﺘﺎج أن ﻧﺒﻨ ﻲ ﺷ ﺒﻜﺔ ﻣ ﻦ‬
‫ﺗﻮزﻳ ﻊ اﻷواﻣ ﺮ ﻋﻠ ﻰ ﻋ ﺪد ﻣ ﻦ ﺳ ﻄﻮر اﻟ ﺒﺮﻧﺎﻣﺞ ‪ ،‬ﺣﺴ ﺐ ﻣﻘﺘﻀ ﻴﺎت ﺑﻌ ﺾ اﻷﺣ ﻮال ‪،‬‬
‫وﺣﺴ ﺒﻤﺎ ﺗﻘﺘﻀ ﻴﻪ ﻃﺒ ﻴﻌﺔ اﻟﻤﺴ ﺄﻟﺔ ‪ ،‬ﻓ ﻲ ﻫ ﺬه اﻟﺤ ﺎﻻت‪ :‬ﻧﺤ ﺘﺎج أن ﻧ ﺘﻌﻠﻢ أﺳ ﺎﻟﻴﺐ اﻟﺸﺮط ‪،‬‬
‫وأﺳ ﺎﻟﻴﺐ اﻟ ﺘﻜﺮار ‪ ،‬وﻛﻴﻔ ﻴﺔ اﻟ ﺘﺤﻜﻢ ﻓ ﻲ ﻣﺴ ﺎر اﻟ ﺒﺮﻧﺎﻣﺞ ‪ ،‬وﺗﻌ ﺪ أﺳ ﺎﻟﻴﺐ اﻟﺸ ﺮط واﻟﺘﺤﻜﻢ‬
‫واﻟﺘﻜﺮار ﺑﻤﺜﺎﺑﺔ اﻟﻘﻠﺐ ﻓﻲ ﺟﺴﻢ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ‪ ،‬وﺑﺪوﻧﻬﺎ ﻻ ﻳﻤﻜﻦ ﺗﻨﻈﻴﻢ آي ﺑﺮﻧﺎﻣﺞ‪.‬‬
‫وﺗﻮﻓ ﺮ ﻟﻐ ﺔ ‪ C++‬ﻟﻠﻤ ﺒﺮﻣﺞ ﻋ ﺪدا ﻣ ﻦ اﻷﺳ ﺎﻟﻴﺐ واﻟ ﺪوال اﻟﻔﻌﺎﻟ ﺔ ‪ ،‬اﻟﻤ ﺘﻌﻠﻘﺔ ﺑﻬﺬا اﻟﺸﺄن ‪،‬‬
‫وﺗﻤ ﺘﺎز ﻫ ﺬه اﻷﺳ ﺎﻟﻴﺐ ﺑﺄﻧﻬ ﺎ أﺳ ﺎﻟﻴﺐ ﺑﻨﺎﺋ ﻴﺔ أو ﺑﻨ ﻴﻮﻳﺔ ‪ structured‬آي ﻳﻤﻜ ﻦ ﺗﻨﻈ ﻴﻢ‬
‫ﻋﻤﻠ ﻴﺎت اﻟ ﺘﺤﻜﻢ واﻟ ﺘﻜﺮار ﻓ ﻴﻬﺎ ‪ ،‬ﺑﺄﺳ ﻠﻮب ذاﺗ ﻲ ﻣ ﻦ ﺑﺪاﻳ ﺔ اﻟﻌﻤﻠ ﻴﺎت وﺣ ﺘﻰ ﻧﻬﺎﻳ ﺘﻬﺎ دون‬
‫ﺗﺪﺧ ﻞ ﻣ ﻦ اﻟﻤ ﺒﺮﻣﺞ أﺛ ﻨﺎء ﻫ ﺬه ا ﻟﻌﻤﻠ ﻴﺎت ‪ ،‬ﻟﻸﺷ ﺮاف ﻋﻠ ﻰ اﻟﺘﻮﺟ ﻴﻪ واﻟﺘﺨﻄ ﻴﻂ ﻟﻜ ﻞ‬
‫ﺧﻄ ﻮه ﻣ ﻦ ﺧﻄ ﻮات اﻟ ﺒﺮﻧﺎﻣﺞ ‪ ،‬وﻳﻌ ﺮف ﺑﻌ ﺾ اﻟﺨ ﺒﺮاء واﻟﻤﺨﺘﺼﻴﻦ اﻟﺒﺮﻣﺠﺔ اﻟﺒﻨﻴﻮﻳﺔ‪:‬‬
‫أﻧﻬ ﺎ اﻟ ﺒﺮﻣﺠﺔ اﻟﺘ ﻲ ﻻ ﺗﺴ ﺘﻌﻤﻞ ﺟﻤﻠ ﺔ اﻻﻧﺘﻘﺎل ‪ ، GOTO‬ﻟﺘﻮﺟﻴﻪ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﻛﻞ ﺧﻄﻮة‬
‫‪ ،‬وﻣ ﻊ ذﻟ ﻚ ﻓ ﺎن ﻟﻐ ﺔ ‪ ، C++‬ﺗﻮﻓ ﺮ ﺟﻤﻠ ﺔ اﻻﻧ ﺘﻘﺎل ﻫ ﺬه ‪ ،‬ﻟﻜ ﻨﻬﺎ ﻻ ﺗﺴ ﺘﻌﻤﻞ إﻻ‬
‫ﻟﻠﻀﺮورة‪.‬‬
‫وﺣﻴ ﺚ أن ﺟ ﻮاب اﻟﺸ ﺮط أﻣ ﺎ أن ﻳﻜ ﻮن ﺻ ﻮاﺑﺎ ‪ true‬أو زاﺋﻔ ﺎ ‪ false‬ﻓ ﺎن ﻟﻐ ﺔ ‪، C++‬‬
‫ﺗﻌﻄ ﻲ اﻟﺤﺎﻟ ﺔ اﻟﺼ ﺎﺋﺒﺔ ﻗ ﻴﻤﺔ ﻋﺪدﻳ ﺔ ﺗﺨ ﺘﻠﻒ ﻋ ﻦ اﻟﺼ ﻔﺮ ‪ ،‬وﺗﻌﻄ ﻲ ﻗ ﻴﻤﺔ ﺻ ﻔﺮ ﻟﻠﺤﺎﻟ ﺔ‬
‫اﻟ ﺰاﺋﻔﺔ ) ﻋ ﻨﺪ ﻋ ﺪم ﺗﺤﻘ ﻖ اﻟﺸ ﺮط أو اﻟﺸ ﺮوط ( وﻟ ﺬا ﻓﺎن ﻟﻐﺔ ‪ C++‬ﺗﻮﻓﺮ ﻣﺮوﻧﺔ ﻛﺒﻴﺮة‬
‫ﻓﻲ اﺳﺘﺨﺪام ﻋﺪد ﻛﺒﻴﺮ ﻣﻦ اﻟﺪوال ‪ ،‬وﻓﻲ ﺗﻮﺟﻴﻪ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺮﻳﻘﺔ ﻓﻌﺎﻟﺔ وﻓﺎﺋﻘﺔ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﺠﻤﻞ اﻟﺸﺮﻃﻴﺔ‬
‫ﺗﺘﻌﺎﻣﻞ ﻟﻐﺔ ‪ C++‬ﻣﻊ ﺛﻼﺛﺔ أﻧﻮاع ﻣﻦ ﺟﻤﻞ اﻟﺸﺮط وﻫﻲ‪:‬‬
‫‪ -١‬ﺟﻤﻠﺔ إذا اﻟﺸﺮﻃﻴﺔ وأﺧﻮاﺗﻬﺎ ‪if statements‬‬
‫‪ -٢‬ﺟﻤﻠﺔ اﻟﺘﻮزﻳﻊ ‪switch statement‬‬
‫‪ -٣‬ﺟﻤﻠﺔ أداة اﻟﺸﺮط ?‬

‫ﺟﻤﻠﺔ اﻟﺸﺮط إذا وأﺧﻮاﺗﻬﺎ ‪if statements‬‬


‫‪ -‬ﺟﻤﻠﺔ اﻟﺸﺮط إذا وأﺧﻮاﺗﻬﺎ ‪if statements‬‬
‫ﺗﺄﺧﺬ ﻫﺬه اﻟﺠﻤﻠﺔ اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ‪:‬‬
‫;‪If (condition) statement1‬‬
‫ﺗﻘ ﻮم ﺟﻤﻠ ﺔ إذا اﻟﺸ ﺮﻃﻴﺔ ﻫ ﻨﺎ ‪ ،‬ﺑ ﻨﻘﻞ ﺗﺴﻠﺴ ﻞ ﺗﻨﻔ ﻴﺬ اﻟ ﺒﺮﻧﺎﻣﺞ إﻟ ﻰ اﻟﺠﻤﻠ ﺔ )أو ﺳﻠﺴ ﻠﺔ‬
‫اﻟﺠﻤﻠ ﺔ( ‪ statement1‬ﻋ ﻨﺪﻣﺎ ﻳ ﺘﺤﻘﻖ اﻟﺸ ﺮط )أو اﻟﺸ ﺮوط( ‪ condition‬وﺗﻜ ﻮن‬
‫ﻧﺘﻴﺠ ﺘﻪ ‪ ، true‬وإذا ﻟ ﻢ ﻳ ﺘﺤﻘﻖ اﻟﺸ ﺮط ‪ ،‬أي ﺗﻜ ﻮن اﻟﻨﺘ ﻴﺠﺔ ‪ ، false‬ﻓ ﺎن اﻟﺘﻨﻔ ﻴﺬ ﻳﻨ ﺘﻘﻞ‬
‫ﻓ ﻮرا إﻟ ﻰ اﻟﺠﻤﻠ ﺔ ) أو ﺳﻠﺴ ﻠﺔ اﻟﺠﻤ ﻞ( ‪ statment2‬وﻳﻌ ﺪ اﺳ ﺘﻌﻤﺎل ‪ else‬ﻓ ﻲ ‪C++‬‬
‫اﺧﺘ ﻴﺎرﻳﺎ ‪ ،‬أي ﻳﻤﻜ ﻦ ﺣﺬﻓﻬ ﺎ دون أن ﺗ ﺘﺄﺛﺮ اﻟﺠﻤﻠ ﺔ اﻟﺸ ﺮﻃﻴﺔ ﺗﺮﻛﻴ ﺒﺎ واداء وﻳﻜ ﻮن ﺷ ﻜﻠﻬﺎ‬
‫اﻟﻌﺎم ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‪:‬‬
‫;‪If (condition) statement1‬‬
‫;‪Else statment2‬‬

‫وﻓ ﻲ ﻫ ﺬه اﻟﺤﺎﻟ ﺔ ﺳ ﺘﻨﻔﺬ اﻟﺠﻤﻠ ﺔ ‪ statement1‬أن ﺗﺤﻘ ﻖ اﻟﺸ ﺮط ‪ condition‬وإﻻ ﻓ ﺎن‬


‫اﻟﺘﻨﻔﻴﺬ ﻳﻨﺘﻘﻞ إﻟﻰ ﺳﻄﺮ ‪ C++‬اﻟﺘﺎﻟﻲ ﻟﺠﻤﻠﺔ ‪. if‬‬

‫اﻟﺼﻴﻐﺔ اﻷوﻟﻰ‬

‫وﺗﺄﺧﺬ اﻟﺒﻨﻴﺔ اﻟﻌﺎﻣﻠﺔ ‪If (condition) statement1‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل‪:١‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﺑﻠﻐﺔ ‪ C++‬ﻹﻇﻬﺎر اﻟﻌﺒﺎرة ‪ x is positive‬ﻋﻠﻰ ﺷﺎﺷﺔ اﻟﻌﺮض؟‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬
‫{‬
‫;‪int x=5‬‬
‫)‪if (x>0‬‬
‫;”‪cout<<x<<“ Saudi‬‬
‫;‪return0‬‬
‫}‬

‫ﻓ ﻲ ﻫ ﺬا اﻟﻤ ﺜﺎل ﺳ ﺘﻈﻬﺮ اﻟﺠﻤﻠ ﺔ ‪ Saudi‬ﻋﻠ ﻰ اﻟﺸﺎﺷ ﺔ ﻻن اﻟﺸ ﺮط )‪ (x>0‬ﻣ ﺘﺤﻘﻖ‬


‫ﻓﺎﻟﺨﻤﺴﺔ ﺑﺎﻟﻄﺒﻊ اﻛﺒﺮ ﻣﻦ اﻟﻌﺪد ﺻﻔﺮ ﻓﺎﻟﻨﺘﻴﺠﺔ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬
‫‪Saudi‬‬

‫ﻣﺜﺎل‪:٢‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ‪ 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‬‬
‫}‬

‫ﻓﻲ اﻟﻤﺜﺎل أﻋﻼه ﺳﻮف ﻧﺪﺧﻞ اﻟﺮﻗﻢ ‪ 10‬ﻟﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ ‪:‬‬


‫‪10‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل‪:٣‬‬
‫ﻗ ﻢ ﺑﺈﻧﺸ ﺎء ﺑ ﺮﻧﺎﻣﺞ ﻹدﺧ ﺎل ﻋﻼﻣ ﺔ ﻃﺎﻟﺐ ﻓﺈذا ﻛﺎﻧﺖ اﻟﻌﻼﻣﺔ اﻛﺒﺮ أو ﺗﺴﺎوي ‪ 90‬ﻓﺎﻟﺘﻘﺪﻳﺮ‬
‫)‪ (A‬أﻣ ﺎ إذا ﻛﺎﻧ ﺖ اﻛ ﺒﺮ أو ﺗﺴ ﺎوي ‪ 80‬ﻓﺎﻟ ﺘﻘﺪﻳﺮ )‪ ( B‬أﻣ ﺎ إذا ﻛﺎﻧ ﺖ اﻛ ﺒﺮ أو ﺗﺴ ﺎوي‬
‫‪ 70‬ﻓﺎﻟ ﺘﻘﺪﻳﺮ )‪ (C‬أﻣ ﺎ إذا ﻛﺎﻧ ﺖ اﻛ ﺒﺮ أو ﺗﺴ ﺎوي ‪ 60‬ﻓﺎﻟ ﺘﻘﺪﻳﺮ )‪( D‬أﻣ ﺎ إذا ﻛﺎﻧ ﺖ اﻛ ﺒﺮ‬
‫أو ﺗﺴﺎوي ‪ 50‬ﻓﺎﻟﺘﻘﺪﻳﺮ )‪ ( E‬ﻣﺎ ﻋﺪا ذﻟﻚ ﻓﺎﻟﺘﻘﺪﻳﺮ)‪(F‬؟‬

‫”‪#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‬‬
‫}‬

‫ﻓ ﻲ اﻟﻤ ﺜﺎل أﻋ ﻼه ﻗﻤ ﻨﺎ ﺑ ﺘﻌﺮﻳﻒ اﻟﻤﺘﻐ ﻴﺮ ‪ mark‬ﺑﺄﻧ ﻪ ﻋ ﺪد ﺻ ﺤﻴﺢ ﺛ ﻢ ﻗﻤ ﻨﺎ ﺑﻌ ﺪ ذﻟ ﻚ‬


‫ﺑﺘﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ ‪ grade‬ﺑﺄﻧﻪ ﻗﻴﻤﺔ ﻧﺼﻴﻪ وﻫﻮ اﻟﺘﻘﺪﻳﺮ‪.‬‬
‫ﻃﺒﻌﺎ ﻗﻤﻨﺎ ﺑﺈدﺧﺎل اﻟﺪرﺟﺔ وﻫﻲ ‪ 85‬ﺳﻮف ﺗﻜﻮن اﻟﻌﻼﻣﺔ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬
‫‪B‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﺼﻴﻐﺔ اﻟﺜﺎﻧﻴﺔ‬
:‫( اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ‬if..else)‫ وإﻻ‬.... ‫وﺗﺄﺧﺬ اﻟﺒﻨﻴﺔ اﻟﻌﺎﻣﻠﺔ ﻟﺠﻤﻠﺔ إذا‬

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; ‫ﻟﻄﺒﺎﻋﺔ اﻟﺘﻘﺪﻳﺮ‬
}

PDF created with pdfFactory Pro trial version www.pdffactory.com


‫ﻣﺜﺎل‪:٥‬‬
‫اﻛﺘ ﺐ ﺑ ﺮﻧﺎﻣﺠﺎ ﻹدﺧ ﺎل ﻃﻮﻟ ﻚ وﻃ ﻮل زﻣ ﻴﻠﻚ ‪ ،‬وإذا ﻛ ﺎن ﻃﻮﻟ ﻚ اﻛ ﺒﺮ ﻣ ﻦ ﻃﻮل زﻣﻴﻠﻚ‬
‫اﻃﺒﻊ ﻃﻮﻟﻚ ‪ ،‬واﺣﺴﺐ ﻣﻌﺪل اﻷﻃﻮال ‪ ،‬ﺛﻢ اﻃﺒﻌﻪ وأﻻ‬
‫اﻃﺒﻊ ﻃﻮل زﻣﻴﻠﻚ ‪ ،‬واﻃﺒﻊ ﺿﻌﻒ اﻟﻄﻮل وﻧﺼﻒ اﻟﻄﻮل؟‬
‫اﻟﺤـﻞ‪/‬‬
‫ﺳﻨﺮﻣﺰ ﻟﻄﻮﻟﻚ ‪ t1‬وﺳﻨﺮﻣﺰ ﻟﻄﻮل زﻣﻴﻠﻚ ‪t2‬‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬
‫{‬
‫أدﺧﻞ اﻷﻃﻮال‬
‫;‪int t1,t2‬‬
‫;‪cin>>t1>>t2‬‬
‫)‪if (t1>t2‬‬
‫{‬
‫;‪cout<<t1‬‬ ‫ﻃﺒﺎﻋﺔ ﻣﻌﺪل‬
‫;‪cout<<(t1+t2)/2‬‬ ‫اﻷﻃﻮال‬
‫}‬
‫‪else‬‬ ‫وإﻻ‬
‫{‬
‫;‪cout<<t2‬‬ ‫ﻟﻄﺒﺎﻋﺔ ﺿﻌﻒ اﻟﻄﻮل‬
‫;‪cout<<t2*2‬‬
‫;‪cout<<t2/2‬‬
‫}‬ ‫ﻟﻄﺒﺎﻋﺔ ﻧﺼﻒ اﻟﻄﻮل‬
‫;‪return0‬‬
‫}‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com


‫ﺟﻤﻠﺔ أداة اﻟﺸﺮط ?‬
‫وﻫ ﻲ أداة ﺳ ﺮﻳﻌﺔ ﻣﻜﺎﻓ ﺌﺔ ﻟﺒﻨ ﻴﺔ إذا ‪ ...‬وإﻻ ‪ ،‬وﻗ ﺪ ﻣ ﺮ ﻣﻌ ﻨﺎ ﻛﻴﻔ ﻴﺔ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ﻓ ﻲ أول‬
‫اﻟﻜﺘﺎب وﺳﻮف ﻧﻮرد ﻫﻨﺎ ﺻﻮرﺗﻬﺎ اﻟﻌﺎﻣﺔ‪:‬‬
‫;‪Variable=(condition)? Result:result2‬‬

‫وﻣﻌ ﻨﺎﻫﺎ‪ :‬اﻧ ﻪ ﻳ ﺘﻢ ﺗﻨﻔ ﻴﺬ اﻟﻨﺘ ﻴﺠﺔ اﻷوﻟ ﻰ ‪ 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‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﺘﻜﺮار وﺣﻠﻘﺎت اﻟﺘﻜﺮار ‪Repetition and Loops‬‬
‫ﺗﻮﻓ ﺮ ﻟﻐ ﺔ ‪ ، C++‬ﻛﺴ ﺎﺋﺮ ﻟﻐ ﺎت اﻟ ﺒﺮﻣﺠﺔ ‪ ،‬ﻋﺪدا ﻣﻦ أﺳﺎﻟﻴﺐ اﻟﺘﻜﺮار اﻟﻤﺸﺮوط ‪ ،‬وﻏﻴﺮ‬
‫اﻟﻤﺸﺮوط وﻣﻦ ﻫﺬه اﻷﺳﺎﻟﻴﺐ‪:‬‬

‫أﺳﻠﻮب اﻟﺘﻜﺮار ﺑﺎﺳﺘﻌﻤﺎل ﺣﻠﻘﺔ ‪For‬‬


‫ﻳﻤﺘﻠﻚ أﺳﻠﻮب اﻟﺘﻜﺮار ﺑﺎﺳﺘﻌﻤﺎل ‪ for‬ﻗﻮة وﻣﺮوﻧﺔ ‪ ،‬ﻻ ﺗﺘﻮﻓﺮان ﻓﻲ ﻏﻴﺮﻫﺎ ﻣﻦ اﻟﻠﻐﺎت‪.‬‬

‫اﻟﺼﻴﻐﺔ اﻟﻌﺎﻣﺔ اﻷوﻟﻰ‬


‫;‪For ( initial-value; condition; increment ) statement‬‬

‫اﻟﻘﻴﻤﺔ‬ ‫ﺷﺮط ﻳﻘﻴﺪ‬ ‫اﻟﺰﻳﺎدة‬ ‫ﺟﻤﻠﺔ آو ﻳﺘﻢ‬


‫اﻻﺑﺘﺪاﺋﻴﺔ ﻟﻌﺪاد‬ ‫ﺣﺮﻛﺔ ‪For‬‬ ‫اﻟﻤﻨﺘﻈﻤﺔ‬ ‫ﺗﻜﺮار‬
‫ﺣﻠﻘﺔ ‪For‬‬ ‫وﻏﺎﻟﺒﺎ ﻣﺎ‬ ‫ﻓﻲ اﻟﻌﺪاد‬ ‫ﺗﻨﻔﻴﺬﻫﺎ ﻋﺪد‬
‫ﻳﺤﻮي ﻗﻴﻤﺔ‬ ‫ﻣﺮات ﺗﻜﺮار‬
‫ﻧﻬﺎﺋﻴﺔ‬ ‫‪For‬‬

‫ﺗﻘ ﻮم ﺟﻤﻠ ﺔ ‪ 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‬‬
‫}‬

‫واﻟﻨﺘﻴﺠﺔ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


Islam Islam Islam Islam Islam Islam Islam Islam Islam Islam

10 Ù 1 ‫ ﻣﺮات ﺑﺪاﻳﺔ ﻣﻦ اﻟﻘﻴﻤﺔ‬10 Islam ‫ﻧﻼﺣﻆ ﻫﻨﺎ اﻧﻪ ﺗﻢ ﺗﻜﺮار ﻛﻠﻤﺔ‬

:٩‫ﻣﺜﺎل‬
‫؟‬10 ‫ إﻟﻰ‬1 ‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻟﻄﺒﺎﻋﺔ ﻗﻴﻤﺔ اﻟﻌﺪاد ﻣﻦ‬
#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 pdfFactory Pro trial version www.pdffactory.com


‫ﻣﺜﺎل‪:١٠‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻟﻄﺒﺎﻋﺔ اﻷﻋﺪاد اﻟﻔﺮدﻳﺔ ﻣﻦ ‪ 1‬إﻟﻰ ‪15‬؟‬

‫”‪#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‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com


‫ﺣﻠﻘــﺎت اﻟــﺘﻜﺮار اﻟﻤــﺘﺪاﺧﻠﺔ ‪Nested (Multiple) for‬‬
‫‪Loops‬‬
‫ﺗﺄﺧﺬ ﺻﻴﻐﺔ ﺣﻠﻘﺎت اﻟﺘﻜﺮار اﻟﻤﺘﺪاﺧﻠﺔ اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ‪:‬‬
‫)‪For (...‬‬
‫)‪For (...‬‬
‫)‪For (...‬‬
‫…………………………‪.‬‬
‫…………………………‪.‬‬
‫;‪Statements‬‬

‫ﻓﻠﻮ أﺧﺬﻧﺎ ﺣﺎﻟﺔ ﺣﻠﻘﺘﻴﻦ ﻣﺘﺪاﺧﻠﺘﻴﻦ ﻓﺎﻧﻬﻤﺎ ﺗﻜﺘﺒﺎن ﻋﻠﻰ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫)‪For(...‬‬
‫)‪For (...‬‬
‫;‪Statements‬‬

‫ﺗﺴﻤﻰ اﻟﺤﻠﻘﺔ‬ ‫ﺗﺴﻤﻰ اﻟﺤﻠﻘﺔ‬


‫اﻟﺪاﺧﻠﻴﺔ ‪inner‬‬ ‫اﻟﺨﺎرﺟﻴﺔ ‪outer‬‬
‫‪loop‬‬ ‫‪loop‬‬

‫ﺟﻤﻠﺔ أو ﺟﻤﻞ ﺗﻜﺮر‬


‫ﺣﺴﺐ أواﻣﺮ‬
‫اﻟﺤﻠﻘﺘﻴﻦ‬

‫وﺗﻜ ﻮن ﻓ ﻲ ﻫ ﺬه اﻟﺤﺎﻟ ﺔ اﻟﺠﻤﻠ ﺔ )أو اﻟﺠﻤ ﻞ( ﺟ ﺰءا ﻣﻜ ﺮرا ﻣﺮﺗ ﺒﻄﺎ ﺑﺎﻟﺤﻠﻘ ﺔ اﻟﺪاﺧﻠ ﻴﺔ ‪،‬‬
‫واﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ ﺗﺘﻜﺮر ﺣﺴﺐ أواﻣﺮ اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ وﻫﻜﺬا ‪...‬‬

‫‪PDF created with pdfFactory Pro 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‬‬
‫;‪return0‬‬ ‫اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﻴﺔ ﺗﺘﻜﺮر ‪4‬‬
‫}‬ ‫ﻣﺮات ﻟﻜﻞ ﻗﻴﻤﺔ ﻣﻦ ﻗﻴﻢ ‪ I‬أي‬
‫ﻣﺠﻤﻮع ‪ 12‬ﻣﺮة‬

‫ﻻﺣ ﻆ ﻫ ﻨﺎ أن اﻟﺤﻠﻘ ﺔ اﻟﺪاﺧﻠ ﻴﺔ ﺗ ﺘﻜﺮر ‪ ٤‬ﻣ ﺮات ﻟﻜ ﻞ ﻗ ﻴﻤﺔ ﻣ ﻦ ﻗ ﻴﻢ ‪ ، I‬ﻋ ﺪاد اﻟﺤﻠﻘ ﺔ‬
‫اﻟﺨﺎرﺟ ﻴﺔ ‪ ،‬وﻛﺬﻟ ﻚ ﺟﻤﻠ ﺔ <<‪ ، cout‬وﺑﻤ ﺎ أن ‪ ، I‬ﺗ ﺄﺧﺬ ‪ 3‬ﻗ ﻴﻢ ﻓ ﺎن اﻟﺤﻠﻘ ﺔ اﻟﺪاﺧﻠ ﻴﺔ‬
‫ﺗﺘﻜﺮر ‪ 12‬ﻣﺮة ‪ ،‬أﻣﺎ اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ ﻓﺘﻜﺮر ﻧﻔﺴﻬﺎ ﺑﻨﻔﺴﻬﺎ ﻓﺘﺘﻜﺮ ‪ 12‬ﻣﺮة ﻓﻘﻂ‪.‬‬

‫واﻟﻨﺎﺗﺞ‪:‬‬
‫‪1234246836912‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل‪:١٥‬‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬ ‫اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ ﻳﺘﻐﻴﺮ ﻋﺪادﻫﺎ‬
‫)( ‪main‬‬ ‫ﺑﻴﻦ ‪ 2‬و ‪ 20‬ﺑﺰﻳﺎدة ﻣﻨﻈﻤﺔ‬
‫{‬ ‫ﻗﺪرﻫﺎ ‪2‬‬
‫;‪int i,j‬‬
‫)‪for (i=2;i<=20;i+=2‬‬
‫)‪for (j=30;j>=3;j-=3‬‬
‫;‪cout<<i<<j<<endl‬‬ ‫اﻟﺤﻠﻘﺔ ا ﻟﺪاﺧﻠﻴﺔ ﻳﺘﻐﻴﺮ ﻋﺪادﻫﺎ ﺑﻴﻦ‬
‫;‪return0‬‬ ‫‪ 30‬و ‪ 3‬ﺑﺰﻳﺎدة ﻣﻨﺘﻈﻤﺔ ﻗﺪرﻫﺎ‪3-‬‬
‫}‬

‫واﻟ ﻨﺎﺗﺞ ﺳ ﻴﻜﻮن ﻛﺒ ﻴﺮ ﻟﺬﻟ ﻚ ﺳ ﺄﻋﻄﻴﻜﻢ ﺟ ﻮاب اﻟﺤ ﻞ ﻟﻠﺴ ﻄﺮ اﻷول واﻟﺴ ﻄﺮ اﻷﺧ ﻴﺮ وﻣ ﺎ‬
‫ﺑﻴﻨﻬﻤﺎ ﻟﻜﻢ‪.‬‬
‫اﻟﺴﻄﺮ اﻷول‪1612 :‬‬
‫اﻟﺴﻄﺮ اﻷﺧﻴﺮ ‪203 :‬‬

‫‪PDF created with pdfFactory Pro 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‬‬
‫;‪a=1‬‬
‫)‪while (a<3‬‬ ‫ﻃﺎﻟﻤﺎ اﻟﺸﺮط‬
‫;‪cout<<a++‬‬
‫;‪return0‬‬
‫}‬ ‫اﻟﺰﻳﺎدة ﺑﻤﻘﺪار ‪1‬‬
‫ﺑﻌﺪ ﻃﺒﺎﻋﺔ‬
‫اﻟﻨﺘﻴﺠﺔ‬
‫واﻟﻨﺎﺗﺞ‬

‫ﺳﻮف ﻳﻜﻮن‪:‬‬
‫‪12‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com


‫ﻣﺜﺎل‪:١٩‬‬
‫اﻛﺘ ﺐ ﺑ ﺮﻧﺎﻣﺠﺎ ﻳﻄﻠ ﺐ ﻣ ﻦ اﻟﻤﺴ ﺘﺨﺪم إدﺧ ﺎل ﻗ ﻴﻤﺔ ﻋﺪدﻳ ﺔ ‪ ،‬وﻃﺎﻟﻤ ﺎ أن اﻟﻘ ﻴﻤﺔ اﻟﻤﺪﺧﻠ ﺔ ‪+‬‬
‫ﻳﻄﺒﻊ * ﻋﻠﻰ ﺳﻄﺮ ﺟﺪﻳﺪ؟‬
‫اﻟﺤـﻞ‪/‬‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬ ‫ﻧﺪﺧﻞ اﻟﺮﻗﻢ‬
‫;‪{ int a‬‬ ‫وﻟﻴﻜﻦ ‪10‬‬
‫;”‪cout<<”please enter a number‬‬
‫;‪cin>>a‬‬
‫)‪while (a>=0‬‬
‫{‬ ‫ﻃﺎﻟﻤﺎ أن اﻟﺮﻗﻢ‬
‫;‪cout<<”*”<<endl‬‬ ‫اﻟﻤﺪﺧﻞ اﻛﺒﺮ أو‬
‫;”‪cout<<” please enter a number‬‬ ‫ﻳﺴﺎوي ‪0‬‬
‫;‪cin>>a‬‬
‫}‬
‫إذا ﺗﺤﻘﻖ‬
‫;‪return0‬‬
‫اﻟﺸﺮط اﻃﺒﻊ‬
‫}‬

‫ﻃﺒﻌﺎ ﻗﻤﻨﺎ ﺑﺈدﺧﺎل اﻟﺮﻗﻢ ‪ 10‬واﻟﻨﺘﻴﺠﺔ ﺳﺘﻜﻮن‪:‬‬


‫*‬

‫ﻻن اﻟﻌ ﺪد ‪ 10‬ﻋ ﺪد ﻣﻮﺟ ﺐ ﻟﻜ ﻦ ﺣ ﺎول أن ﺗﺪﺧ ﻞ ﻋ ﺪد ﺳ ﺎﻟﺐ ﻓﻠ ﻦ ﻳﻄ ﺒﻊ ﻟ ﻚ ﺷ ﻲ ﻟﻌ ﺪم‬


‫ﺗﺤﻘ ﻖ اﻟﺸ ﺮط ‪ ،‬وﻻ ﻧﻨﺴ ﻰ أﺧﻮاﻧ ﻲ أﻧ ﻨﺎ وﺿ ﻌﻨﺎ اﻟﺠﻤ ﻞ أو اﻟﺠﻤﻠ ﺔ اﻟﺨﺎﺻﺔ ﺑﺎﻟﻄﺒﺎﻋﺔ ﺑﻴﻦ‬
‫اﻟﻘﻄ ﻊ ‪ {} Block‬ﻻﻧ ﻪ وﺟ ﺪ اﻛ ﺜﺮ ﻣ ﻦ ﺟﻤﻠ ﺔ ﻟﺬﻟ ﻚ ﻳﺠ ﺐ وﺿ ﻊ اﻟﻘﻄ ﻊ ﻟﻜ ﻦ ﻋ ﻨﺪ ﻋ ﺪم‬
‫وﺟﻮد اﻛﺜﺮ ﻣﻦ ﺳﻄﺮ أو ﺟﻤﻠﻪ ﻛﻤﺜﺎل )‪ (١٢‬ﻓﻼ ﻳﺠﻮز وﺿﻌﻬﺎ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﺣﻠﻘﺎت ‪ While‬اﻟﻤﺘﺪاﺧﻠﺔ ‪Nested While Loops‬‬
‫ﺗﺸ ﺒﺔ ﺣﻠﻘ ﺎت ‪ While‬اﻟﻤ ﺘﺪاﺧﻠﺔ ﺣﻠﻘ ﺎت ‪ for‬اﻟﻤ ﺘﺪاﺧﻠﺔ ‪ ،‬ﻓﻤ ﺜﻼ ﺧ ﺬ ﺣﻠﻘﺘ ﻲ اﻟ ﺘﻜﺮار‬
‫اﻟﻤﺘﺪاﺧﻠﺘﻴﻦ اﻟﺘﺎﻟﻴﺘﻴﻦ‪:‬‬
‫ﻣﺜﺎل‪:٢٠‬‬

‫”‪#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‬‬

‫‪PDF created with pdfFactory Pro 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‬‬ ‫ﺣﻠﻘﺎت اﻟﺘﻜﺮار ﻋﻨﺪﻣﺎ‬
‫}‬ ‫ﻳﺼﺒﺢ ‪i=10‬‬
‫;‪return0‬‬
‫}‬

‫وﻃﺒﻌﺎ ﺳﻴﻘﻮم ﺑﺘﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺣﺘﻰ اﻟﻌﺪد ‪10‬‬


‫واﻟﻨﺘﺎﺋﺞ‪:‬‬
‫‪12345678910‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


:٢٢‫ﻣﺜﺎل‬
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
int number;
for (number=1; number<=100;++ number)
{
if (number%2) // for ood values
break;
else if (number%4)
break;
else if (number%6)
break;
else
cout<< number<<endl;
}
return0;
}

PDF created with pdfFactory Pro 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‬‬
‫}‬
‫;)‪while (n<1‬‬
‫;‪return0‬‬
‫}‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


:٢٤‫ﻣﺜﺎل‬
‫ ﺑﺪون‬6‫ و‬4 ‫ و‬2 ‫ ﻣﺎ ﻋﺪا اﻷرﻗﺎم اﻟﺘﻲ ﺗﻘﺴﻢ ﻋﻠﻰ‬100 ‫ إﻟﻰ‬1 ‫ﺗﻄﺒﻊ ﺟﻤﻴﻊ اﻷرﻗﺎم ﻣﻦ‬
:‫ﺑﺎق‬
#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 pdfFactory Pro trial version www.pdffactory.com


‫ﺟﻤﻠﺔ اﻟﺨﺮوج )(‪exit‬‬
‫ﺗﻌﻤ ﻞ ﻫ ﺬه اﻟﺪاﻟ ﺔ ﻋﻠ ﻰ إﻳﻘ ﺎف ) أو اﻟﺨ ﺮوج ﻣ ﻦ ( اﻟ ﺒﺮﻧﺎﻣﺞ ﻓ ﻲ ﻣﻜﺎن ﻣﻨﻪ ‪ ،‬وﺗﺸﺒﺔ ‪end‬‬
‫ﻓ ﻲ ﻟﻐ ﺔ ﺑﻴﺴ ﻚ ‪ ،‬وﺗﻜ ﻮن ﻗ ﻴﻤﺔ اﻟﺪاﻟ ﺔ ﺻ ﻔﺮا )‪ exit(0‬ﻋ ﻨﺪﻣﺎ ﻳ ﺘﻢ اﻟﺨ ﺮوج ﻣ ﻦ اﻟﺒﺮﻧﺎﻣﺞ‬
‫ﺑ ﻨﺠﺎح وأﻻ ﻓ ﺎن ﻗ ﻴﻤﺔ اﻟﺪاﻟ ﺔ ﺗﻜ ﻮن )‪ exit(1‬وﺗﻮﻗ ﻒ اﻟ ﺒﺮﻧﺎﻣﺞ ﻋ ﻨﺪ وﺟ ﻮد ﺧﻄ ﺄ أو ﻧﺤ ﻮ‬
‫ذﻟ ﻚ ‪ ،‬وﻓ ﻲ ﻫ ﺬه اﻟﺤﺎﻟ ﺔ ‪ ،‬وﺗﻠ ﻚ ﻳﻌ ﻮد اﻟ ﺒﺮﻧﺎﻣﺞ ﺗﻨﻔ ﻴﺬه إﻟ ﻰ ﻧﻈ ﺎم اﻟﺘﺸ ﻐﻴﻞ ‪operating‬‬
‫‪. system‬‬
‫ﻣﺜﺎل‪:٢٥‬‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬ ‫ﻣﺜﺎل‪:٢٣‬‬
‫)( ‪main‬‬
‫{‬
‫;‪chat ma‬‬
‫;‪cin>>ma‬‬
‫;)‪if ( ma != ‘A’) exit(1‬‬
‫;‪cout<<”\n”<<ma‬‬
‫;‪return0‬‬
‫}‬

‫‪PDF created with pdfFactory Pro 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‬‬
‫;‪return0‬‬
‫}‬

‫ﻓ ﻲ ﻫ ﺬا اﻟﺴ ﺆال ﻳﻄﻠ ﺐ ﻣ ﻦ اﻟﻤﺴ ﺘﺨﺪم إدﺧ ﺎل ﻗ ﻴﻤﺔ ﻓ ﺈذا ﻛﺎﻧ ﺖ اﻟﻘ ﻴﻤﺔ اﻗ ﻞ ﻣﻦ ‪ 10‬ﺣﺴﺐ‬
‫اﻟﺸﺮط ﻓﺎﻧﻪ ﻳﻌﺮض ﻟﻚ اﻟﺮﺳﺎﻟﺔ ‪. value is under 10‬‬
‫أﻣ ﺎ إذا ﻛﺎﻧ ﺖ اﻛ ﺒﺮ ﻣ ﻦ اﻟﻌ ﺪد ‪ 10‬ﻓﺎﻧ ﻪ ﻳﻄ ﺒﻊ اﻟﻌ ﺪد ﻣﺒﺎﺷ ﺮة ﻣ ﻦ دون اﻟﺬﻫ ﺎب ﻟﻠﺴ ﻄﺮ‬
‫اﻷﺧﻴﺮ ﻟﺘﺤﻘﻖ اﻟﺸﺮط ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻤﺘﻐﻴﺮات اﻟﻤﺮﻗﻤﺔ واﻟﻤﺼﻔﻮﻓﺎت‬
‫‪Arrays and Matrices‬‬

‫ﻣﻘﺪﻣﺔ ‪introduction‬‬
‫أن ﻃ ﺮق اﻟ ﺘﻌﺎﻣﻞ ﻣ ﻊ أﺳ ﻤﺎء اﻟﻤﺘﻐ ﻴﺮات واﻟﺜﻮاﺑ ﺖ اﻟﻌﺪدﻳ ﺔ واﻟﺮﻣ ﺰﻳﺔ ‪ ،‬اﻟﺘ ﻲ وردت ﻓ ﻲ‬
‫اﻟﻔﺼ ﻮل اﻟﺴ ﺎﺑﻘﺔ ‪ ،‬ﺗﻌ ﺪ ﺻ ﺎﻟﺤﺔ ﻟﻠ ﺘﻌﺎﻣﻞ ﻣ ﻊ ﻋ ﺪد ﻣﺤ ﺪود ﻣﻦ ﻫﺬه اﻟﺜﻮاﺑﺖ واﻟﻤﺘﻐﻴﺮات ‪،‬‬
‫ﺳ ﻮاء ﻓ ﻲ ﻋﻤﻠ ﻴﺎت اﻹدﺧ ﺎل واﻹﺧ ﺮاج أو ﻓ ﻲ اﻟﻌﻤﻠ ﻴﺎت اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﻤﻨﻄﻘ ﻴﺔ ‪ ،‬وﻋ ﻨﺪﻣﺎ‬
‫ﻳﺼ ﺒﺢ ﻋ ﺪد اﻟﻤﺘﻐ ﻴﺮات ﻛﺒ ﻴﺮا ﺟ ﺪا ‪ ،‬ﺗﺼ ﺒﺢ ﺗﻠ ﻚ اﻟﻄ ﺮق ﻏ ﻴﺮ ﻋﻤﻠ ﻴﺔ ‪ ،‬ﻓﻤ ﺜﻼ ﻟ ﻮ أردﻧ ﺎ‬
‫إدﺧ ﺎل ﻣﺎﺋ ﺔ ﻗ ﻴﻤﺔ ﻟﻠﻤﺘﻐ ﻴﺮات ‪ .... x2,x1-‬إﻟ ﻲ ‪ ، x100‬ﻓﻜ ﻢ اﻟﺤ ﻴﺰ اﻟﻤﻄﻠ ﻮب ﻣ ﻦ‬
‫اﻟ ﺒﺮﻧﺎﻣﺞ ﻟﻌﻤﻠ ﻴﺎت اﻹدﺧ ﺎل واﻹﺧ ﺮاج واﻟﻌﻤﻠ ﻴﺎت اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﻤﻨﻄﻘ ﻴﺔ ﻟﻬ ﺬه اﻟﻤﺘﻐﻴﺮات ؟‬
‫ﻫ ﺬا ﻣ ﻦ ﺟﻬ ﺔ ‪ ،‬وﻣ ﻦ ﺟﻬ ﺔ أﺧ ﺮى ‪ :‬ﻓﺄﻧ ﻨﺎ ﻧﻮﻓ ﺮ ﻣﺨ ﺰﻧﺎ ﺧﺎﺻ ﺎ ﻟﻜ ﻞ ﻣﺘﻐﻴﺮ ﻧﺘﻌﺎﻣﻞ ﻣﻌﻪ ‪،‬‬
‫أﺛ ﻨﺎء ﺗﻨﻔ ﻴﺬ اﻟ ﺒﺮﻧﺎﻣﺞ ‪ ،‬وﻟﺬﻟ ﻚ ﻟﺤﻔ ﻆ ﻗﻴﻤ ﺘﻪ ﻓ ﻲ ﻣﺨ ﻮن ‪ ،‬وﻣ ﻦ ﺛ ﻢ ﻻﺳ ﺘﻌﻤﺎل ﻗﻴﻤ ﺘﻪ ﻓ ﻲ‬
‫ﻋﻤﻠ ﻴﺎت أﺧ ﺮى ﺗﺎﻟ ﻴﺔ ‪ ،‬وﻣ ﻦ ﻧﺎﺣ ﻴﺔ ﺛﺎﻟ ﺜﺔ ‪ ،‬ﻓ ﺎن ﻣ ﻦ اﻟﺼﻌﻮﺑﺔ ﺑﻤﻜﺎن ‪ ،‬ﺑﻞ ﻣﻦ اﻟﻤﺴﺘﺤﻴﻞ‬
‫اﺳﺘﻌﻤﺎل اﺳﻢ اﻟﻤﺘﻐﻴﺮ اﻟﻌﺪدي أو اﻟﺮﻣﺰي ﻛﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ‪ ،‬وﺛﻼﺛﺔ أﺑﻌﺎد ‪...‬اﻟـﺦ‬

‫ﻟﻸﺳ ﺒﺎب اﻟ ﺜﻼﺛﺔ اﻟ ﻮاردة أﻋ ﻼه ‪ ،‬ﺟ ﺎءت ﻓﻜ ﺮة اﺳﺘﻌﻤﺎل ﻣﺘﻐﻴﺮ ﺟﻤﺎﻋﻲ ﻳﻀﻢ ﺗﺤﺖ اﺳﻤﻪ‬
‫ﻋ ﺪدا ﻣ ﻦ اﻟﻌﻨﺎﺻ ﺮ ﻳﺴ ﻤﻰ ﺑﺎﻟﻤﺘﻐ ﻴﺮ اﻟﺮﻗﻤ ﻲ ‪ ، subscripted variable‬وﻳ ﺘﻢ ﺗﺮﻗﻤ ﻴﻪ‬
‫ﺑﻴ ﻦ ﻗﻮﺳ ﻴﻦ ﻣﺮﺑﻌﻴ ﻦ ] [ ﻳﻮﺿ ﻊ ﺑﻴ ﻨﻬﻤﺎ ﻗ ﻴﻤﺔ اﻟﻌ ﺪاد اﻟﻤ ﺮﻗﻢ ‪ ، subscript‬وﻗ ﺪ ﻧﺴ ﻤﻴﺔ‬
‫اﻟﺪﻟ ﻴﻞ ‪ index‬أﺣ ﻴﺎﻧﺎ ‪ ،‬وﻳﻤﻜﻨ ﻨﺎ ﺗﺸ ﺒﻴﻪ اﻟﻤﺘﻐ ﻴﺮ اﻟﻤ ﺮﻗﻢ ﺑﻘﺴ ﻢ اﻟﻬ ﺎﺗﻒ ﻟﻤﺆﺳﺴ ﺔ ﻣ ﺎ ‪ ،‬ﻓﻬ ﻮ‬
‫ﻣﻘﺴ ﻢ واﺣ ﺪ ‪ ،‬ﺗ ﻨﻈﻢ ﺗﺤ ﺘﻪ ﻋ ﺪد ﻣ ﻦ اﻷرﻗ ﺎم اﻟﻔﺮﻋﻴﺔ ﻟﻠﻤﻮﻇﻔﻴﻦ وﻛﻞ رﻗﻢ ﻣﻦ ﻫﺬه اﻷرﻗﺎم‬
‫ﻣﺴ ﺘﻘﻞ وﻣﺘﻤ ﻴﺰ ﻋ ﻦ اﻷرﻗ ﺎم اﻟﻔﺮﻋ ﻴﺔ اﻷﺧ ﺮى ‪ ،‬و ﻟﻪ ﻣﺨ ﺰن ﺧ ﺎص ﻓ ﻲ اﻟﺬاﻛ ﺮة ‪ ،‬اﻵن‬
‫اﻧ ﻪ ﻛﻐ ﻴﺮه ﻣ ﻦ اﻷرﻗ ﺎم اﻟﻔﺮﻋ ﻴﺔ ﺗ ﺎﺑﻊ ﻟﻠ ﺮﻗﻢ اﻟﻌ ﺎم ﻟﻤﻘﺴ ﻢ اﻟﻤﺆﺳﺴ ﺔ ‪ ،‬ﻛﻤ ﺎ ﻳﻤﻜ ﻦ ﺗﺸ ﺒﻴﻪ‬
‫اﻟﻤﺘﻐ ﻴﺮ اﻟﻤ ﺮﻗﻢ ﺑﺎﻟﺠ ﻴﺶ اﻟ ﺬي ﻳﻌ ﺎﻣﻞ ﻛﺎﺳ ﻢ ﻣﺘﻐ ﻴﺮ واﺣ ﺪ ‪ ،‬ﻟﻜ ﻦ ﻳﻀ ﻢ ﻋ ﺪدا ﻛﺒ ﻴﺮا ﻣ ﻦ‬
‫اﻟﻌﻨﺎﺻﺮ ‪ ،‬ﻓﻤﺜﻼ اﻟﻌﻨﺎﺻﺮ اﻟﺘﺎﻟﻴﺔ ‪):‬ﻣﻦ اﻟﻴﻤﻴﻦ إﻟﻰ اﻟﻴﺴﺎر(‪:‬‬
‫]‪A[n] ...a[2], a[1], a[0‬‬
‫ﺗﺎﺑﻊ ﻟﻠﻤﺘﻐﻴﺮ اﻟﺠﻤﺎﻋﻲ ] [‪a‬‬
‫وﻛ ﻞ ﻋﻨﺼ ﺮ ﻣ ﻦ ﻫ ﺬه اﻟﻌﻨﺎﺻ ﺮ ﻟﻪ ﻋ ﻨﻮان ﻓ ﻲ اﻟﺬاﻛﺮ ‪ ، address‬ﻓﺎﻟﻌﻨﻮان اﻷول ﻳﻜﻮن‬
‫ﻟﻠﻌﻨﺼﺮ اﻷول واﻟﺜﺎﻧﻲ ﻟﻠﺜﺎﻧﻲ واﻟﺜﺎﻟﺚ ﻟﻠﺜﺎﻟﺚ ‪ ...‬وﻫﻜﺬا‪.‬‬
‫وﻳﺴ ﺘﻌﻤﻞ اﻟﻤﺘﻐ ﻴﺮ اﻟﺠﻤﺎﻋ ﻲ ]اﻟﻤ ﺮﻗﻢ[ أو اﻟﻤﺼ ﻔﻮﻓﺔ ‪ ،‬ﻓ ﻲ ﻟﻐ ﺔ ‪ c++‬وﻏ ﻴﺮﻫﺎ ‪ ،‬ﺣﺠ ﺰ‬
‫ﺟﻤﺎﻋ ﻲ ﻣﺴ ﺒﻖ ﻓ ﻲ اﻟﺬاﻛ ﺮة ﻟﺠﻤ ﻴﻊ ﻋﻨﺎﺻ ﺮه ‪ ،‬ﻓﻠ ﻮ ﻛ ﺎن ﻳﺘ ﺒﻌﻪ ﺧﻤﺴ ﻮن ﻋﻨﺼ ﺮا ‪ ،‬ﻓﺎﻧ ﻪ‬
‫ﻳﺤﺠﺰ ﻟﻪ ‪ 50‬ﻣﺨﺰﻧﺎ ‪ ،‬ﻋﻠﻰ اﻷﻗﻞ ﻓﻲ اﻟﺬاﻛﺮة ‪.‬‬

‫ﻣ ﻦ اﻟﻔﻮاﺋ ﺪ اﻟﻤﻬﻤ ﺔ ﻟﻠﻤﺘﻐ ﻴﺮات اﻟﻤ ﺮﻗﻤﺔ واﻟﻤﺼ ﻔﻮﻓﺎت ‪ :‬ﻫ ﻮ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ﻓ ﻲ اﻟﺘﺮﺗﻴ ﺐ‬
‫اﻟﺘﺼ ﺎﻋﺪي واﻟﺘﻨﺎزﻟ ﻲ ﻟﻠﻌﻨﺎﺻ ﺮ واﻟﻘ ﻴﻢ اﻟﻤﺨ ﺘﻠﻔﺔ ‪ ،‬وﻋﻤﻠ ﻴﺎت ﺗﺮﺗﻴ ﺐ اﻷﺳ ﻤﺎء اﻷﺑﺠ ﺪي‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻨﺼ ﻮص اﻟﺮﻣ ﺰﻳﺔ ‪ ،‬وﻓ ﻲ ﻋﻤﻠ ﻴﺎت ﺿ ﺮب اﻟﻤﺼ ﻔﻮﻓﺎت ‪ ،‬وإﻳﺠ ﺎد ﻣﻌﻜ ﻮس اﻟﻤﺼ ﻔﻮﻓﺔ‬
‫وﻋﻤﻠﻴﺎﺗﻬﺎ اﻷﺧﺮى ‪ ،‬وﻓﻲ اﻟﺘﺤﻠﻴﻞ اﻟﻌﺪدي ‪ ...‬اﻟـﺦ‪.‬‬
‫اﻟﻤﺘﻐﻴﺮ اﻟﻤﺮﻗﻢ ) اﻟﻤﺼﻔﻮﻓﺔ ( ذو اﻟﺒﻌﺪ اﻟﻮاﺣﺪ ‪one-dimensional Array‬‬
‫اﻟﻤﺘﻐ ﻴﺮ اﻟﻤ ﺮﻗﻢ ذو اﻟ ﺒﻌﺪ اﻟﻮاﺣ ﺪ ﻫ ﻮ ﻣﺼ ﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ أو ﻣﺘﺠﻪ )‪ (vector‬وﻳﻤﺜﻞ‬
‫ﻓﻲ اﻟﺠﺒﺮ ﻋﻠﻰ اﻟﻨﺤﻮ اﻷﻓﻘﻲ ]‪[a1 a2 ...a3‬‬
‫أو اﻟﻌﻤﻮدي‬
‫‪A1‬‬
‫‪A2‬‬
‫‪:‬‬
‫‪:‬‬
‫‪:‬‬
‫‪a3‬‬

‫وﻳﺄﺧﺬ اﻟﻤﺮﻗﻢ اﻟﻤﺘﻐﻴﺮ ﻓﻲ ‪ c++‬اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ‪:‬‬


‫;]‪Type-specifier array-name[size‬‬

‫اﻟﻌﺪد ﻣﻦ‬
‫اﻻﺳﻢ اﻟﺠﻤﺎﻋﻲ‬
‫ﻣﺜﻞ ‪double -– int‬‬ ‫اﻟﻌﻨﺎﺻﺮ‬
‫‪char‬‬

‫وﻳ ﺒﺪأ اﻟﻌ ﺪاد اﻟﻤ ﺮﻗﻢ ﻋ ﺎدة ﻣ ﻦ اﻟﺼ ﻔﺮ ‪ ،‬آي أن اﻟﻌﻨﺼ ﺮ اﻷول ﻣ ﻦ اﻟﻤﺼ ﻔﻮﻓﺔ ][‪ a‬ﻫ ﻮ‬
‫]‪ a[0‬واﻟﺜﺎﻧﻲ ]‪ ... a[1‬وﻫﻜﺬا ﻓﻤﺜﻼ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫;]‪Int a[20‬‬
‫اﺳﻤﻬﺎ ‪ ، a‬وﻗﺪ ﺣﺠﺰ ﻟﻬﺎ ‪ 20‬ﻣﻮﻗﻌﺎ ﻟﻌﺸﺮﻳﻦ ﻋﻨﺼﺮا ﻣﻦ اﻟﻨﻮع اﻟﺼﺤﻴﺢ ‪.‬‬

‫واﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﺎﻟﻴﺔ‪:‬‬
‫;]‪Char name[15‬‬
‫ﻣﺼﻔﻮﻓﺔ رﻣﺰﻳﺔ ‪ ،‬اﺳﻤﻬﺎ ‪ name‬ﻳﺤﺠﺰ ﻟﻬﺎ ﺧﻤﺴﺔ ﻋﺸﺮ ﻋﻨﺼﺮا ﻣﻦ اﻟﻨﻮع اﻟﺮﻣﺰي‬
‫ﻟﻬﺎ ‪.‬‬
‫وﻫﻜـﺬا‪...‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل‪:١‬‬
‫ﻣﺜﺎل ﻋﻠﻰ ﻋﻤﻠﻴﺔ إدﺧﺎل ذاﺗﻲ ﻟﻘﻴﻢ ﻋﻨﺎﺻﺮ ﻣﺘﻐﻴﺮ ﻣﺮﻗﻢ ) ﻣﺼﻔﻮﻓﺔ ( ذي ﺑﻌﺪ واﺣﺪ‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬
‫{‬
‫;]‪int a[20‬‬
‫;‪int I‬‬
‫)‪for (I=0;I<20;++I‬‬
‫;‪a[I]=I+1‬‬
‫;‪return0‬‬
‫}‬ ‫ﻋﺪاد ﻣﺮﻗﻢ‬
‫اﻟﻤﺼﻔﻮﻓﺔ‬

‫ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﻳﺘﻢ إدﺧﺎل ﻋﺸﺮﻳﻦ ﻋﻨﺼﺮا ﻣﻦ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ‪a‬‬
‫‪ A[0]=1‬ﻋﻨﺪﻣﺎ ﻳﻜﻮن ‪I=0‬‬
‫‪ A[1]=2‬ﻋﻨﺪﻣﺎ ﻳﻜﻮن ‪I=1‬‬
‫…‬
‫…‬
‫…‬
‫‪ a[19]=20‬ﻋﻨﺪﻣﺎ ﻳﻜﻮن ‪I=19‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com


‫إﻋﻄـﺎء ﻗﻴﻤﺔ أوﻟﻴﺔ ﻟﻠﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ ‪Array‬‬
‫‪Initialization‬‬
‫ﻣﺜﺎل ﻋﻠﻰ إدﺧﺎل ﻋﺪة ﻋﻨﺎﺻﺮ ﻣﻦ ﻣﺼﻔﻮﻓﺔ اﻟﺪرﺟﺎت ][‪grade‬‬
‫}‪Int grade[5]={80,90,54,50,95‬‬

‫وﻣﺜﺎل ﻋﻠﻰ إدﺧﺎل ﻗﻴﻢ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﻣﺰﻳﺔ ][‪name‬‬


‫”‪Char name[4]=“nor‬‬
‫ﻻﺣ ﻆ أن اﻟﻤﺘﻐ ﻴﺮ اﻟﻤ ﺮﻗﻢ ][‪ name‬ﻣﻜ ﻮن ﻣ ﻦ أرﺑﻌ ﺔ ﻋﻨﺎﺻ ﺮ ﺑﻴ ﻨﻤﺎ ﺗ ﻢ إﻋﻄ ﺎؤه ﺛﻼﺛ ﺔ‬
‫ﻋﻨﺎﺻﺮ ﻓﻘﻂ واﻟﺴﺒﺐ أن اﻟﻌﻨﺼﺮ اﻟﺮاﺑﻊ ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ اﻟﻤﻌﻄﻴﺎت اﻟﺮﻣﺰﻳﺔ ﻳﻜﻮن ﺧﺎﻟﻴﺎ‪.‬‬

‫ﻣﺜﺎل‪:٣‬‬

‫”‪#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‬‬
‫}‬

‫واﻟﻨﺎﺗﺞ ﻃﺒﻌﺎ ﺳﻴﻜﻮن ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬


‫‪40‬‬
‫‪60‬‬
‫‪50‬‬
‫‪70‬‬
‫‪80‬‬
‫‪90‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com


‫ﻋــﻨﻮان ﻋﻨﺎﺻــﺮ اﻟﻤﺼــﻔﻮﻓﺔ ﻓــﻲ اﻟﺬاﻛــﺮة ‪Addressing‬‬
‫‪Array Elements in Memory‬‬
‫ذﻛ ﺮﻧﺎ ﻣ ﻦ ﻗ ﺒﻞ أن آي ﻣﺘﻐ ﻴﺮ أو ﻋﻨﺼﺮ ﻣﻦ ﻣﺘﻐﻴﺮ ذاﺗﻲ ﻣﺮﻗﻢ ‪ ،‬ﻳﺤﺘﻞ ﻣﻮﻗﻌﺎ ﻣﻦ اﻟﺬاﻛﺮة‬
‫ﻳﺴ ﺘﻌﻤﻞ ﻋ ﺎدة ﻣﺆﺷ ﺮا ﻟﻜ ﻞ ﻣﺘﻐ ﻴﺮ أو ﻋﻨﺼ ﺮ ‪ ،‬ﻟ ﻴﻜﻮن دﻟ ﻴﻼ ﻋﻠ ﻰ اﺳ ﺘﻌﻤﺎل ﻫ ﺬه‬
‫اﻟﻤﺘﻐ ﻴﺮات واﻟﻌﻨﺎﺻ ﺮ ﺑﺴ ﻬﻮﻟﺔ وﻳﺴ ﺮ ‪ ،‬واﻟﻤ ﺜﺎل اﻟﺘﺎﻟ ﻲ ﻳﻮﺿ ﺢ ﻫ ﺬه اﻟﻌﻤﻠ ﻴﺔ ﺑﺎﻟﻨﺴ ﺒﺔ‬
‫ﻟﻠﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪ واﺣﺪ‪.‬‬
‫;]‪Int x[5‬‬
‫ﻳﻤﻜ ﻦ ﺗﻤﺜ ﻴﻞ ﻋﻨﺎﺻ ﺮ اﻟﻤﺼ ﻔﻮﻓﺔ ‪ x‬اﻟﻤﻌﻠ ﻦ ﻋ ﻨﻬﺎ ‪ ،‬ﻣ ﻊ ﻋﻨﺎوﻳ ﻨﻬﺎ ﺑﺎﻟﺸ ﻜﻞ اﻟﺘﻮﺿ ﻴﺤﻲ‬
‫اﻟﺘﺎﻟﻲ ) ﻣﻦ اﻟﻴﺴﺎر إﻟﻰ اﻟﻴﻤﻴﻦ(‬
‫اﻷول‬ ‫اﻟﺜﺎﻧﻲ‬ ‫اﻟﺜﺎﻟﺚ‬ ‫اﻟﺮاﺑﻊ‬ ‫اﻟﺨﺎﻣﺲ‬
‫]‪X[0‬‬ ‫]‪X[1‬‬ ‫]‪X[2‬‬ ‫]‪X[3‬‬ ‫]‪X[4‬‬
‫‪100‬‬ ‫‪101‬‬ ‫‪102‬‬ ‫‪103‬‬ ‫‪104‬‬
‫ﻋﻨﻮاﻧﻪ ﻓﻲ‬
‫اﻟﺬاﻛﺮة‬

‫اﻟﻌﻨﺼﺮ‬

‫إذا ﻓﺮﺿ ﻨﺎ أن ﻋ ﻨﻮان ﻣﻮﻗ ﻊ اﻟﻌﻨﺼ ﺮ اﻷول ]‪ x[0‬ﻓ ﻲ اﻟﺬاﻛ ﺮة ﻫ ﻮ ‪ ، 100‬ﻓﺎن ﻋﻨﺎوﻳﻦ‬
‫اﻟﻌﻨﺎﺻﺮ اﻷﺧﺮى ﺗﻜﻮن ﻋﻠﻰ اﻟﺘﻮاﻟﻲ ‪104 103 102 101‬‬
‫ﻳﻤﻜ ﻦ ﺗﺸ ﺒﻴﻪ اﻟﻌﻼﻗ ﺔ ﺑﻴ ﻦ ﻗ ﻴﻤﺔ اﻟﻌﻨﺼﺮ ‪ ،‬وﻋﻨﻮاﻧﻪ ‪ ،‬ﺑﺎﻟﻌﻼﻗﺔ ﺑﻴﻦ ﻋﻼﻣﺔ ﻃﺎﻟﺐ ‪ ،‬ورﻗﻤﻪ‬
‫اﻟﺠﺎﻣﻌﻲ ‪ ،‬إذ ﻋﻼﻣﺘﻪ ﻫﻲ ﻗﻴﻤﺔ ﻧﺸﻄﻪ ﻛﻌﻨﺼﺮ ‪ ،‬ﻟﻴﺲ ﻟﻬﺎ ﻋﻼﻗﺔ ﺑﺮﻗﻢ ﻣﻘﻌﺪه اﻟﺠﺎﻣﻌﻲ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪﻳﻦ ‪Two-Dimensional Arrays‬‬
‫ﺗﺸ ﺒﺔ اﻟﻤﺼ ﻔﻮﻓﺔ ذات اﻟﺒﻌﺪﻳ ﻦ ﻓ ﻲ ﻃ ﺮﻳﻘﺔ ﺗﻌﺎﻣﻠﻬ ﺎ ‪ ،‬اﻟﻤﺼ ﻔﻮﻓﺔ ذات اﻟ ﺒﻌﺪ اﻟﻮاﺣ ﺪ إﻻ أن‬
‫ﻟﻬ ﺎ ﻋﺪادﻳ ﻦ) ‪ (index2‬دﻟﻴﻠﻴ ﻦ أو ﻣﺮﻗﻤﻴ ﻦ إﺣﺪاﻫﻤ ﺎ ﻋ ﺪاد ﻟﻠﺼ ﻔﻮف ‪ ،‬واﻷﺧ ﺮ ﻋ ﺪاد‬
‫ﻟﻸﻋﻤﺪة وﻳﺄﺧﺬ اﻹﻋﻼن ﻋﻦ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ‪:‬‬
‫;]‪Type-specifier arraey_name [index 1][index 2‬‬

‫اﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ‬ ‫اﻟﺪﻟﻴﻞ اﻷول‬ ‫اﻟﺪﻟﻴﻞ اﻟﺜﺎﻧﻲ‬

‫ﻓﻤﺜﻼ اﻟﻤﺼﻔﻮﻓﺔ ‪:‬‬


‫;]‪Int x[2][3‬‬
‫وﻫ ﻲ ﻣﺼ ﻔﻮﻓﺔ ﺻ ﺤﻴﺤﺔ اﻟﻌﻨﺎﺻ ﺮ ‪ int‬أﺑﻌﺎدﻫ ﺎ ﻫ ﻲ ﻋ ﺪد اﻟﺼ ﻔﻮف=‪ ، 2‬وﻋﺪد اﻷﻋﻤﺪة‬
‫=‪3‬‬
‫ﻻﺣﻆ أن ﻋﺪد اﻟﺼﻔﻮف ﻳﻮﺿﻊ ﺑﻴﻦ ﻗﻮﺳﻴﻦ وﺣﺪه ‪ ،‬وﻛﺬﻟﻚ ﻋﺪاد اﻷﻋﻤﺪة ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﻣﺜﺎل‪:٥‬‬
‫ﺷﺎﻫﺪ ﻫﺬا اﻟﻤﺜﺎل اﻟﺬي ﻳﺴﺘﺨﺪم ‪ 5‬ﻃﻼب و ‪ 3‬ﻋﻼﻣﺎت‪:‬‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)( ‪main‬‬
‫{‬
‫;]‪int m[5][3‬‬
‫;‪int I,j‬‬
‫)‪for(I=0;I<5;I++‬‬
‫)‪for(j=0;j>3;j++‬‬
‫;]‪cin>>m[I][j‬‬
‫;‪return0‬‬
‫}‬

‫وﺑﺎﻟﻨﺴ ﺒﺔ ﻟﻌﻨﺎوﻳ ﻦ اﻟﻌﻨﺎﺻ ﺮ اﻟﻤﺼ ﻔﻮﻓﺔ ﻣ ﺘﻌﺪدة اﻷﺑﻌ ﺎد ﻓ ﻲ اﻟﺬاﻛ ﺮة ‪ ،‬ﻻ ﻳﺨ ﺘﻠﻒ ﻋﻤ ﺎ‬
‫ذﻛ ﺮﻧﺎ ﺑﺎﻟﻨﺴ ﺒﺔ ﻟﻠﻤﺼ ﻔﻮﻓﺎت ذات اﻟ ﺒﻌﺪ اﻟﻮاﺣ ﺪ ‪ ،‬وﻟﺬﻟﻚ ﻟﻮ ﻓﺮﺿﻨﺎ ‪ ،‬ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ أن‬
‫اﻟﻌﻨﺼ ﺮ ]‪ x[0,0‬ﻛ ﺎن ﻋ ﻨﻮاﻧﻪ ‪ 100‬ﻣ ﺜﻼ ﻓ ﺎن ﻋﻨﺎوﻳ ﻦ اﻟﻌﻨﺎﺻ ﺮ اﻟﺘﺎﻟ ﻴﺔ‪ :‬ﺣﺴﺐ ﺗﺮﺗﻴﺒﻬﺎ‬
‫اﻟﻤﺬﻛ ﻮر أﻋ ﻼه ﻫ ﻲ ‪ 102-101-100‬ﻟﻌﻨﺎﺻ ﺮ اﻟﺼ ﻒ اﻷول ‪105-104-103‬‬
‫ﻟﻌﻨﺎﺻﺮ اﻟﺼﻒ اﻟﺜﺎﻧﻲ‪.‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﺪوال‬
‫‪Functions‬‬

‫ﻣﻘﺪﻣﺔ ‪Introduction‬‬
‫ﺗﻌ ﺮف اﻟﺪاﻟ ﺔ ) اﻻﻗ ﺘﺮان ( ﻋﻠ ﻰ أﻧﻬ ﺎ ‪ :‬ﺟﻤﻠ ﺔ أو ﻣﺠﻤﻮﻋ ﺔ ﺟﻤ ﻞ أو ﺗﻌﻠﻴﻤﺎت ‪ ،‬ذات ﻛﻴﺎن‬
‫ﺧ ﺎص ‪ ،‬ﺗﻘ ﻮم ﺑﻌﻤﻠ ﻴﺔ أو ﻣﺠﻤﻮﻋ ﺔ ﻋﻤﻠ ﻴﺎت ‪ ،‬ﺳ ﻮاء ﻋﻤﻠ ﻴﺎت إدﺧ ﺎل أو إﺧ ﺮاج أو‬
‫ﻋﻤﻠ ﻴﺎت ﺣﺴ ﺎﺑﻴﺔ أو ﻣﻨﻄﻘ ﻴﺔ ‪ ،‬وﺗﺤ ﺘﻞ اﻟﺪاﻟ ﺔ ﻣﻮﻗﻌﺎ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ ‪ ،‬آي أﻧﻬﺎ ﺟﺰء ﻣﻨﻪ ‪ ،‬أو‬
‫ﻳﻤﻜﻦ اﻟﻘﻮل أن ﺑﺮﻧﺎﻣﺞ ‪ ، c++‬ﻳﺘﻜﻮن ﻣﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪوال‪.‬‬

‫وﻣﻦ ﻓﻮاﺋﺪ اﻟﺪوال اﻟﺘﺎﻟﻲ‪:‬‬


‫‪ -١‬ﺗﺴ ﺎﻋﺪ اﻟ ﺪوال اﻟﻤﺨ ﺰﻧﺔ ﻓ ﻲ ذاﻛ ﺮة اﻟﺤﺎﺳ ﺐ ﻋﻠ ﻰ اﺧﺘﺼ ﺎر اﻟ ﺒﺮﻧﺎﻣﺞ إذ ﻳﻜ ﺘﻔﻰ‬
‫ﺑﺎﺳﺘﻌﺎدﺗﻬﺎ ﺑﺎﺳﻤﻬﺎ ﻓﻘﻂ ﻟﺘﻘﻮم ﺑﺎﻟﻌﻤﻞ اﻟﻤﻄﻠﻮب‪.‬‬
‫‪ -٢‬ﺗﺴ ﺎﻋﺪ اﻟ ﺪوال اﻟﻤﺨ ﺰﻧﺔ ﻓ ﻲ ﻣﻜﺘ ﺒﺔ اﻟﺤﺎﺳﺐ ‪ ،‬أو اﻟﺘﻲ ﻳﻜﺘﺒﻬﺎ اﻟﻤﺒﺮﻣﺞ ﻋﻠﻰ ﺗﻼﻓﻲ‬
‫ﻋﻤﻠﻴﺎت اﻟﺘﻜﺮار ﻓﻲ ﺧﻄﻮات اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﻲ ﺗﺘﻄﻠﺐ ﻋﻤﻼ ﻃﻮﻳﻼ وﺷﺎﻗﺎ‪.‬‬
‫‪ -٣‬ﺗﺴﺎﻋﺪ اﻟﺪوال اﻟﺠﺎﻫﺰة ﻋﻠﻰ ﺗﺴﻬﻴﻞ ﻋﻤﻠﻴﺔ اﻟﺒﺮﻣﺠﺔ ﻧﻔﺴﻬﺎ‪.‬‬
‫‪ -٤‬ﺗﻮﻓﺮ ﻣﺴﺎﺣﺔ ﻣﻦ اﻟﺬاﻛﺮة اﻟﻤﻄﻠﻮﺑﺔ‪.‬‬
‫‪ -٥‬اﺧﺘﺼﺎر ﻋﻤﻠﻴﺎت زﻣﻦ اﻟﺒﺮﻣﺠﺔ وﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺄﺳﺮع وﻗﺖ ﻣﻤﻜﻦ‪.‬‬

‫وﻟﻠﺘﺪﻟﻴﻞ ﻋﻠﻰ أﻫﻤﻴﺔ اﻟﺪوال ﻓﻲ ﺑﺮﻣﺠﺔ ‪ c++‬ﺧﺬ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ‪:‬‬


‫ﻟﻮ أردﻧﺎ ﻛﺘﺎﺑﺔ ﺧﻮارزﻣﻴﺔ ﻟﺨﻄﻮات ﺻﻨﻊ ﻛﺄس ﻣﻦ اﻟﺸﺎي ﻓﺄﻧﻨﺎ ﻧﻜﺘﺐ ﻣﺎ ﻳﺄﺗﻲ‪:‬‬
‫‪ -١‬ﺿﻊ اﻟﻤﺎء ﻓﻲ ﻏﻼﻳﺔ اﻟﺸﺎي‪.‬‬
‫‪ -٢‬ﺳﺨﻦ اﻟﻤﺎء ﺣﺘﻰ ﻳﻐﻠﻰ‪.‬‬
‫‪ -٣‬أﺿﻒ ﺷﺎﻳﺎ إﻟﻰ اﻟﻤﺎء‪.‬‬
‫‪ -٤‬أﺿﻒ ﺳﻜﺮا إﻟﻴﻪ‪.‬‬
‫‪ -٥‬أﻃﻔﺊ اﻟﻨﺎر‪.‬‬
‫‪ -٦‬ﺻﺐ ﺷﺎﻳﺎ ﻓﻲ ﻛﺄس‪.‬‬

‫اﻓ ﺮض اﻵن أﻧ ﻨﺎ ﻧ ﻮد ﻃﻠ ﺐ ﻛ ﺄس ﻣ ﻦ اﻟﺸ ﺎي ﻣ ﻦ ﻣﻘﻬ ﻰ ﻣﺠ ﺎور ‪ :‬أن ﺧﻄ ﻮات‬


‫اﻟﺨﻮارزﻣﻴﺔ اﻟﺘﻲ ﻧﺤﺘﺎﺟﻬﺎ اﻵن ﻫﻲ ﺧﻄﻮه واﺣﺪه ﻓﻘﻂ وﻫﻲ‪:‬‬
‫‪ -١‬اﺳﺘﺪع ﻛﺄس ﻣﻦ اﻟﺸﺎي‪.‬‬
‫ﺗﺨ ﻴﻞ اﻵن ﻛ ﻢ وﻓ ﺮﻧﺎ ﻣ ﻦ اﻟﺨﻄ ﻮات ﻟ ﻮ اﺳ ﺘﻌﻤﻠﻨﺎ اﻟ ﺪوال اﻟﺠﺎﻫ ﺰة ) أو اﻟﺘ ﻲ ﻳﺠﻬ ﺰﻫﺎ‬
‫اﻟﻤ ﺒﺮﻣﺞ ﻣ ﻦ ﻗ ﺒﻞ ( ﺑ ﺪﻻ ﻣ ﻦ ﺧﻄﻮاﺗﻬ ﺎ اﻟﺘﻔﺼ ﻴﻠﻴﺔ وﺑﺨﺎﺻ ﺔ ﻓ ﻲ ﺑﺮﻧﺎﻣﺞ ﻳﺘﻄﻠﺐ ﺣﺴﺎﺑﺎت‬
‫وﻋﻤﻠﻴﺎت ﻛﺜﻴﺮة وﻛﻢ ﻳﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ ﺳﻬﻼ وواﺿﺤﺎ وﻗﺘﺬاك‪.‬‬

‫وﺗﺄﺧﺬ اﻟﺪاﻟﺔ اﻟﺸﻜﻞ اﻟﻌﺎم اﻟﺘﺎﻟﻲ‪:‬‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫;‪Type-specified function-name (formal parameters‬‬
‫{‬
‫‪function body‬‬
‫}‬

‫وﻗ ﺪ ذﻛ ﺮﻧﺎ ﻣ ﻦ ﻗ ﺒﻞ أن اﻟﺪاﻟ ﺔ ﻗ ﺪ ﺗﻌ ﺘﻤﺪ ﻋﻠ ﻰ ﻣﺘﻐ ﻴﺮ أو اﻛ ﺜﺮ ‪ ،‬وﻗ ﺪ ﻻ ﺗﻌ ﺘﻤﺪ ﻋﻠ ﻰ آي‬


‫ﻣﺘﻐ ﻴﺮ ‪ ،‬وﻓ ﻲ ﻛ ﻼ اﻟﺤﺎﻟﺘﻴ ﻦ ‪ ،‬ﻳﺴ ﺘﻌﻤﻞ ﺑﻌ ﺪ اﺳ ﻢ اﻟﺪاﻟ ﺔ ﻗﻮﺳ ﻴﻦ )( ﺳ ﻮاء ﻛ ﺎن ﺑﻴ ﻨﻬﻤﺎ‬
‫ﻣﺘﻐﻴﺮات أم ﻻ ‪.‬‬

‫ﻣﺜﺎل‪:١‬‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫)(‪max1‬‬
‫{‬
‫;”‪cout<<”hello‬‬
‫}‬
‫)(‪void main‬‬
‫{‬
‫;)( ‪max1‬‬
‫;)(‪max1‬‬
‫;)(‪max1(); max1‬‬
‫}‬

‫واﻟﻨﺎﺗﺞ‪:‬‬
‫‪hello hello hello hello‬‬

‫ﻃ ﺒﻌﺎ ﻟﻠﻌﻠ ﻢ أﻋﺰاﺋ ﻲ أﻧ ﻨﺎ ﻓ ﻲ ﻫ ﺬا اﻟﻔﺼﻞ اﻟﺪوال ﻧﻼﺣﻆ أن ﺑﺪاﻳﺔ ﻗﺮاءة اﻟﻤﺘﺮﺟﻢ ﻟﻠﺒﺮﻧﺎﻣﺞ‬
‫ﻻ ﺗ ﺒﺪأ ﻣ ﻦ أول اﻟ ﺒﺮﻧﺎﻣﺞ ﻛﺎﻟﻤﻌ ﺘﺎد ﻓﺎﻟﻘ ﺮاءة ﺗ ﺒﺪأ ﻣ ﻦ اﻷﺳ ﻔﻞ آي أﻧﻬﺎ ﺗﺒﺪا ﺑﺎﻟﻤﺎﻳﻦ ‪main‬‬
‫ﺳ ﻮاء ﻛ ﺎن ﻓ ﻲ اﻟﻮﺳ ﻂ أو اﻷﺳ ﻔﻞ ﻓﺄﻧﻬ ﺎ ﺗﻘ ﺮاء أوﻻ اﻟ ـ‪ main‬ﺛ ﻢ ﺗﺒﺤ ﺚ ﻣ ﺎ داﺧﻠ ﻪ وﺗ ﺒﺪا‬
‫ﺑﺎﻟﺒﺤ ﺚ ﻋ ﻦ ﻣﻌ ﻨﻰ اﻟﻜﻠﻤ ﺔ )(‪ max1‬ﻓ ﻲ اﻟﺪاﻟ ﺔ )(‪ max1‬ﻓ ﻲ اﻷﻋﻠ ﻰ ﻟ ﺘﺠﺪ أن ﻫ ﻨﺎك‬
‫ﺟﻤﻠﺔ ﻃﺒﺎﻋﺔ وﻫﻜﺬا ﺗﺘﻜﺮر ﺣﺘﻰ ﻳﺘﻢ ﺗﻌﺮﻳﻒ ﻣﺎ ﺑﺪاﺧﻞ اﻟـ‪. main‬‬

‫‪PDF created with pdfFactory Pro 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‬‬
‫{‬
‫;‪y=10; x=0‬‬
‫;)(‪max‬‬
‫;)(‪fax‬‬
‫;‪cout<<x<<y‬‬
‫}‬

‫أﻋﺰاﺋﻲ ﺳﺄﺷﺮح اﻟﻨﺘﺎﺋﺞ ﻗﺒﻞ إﻇﻬﺎرﻫﺎ ﻟﻠﺘﺴﻬﻴﻞ ﻋﻠﻴﻜﻢ ﻓﻲ اﻷﻣﺜﻠﺔ اﻟﻘﺎدﻣﺔ‪:‬‬


‫ﻟﻨﺘﻌﺒﺮ أن ﻫﻨﺎك ﺛﻼث ﻛﻮاﻛﺐ‪:‬‬
‫ﻛﻮاﻛﺐ ‪ main‬اﻟﺮﺋﻴﺴﻲ‬
‫ﻛﻮﻛﺐ ‪fax‬‬
‫ﻛﻮﻛﺐ ‪max‬‬
‫ﻣ ﻦ اﻟﻤﻌ ﺮوف أﻧ ﻨﺎ ﺳ ﻮف ﻧ ﺒﺪا ﺑﻜﻮﻛ ﺐ ‪ main‬ﻟﻨﺸ ﺎﻫﺪ ﻣ ﺎ ﺑﺪاﺧ ﻞ ﻧﺸﺎﻫﺪ أن ﻫﻨﺎك ﻗﻴﻤﺘﻴﻦ‬
‫ﻋﺪدﻳﺘﻴ ﻦ ‪ x y‬ﻟﻜ ﻨﻪ ﻻ ﻳﻌ ﺮﻓﻪ ﻫ ﻞ ﻫ ﻲ أﻋ ﺪاد ﺣﻘﻴﻘ ﻴﺔ أم ﺻ ﺤﻴﺤﻪ ﻟﺬﻟﻚ ﻳﺬﻫﺐ ﻓﻲ اﻷﻋﻠﻰ‬
‫ﻟﻴﺒﺤ ﺚ ﻋ ﻨﻬﺎ ﻓ ﻲ أول اﻟ ﺒﺮﻧﺎﻣﺞ ﻟ ﻴﺠﺪ أﻧﻬ ﺎ أﻋ ﺪاد ﺻ ﺤﻴﺤﺔ ‪ ، int‬ﺛ ﻢ ﺑﻌ ﺪ ذﻟ ﻚ ﻳ ﺮﺟﻊ‬
‫ﻟﻠﻜﻮﻛ ﺐ اﻟﺮﺋﻴﺴ ﻲ ‪ main‬ﻟﻴﺸ ﺎﻫﺪ ﻋ ﺒﺎرة )(‪ max‬ﻓﻴﺬﻫ ﺐ ﻟﻠﺒﺤ ﺚ ﻋ ﻨﻬﺎ ﻓ ﻲ اﻟﻜﻮﻛ ﺐ‬
‫‪ max‬ﻃ ﺒﻌﺎ ﻟ ﻴﺠﺪ ﺑﺪاﺧﻠﻬ ﺎ أن ﻗ ﻴﻤﺔ ‪ x‬ﺗﺴ ﺎوي ‪ x+y‬أي أن ‪ x=0+10‬ﻟﺘﺼ ﺒﺢ ﻗ ﻴﻤﺔ‬
‫‪ x=10‬ﺑﻌ ﺪ ذﻟ ﻚ ﻳﺨ ﺮج ﻣ ﻦ اﻟﻜﻮﻛ ﺐ ‪ max‬وﻳ ﺮﺟﻊ ﻟﻠﻜﻮﻛ ﺐ اﻟﺮﺋﻴﺴ ﻲ ﻟﻴﺸ ﺎﻫﺪ اﻟﻌ ﺒﺎرة‬
‫)(‪ fax‬ﻓﻴﺬﻫ ﺐ ﻟﻠ ﺘﻌﺮف ﻋﻠ ﻴﻬﺎ ﺑﺎﻟﻜﻮﻛ ﺐ )(‪ fax‬وﻳﺸ ﺎﻫﺪ ﺑﺪاﺧﻠﻬ ﺎ ﻋ ﺒﺎرة ‪ max‬ﻟﻴﺬﻫ ﺐ‬
‫ﺑﺬﻟﻚ ﻟﻠﻜﻮﻛﺐ ‪ max‬وﻳﺠﻤﻊ ﻣﻦ ﻣﺮة أﺧﺮى ﻓﺘﺼﺒﺢ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬
‫‪ X=10+10‬وﺑﺬﻟ ﻚ ﺗﺼ ﺒﺢ ﻗ ﻴﻤﺔ ‪ x=20‬ﺑﻌ ﺪ ذﻟ ﻚ ﻳ ﺮﺟﻊ ﻟﻠﻜﻮﻛ ﺐ ‪ fax‬ﻟﻴﺸ ﺎﻫﺪ ﻋ ﺒﺎرة‬
‫)(‪ max‬ﻓﻴﺬﻫﺐ ﻟﻠﻜﻮﻛﺐ ‪ max‬وﻳﺠﻤﻊ ﻣﺮة أﺧﺮى ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬
‫‪ X=20+10‬وﺑﺬﻟﻚ ﺗﺼﺒﺢ ﻗﻴﻤﺔ ‪x=30‬‬
‫ﺛﻢ ﺑﻌﺪﻫﺎ ﻳﺮﺟﻊ ﻟﻠﻜﻮﻛﺐ اﻟﺮﺋﻴﺴﻲ ‪ main‬ﻟﻴﺸﺎﻫﺪ ﺟﻤﻠﺔ اﻟﻄﺒﺎﻋﺔ واﻟﻨﺎﺗﺞ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬
‫‪30 10‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com


‫ﻣﺜﺎل‪:٤‬‬
‫ﻗ ﻢ ﺑﻜ ﺘﺎﺑﺔ ﺑ ﺮﻧﺎﻣﺞ ﻳﻘ ﻮم ﺑﻘ ﺮاءة ﻋ ﺪد ﺻ ﺤﻴﺢ وﻣ ﻦ ﺛ ﻢ ﻃﺒﺎﻋﺔ ﻣﺎ إذا ﻛﺎن اﻟﺮﻗﻢ زوﺟﻲ أم‬
‫ﻓﺮدي ﻣﻦ ﺧﻼل داﻟﺔ أو اﻗﺘﺮان؟‬
‫”‪#include “ stdafx.h‬‬
‫”‪#include “ iostream.h‬‬
‫;‪int x‬‬
‫)(‪check‬‬
‫{‬ ‫اﻃﺒﻊ إذا ﻛﺎن زوﺟﻲ‬
‫)‪if ((x%2)==0‬‬
‫;‪cout<<”even”<<endl‬‬
‫‪else‬‬
‫;‪cout<<”ood”<<endl‬‬
‫}‬ ‫اﻃﺒﻊ إذا ﻛﺎن ﻓﺮدي‬
‫)(‪main‬‬
‫{‬
‫;‪cin>>x‬‬
‫;)( ‪check‬‬ ‫ادﺧﻞ اﻟﻘﻴﻤﺔ ‪ 9‬ﻣﺜﻼ‬
‫;‪return0‬‬
‫}‬

‫ﻃﺒﻌﺎ واﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن ﺣﺴﺒﻤﺎ أدﺧﻠﺖ ﻟﻨﺪﺧﻞ ﻣﺜﻼ اﻟﻘﻴﻤﺔ ‪ ..9‬واﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن‪:‬‬
‫‪ood‬‬
‫ﻻن اﻟﻘﻴﻤﺔ اﻟﻤﺪﺧﻠﺔ ‪ 9‬ﻋﺪد ﻓﺮدي وﻟﻴﺲ زوﺟﻲ ‪.‬‬

‫‪PDF created with pdfFactory Pro 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‬‬ ‫اﻟﻘﻴﻤﺔ ‪ 10‬و‪20‬‬
‫{‬
‫;‪return0‬‬
‫}‬

‫واﻟﻨﺎﺗﺞ ﻃﺒﻌﺎ ﺳﻴﻜﻮن‪:‬‬


‫‪20‬‬

‫ﻻن اﻟﻌﺪد اﻟﺬي أدﺧﻠﻨﺎ ‪ 20‬اﻛﺒﺮ ﻣﻦ اﻟﻌﺪد اﻟﺬي أدﺧﻠﻨﺎ ‪ 10‬ﻓﻘﺎم ﺑﻄﺒﺎﻋﺘﻪ ﺣﺴﺐ اﻟﺸﺮط ‪.‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com‬‬


‫داﻟﺔ ﻓﺘﺢ اﻟﻤﻠﻒ )( ‪fopen‬‬
‫ﻣﺜﺎل‪:١‬‬
‫”‪#include “stdio.h‬‬
‫)(‪main‬‬ ‫ﻧﻜﺘﺐ آي اﺳﻢ ﻟﻠﺘﺨﺰﻳﻦ‬
‫{‬ ‫ﺑﻤﻮﻗﻊ اﻟﺬاﻛﺮة ﻣﺜﻼ ‪f‬‬
‫;‪FILE *f‬‬
‫;)”‪F=fopen(“C:\\matrix.txt”,”w‬‬
‫;)‪Fclose (f‬‬
‫اﻟﺮﻣﺰ ‪w‬ﻻﺳﺘﺤﺪاث‬
‫;‪return0‬‬ ‫ﻧﺺ ﺟﺪﻳﺪ ﻟﻠﻜﺘﺎﺑﺔ‬
‫}‬ ‫اﺳﻢ اﻟﻤﻠﻒ وﻧﺤﺪد ﻣﻮﻗﻌﻪ) ﻣﺴﺎره(‬
‫ﻓﻲ اﻟﻘﺮص ‪C‬‬

‫ﻧﻼﺣ ﻆ أﻧ ﻨﺎ ﻗﻤ ﻨﺎ ﻓ ﻲ اﻟﺴ ﻄﺮ اﻷول أﻋ ﻼه ﺑﺈﻧﺸ ﺎء ﻣﻮﻗ ﻊ ﻟﻠﻤﻠﻒ ﻓﻲ ذاﻛﺮة اﻟﺤﺎﺳﻮب ﻃﺒﻌﺎ‬


‫ﻧﻜﺘﺐ ‪ FILE‬ﺑﺎﻷﺣﺮف اﻷﺑﺠﺪﻳﺔ اﻟﻜﺒﺮى ﺛﻢ ﺑﻌﺪ ذﻟﻚ * وﺑﻌﺪﻫﺎ ﻧﻄﻠﻖ اﻟﻤﺴﻤﻰ ﻣﺜﻼ ‪f‬‬

‫ﺑﻌ ﺪ ذﻟ ﻚ ﻧﻘ ﻮم ﺑﻌﻤ ﻞ اﻟﺪاﻟ ﺔ اﻟﺨ ﺎص ﺑﻔ ﺘﺢ ﻣﻠ ﻒ ﻓ ﻲ ﻗ ﺮص ‪ disk‬وﺗﻌﻮد ) ﺗﻌﻄﻲ ﻗﻴﻤﺔ (‬


‫ﺑﻤﺆﺷﺮ اﻟﻤﻠﻒ اﻟﻤﻌﺮف ﻟﻪ وﻫﻮ ‪ f‬ﻃﺒﻌﺎ‪.‬‬
‫ﺛ ﻢ ﻧﻘ ﻮم ﺑ ﺘﺤﺪﻳﺪ ﻣﻮﻗ ﻊ اﻟﻤﻠ ﻒ اﻟﻤ ﺮاد إﻧﺸ ﺎءه وﻳﺠﺐ اﻟﺘﺤﺬﻳﺮ ﻫﻨﺎ اﻧﻪ ﻳﺠﺐ ﻋﺪم ﻛﺘﺎﺑﺔ اﺳﻢ‬
‫ﻣﻠ ﻒ ﻣ ﻦ ﻣﻠﻔ ﺎت اﻟ ﻨﻈﺎم ‪ system‬ﻟﺘﺠﻨ ﺐ ﻋ ﺪم ﺣ ﺪوث ﺧﻠﻞ وﻣﺸﺎﻛﻞ ﺑﺎﻟﺠﻬﺎز ﻣﺜﻼ ﻧﻜﺘﺐ‬
‫ﻛﻤ ﺎ أﻋ ﻼه ‪ matrix.txt‬وﻫ ﻮ ﻣﻠ ﻒ ﻧﺼ ﻲ وﻳﺠ ﺐ وﺿ ﻊ اﻟﻌﻼﻣﺘﻴﻦ \\ ﺑﻌﺪ ﻛﺘﺎﺑﺔ اﻟﻘﺮص‬
‫‪ C‬وﻻ ﻳﺼ ﺢ وﺿ ﻊ ﻋﻼﻣ ﺔ واﺣ ﺪه \ ﻓﻘ ﻂ ‪ ،‬ﺑﻌ ﺪ ذﻟ ﻚ ﻧﻜﺘﺐ اﻟﺮﻣﺰ ‪ w‬ﻻﺳﺘﺤﺪاث اﻟﻤﻠﻒ‬
‫اﻟﺠﺪﻳ ﺪ ﺛ ﻢ ﺑﻌ ﺪ ذﻟ ﻚ ﻓ ﻲ اﻟﺴ ﻄﺮ اﻷﺧ ﻴﺮ ﻧﻘ ﻮم ﺑﺈﻏﻼﻗ ﻪ ﺑﺎﻟﺪاﻟ ﺔ )‪ fclose (f‬وﻳﺠ ﺐ ﻛ ﺘﺎﺑﺔ‬
‫ﻫﺬه اﻟﺪاﻟﺔ ﻛﻲ ﻳﺼﺒﺢ اﻟﺒﺮﻧﺎﻣﺞ ﺻﺤﻴﺢ ‪.‬‬

‫اﻵن ﻗ ﻢ ﺑﺘﻨﻔ ﻴﺬ اﻟ ﺒﺮﻧﺎﻣﺞ ﺑﻌ ﺪ ذﻟ ﻚ ﻟ ﻦ ﻳﻈﻬ ﺮ ﻟ ﻚ ﺷ ﻲ ﻗ ﺪ ﺗﺴ ﺘﻐﺮب ﻣ ﺎ اﻟﻔ ﺎﺋﺪة اﻵن اذﻫﺐ‬


‫ﻋﺰﻳﺰي إﻟﻰ اﻟﻘﺮص ‪ C‬وﻫﻮ اﻟﺬي ﻗﻤﺖ ﺑﺈﻧﺸﺎء اﻟﻤﻠﻒ ﻓﻴﻪ ) اﻟﻤﺴﺎر أﻋﻼه(‬
‫وﺷﺎﻫﺪ اﻟﻤﻠﻒ اﻟﺠﺪﻳﺪ‬

‫ﻫﺬا ﻫﻮ اﻟﻤﻠﻒ‬
‫اﻟﺠﺪﻳﺪ‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫ﺟﺪول اﻷﻧﻤﺎط ‪ ،‬ﺣﺴﺐ ﻣﺎ ﻗﺮرﺗﻪ ‪ ANSI‬ﻣﺆﺧﺮا‪:‬‬

‫وﻇﻴﻔﺘﻪ‬ ‫رﻣﺰ اﻟﻨﻤﻂ‬


‫ﻟﻔﺘﺢ ﻣﻠﻒ اﻟﻨﺺ ﻟﻠﻘﺮاءة‬ ‫"‪"r‬‬
‫ﻻﺳﺘﺤﺪث ﻣﻠﻒ ﻧﺺ ﻟﻠﻜﺘﺎﺑﺔ‬ ‫"‪"w‬‬
‫ﻟﻺﻟﺤﺎق ﺑﻤﻠﻒ ﻧﺺ‬ ‫"‪"a‬‬
‫ﻟﻔﺘﺢ ﻣﻠﻒ ﺛﻨﺎﺋﻲ اﻟﻘﺮاءة‬ ‫"‪"rb‬‬
‫ﻻﺳﺘﺤﺪاث ﻣﻠﻒ ﺛﻨﺎﺋﻲ اﻟﻜﺘﺎﺑﺔ‬ ‫"‪"wb‬‬
‫ﻟﻺﻟﺤﺎق ﺑﻤﻠﻒ ﺛﻨﺎﺋﻲ‬ ‫"‪"ab‬‬
‫ﻟﻔﺘﺢ ﻣﻠﻒ ﻧﺺ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ‬ ‫"‪"r+‬‬
‫ﻻﺳﺘﺤﺪاث ﻧﺺ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ‬ ‫"‪"w+‬‬
‫ﻟﻔﺘﺢ ﻣﻠﻒ ﻧﺺ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ‬ ‫"‪"a+‬‬
‫ﻟﻔﺘﺢ ﻣﻠﻒ ﺛﻨﺎﺋﻲ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ‬ ‫"‪"r+b‬‬
‫ﻻﺳﺘﺤﺪاث ﻣﻠﻒ ﺛﻨﺎﺋﻲ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ‬ ‫"‪"w+b‬‬
‫ﻟﻔﺘﺢ ﻣﻠﻒ ﺛﻨﺎﺋﻲ ﻟﻠﻘﺮاءة أو اﻟﻜﺘﺎﺑﺔ‬ ‫"‪"a+b‬‬
‫اﻟﺠﺪول ‪٥ -٢‬‬

‫ﻧﻼﺣﻆ أن ﻫﺬا اﻟﺠﺪول ﻳﻤﻜﻦ اﺳﺘﻌﻤﺎﻟﻪ ﻟﻜﻞ ﻣﻦ ﻣﻠﻔﺎت اﻟﻨﺺ واﻟﻤﻠﻔﺎت اﻟﺜﻨﺎﺋﻴﺔ‪.‬‬

‫‪PDF created with pdfFactory Pro 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++‬‬ ‫اﻇﻔﻨﺎ ﻫﺬا اﻟﺴﻄﺮ‬
‫اﻟﺠﺪﻳﺪ ﻟﻠﻄﺒﺎﻋﺔ‬
‫ﺑﺪاﺧﻞ اﻟﻤﻠﻒ‬
‫;‪return 0‬‬
‫}‬

‫ﻻﺣ ﻆ ﻋﺰﻳ ﺰي اﻟﻘ ﺎرئ أﻧ ﻨﺎ ﻗﻤ ﻨﺎ ﺑﻮﺿ ﻊ اﻟﺪاﻟ ﺔ )‪ (fprintf‬وﻫ ﻲ اﻟﺪاﻟ ﺔ اﻟﺨﺎﺻ ﺔ ﺑﺎﻟﻜ ﺘﺎﺑﺔ‬
‫داﺧ ﻞ اﻟﻤﻠﻔ ﺎت ﺑﺈﻣﻜ ﺎﻧﻚ اﻟ ﺮﺟﻮع ﻟﻠﺠ ﺪول ‪ ٥-١‬اﻵن ﻧﻔ ﺬ اﻟ ﺒﺮﻧﺎﻣﺞ وﺑﻌ ﺪ ﺗﻨﻔ ﻴﺬ ارﺟ ﻊ‬
‫ﻟﻠﻤﻠﻒ ﻓﻲ اﻟﻘﺮص ‪ c‬واﻓﺘﺤﻪ ﻟﺘﺸﺎﻫﺪ اﻟﻌﺒﺎرة ‪ welcome to c++‬ﻗﺪ ﻛﺘﺒﺔ ﺑﺪاﺧﻠﻪ‪.‬‬

‫‪PDF created with pdfFactory Pro 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‬‬

‫;‪return 0‬‬ ‫ﻗﻤﻨﺎ ﺑﺈﻏﻼق اﻟﻤﻠﻒ ﻓﻲ‬


‫}‬ ‫ﻫﺬا اﻟﺴﻄﺮ ﻛﻤﺎ ﺗﻼﺣﻆ‬

‫‪PDF created with pdfFactory Pro trial version www.pdffactory.com‬‬


‫اﻟﺪاﻟﺘﺎن )(‪putw() getw‬‬
‫ﺗﻘ ﻮم ﻣﻌﻈ ﻢ ﻣ ﺘﺮﺟﻤﺎت ‪ c++‬ﺑﺎﺳ ﺘﻌﻤﺎل ﻫﺎﺗﻴ ﻦ اﻟﺪاﻟﺘﻴ ﻦ اﻹﺿ ﺎﻓﻴﺘﻴﻦ ﻟ ﺘﻘﻮﻣﺎ ﺑﻌﻤﻠﻴﺘ ﻲ‬
‫ﻗ ﺮاءة وﻛ ﺘﺎﺑﺔ اﻷﻋ ﺪاد اﻟﺼ ﺤﻴﺤﺔ ﻣ ﻦ واﻟ ﻲ ﻣﻠﻔ ﺎت اﻷﻗ ﺮاص ‪ ،‬وﻫﺎﺗ ﺎن اﻟﺪاﻟ ﺘﺎن ﻏ ﻴﺮ‬
‫ﻣﻌﺘﻤﺪﻳ ﻦ ﻣ ﻦ ﻗ ﺒﻞ ﻣﻌﻬ ﺪ اﻟﻤﻘﺎﻳ ﻴﺲ اﻟﻮﻃﻨ ﻲ اﻷﻣﺮﻳﻜ ﻲ ‪ ، ANSI‬وﺗﻌﻤ ﻞ ﻫﺎﺗ ﺎن اﻟﺪاﻟ ﺘﺎن‬
‫ﺗﻤﺎﻣ ﺎ ﻛﺎﻟﺪاﻟﺘﻴ ﻦ )(‪ getc‬و )(‪ putc‬واﻟﻔ ﺮق اﻟﻮﺣ ﻴﺪ اﻧﻬﻤ ﺎ ﺗ ﺘﻌﺎﻣﻼن ﻣ ﻊ ﻋ ﺪد ﺻ ﺤﻴﺢ‬
‫ﺑﺪﻻ ﻣﻦ رﻣﺰي‪.‬‬

‫ﻣﺜﺎل‪:٤‬‬
‫اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻘﻮم ﺑﻜﺘﺎﺑﺔ ) ﻃﺒﺎﻋﺔ( اﻟﻌﺪد اﻟﺼﺤﻴﺢ ‪ 1000‬ﻓﻲ ﻣﻠﻒ اﻟﻘﺮص اﻟﻤﺸﺎر إﻟﻴﻪ‬
‫ﺑﻤﺆﺷﺮ اﻟﻤﻠﻒ ‪: f‬‬
‫;)‪Putw (1000,f‬‬

‫ﻣﺜﺎل‪:٥‬‬
‫اﻟﺪاﻟ ﺔ اﻟﺘﺎﻟ ﻴﺔ ﺗﻘ ﻮم ﺑﻜ ﺘﺎﺑﺔ ﻗ ﻴﻤﺔ اﻟﻤﺘﻐ ﻴﺮ اﻟﺼ ﺤﻴﺢ ‪ x‬ﻓﻲ ﻣﻠﻒ اﻟﻘﺮص اﻟﻤﺸﺎر إﻟﻴﻪ ﺑﻤﺆﺷﺮ‬
‫اﻟﻤﻠﻒ ‪: f‬‬
‫;)‪Putw (x,f‬‬

‫‪PDF created with pdfFactory Pro 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 pdfFactory Pro trial version www.pdffactory.com


‫ﺍﻟﻨﻬﺎﻳﺔ‬


PDF created with pdfFactory Pro trial version www.pdffactory.com

You might also like