0% found this document useful (0 votes)
20 views

) Restrained Words (Main - ) - (-: 7-Up Salim! (!) No#) # (A9 A-A - A A

C++

Uploaded by

ajtajore
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

) Restrained Words (Main - ) - (-: 7-Up Salim! (!) No#) # (A9 A-A - A A

C++

Uploaded by

ajtajore
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 39

‫ﻟﻐﺔ ‪C++‬‬

‫ﺗﺴﻤﯿﺔ اﻟﻤﺘﻐﯿﺮات ﻓﻲ ﻟﻐﺔ ‪C++‬‬


‫‪ -١‬ﯾﺠﺐ أن ﻻ ﺗﻜﻮن أﺳﻤﺎء اﻟﻤﺘﻐﯿﺮات ﻣﻦ‬
‫اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة ) ‪(RESTRAINED WORDS‬‬
‫أو اﻟﻜﻠﻤﺎت اﻟﺘﻲ ﺗﺤﻤﻞ ﻣﻌﻨﺎً ﺧﺎﺻﺎً ﻣﺜﻞ ‪main‬‬
‫‪ -٢‬ﯾﻤﻜﻦ أن ﯾﺤﺘﻮي اﻻﺳﻢ ﻋﻠﻰ أي ﺣﺮف ﻣﻦ اﻟﺤﺮوف اﻷﺑﺠﺪﯾﺔ ﺻﻐﯿﺮة أو ﻛﺒﯿﺮة وﻋﻠﻰ أي رﻗﻢ‬
‫ﻣﻦ اﻷرﻗﺎم ﻛﺬﻟﻚ ﯾﻤﻜﻦ أن ﺗﺤﻮي اﻹﺷﺎرة ) _ (‬

‫‪ -٣‬ﻻ ﯾﺠﻮز أن ﯾﺒﺪأ اﻻﺳﻢ ﺑﺮﻗﻢ‬


‫ﻣﺜﺎل‪:‬‬
‫ﺧﻄﺄ ﺑﺴﺒﺐ اﻟﺒﺪاﯾﺔ ﺑﺮﻗﻢ‬ ‫‪7-up‬‬
‫ﺧﻄﺄ ﺑﺴﺒﺐ اﺳﺘﺨﺪام )!( اﻟﻤﺤﺠﻮزة‬ ‫!‪Salim‬‬
‫ﺧﻄﺄ ﺑﺴﺒﺐ اﺳﺘﺨﺪام ) ‪ ( #‬اﻟﻤﺤﺠﻮزة‬ ‫‪No#‬‬
‫ﻋﺒﺎرة ﺻﺤﯿﺤﺔ‬ ‫‪A9‬‬
‫ﺧﻄﺄ ﺑﺴﺒﺐ إﺷﺎرة اﻟﻄﺮح‬ ‫‪a-a‬‬

‫‪-٤‬إن ھﺬه اﻟﻠﻐﺔ ﺣﺴﺎﺳﺔ ﻟﺤﺎﻟﺔ اﻟﺤﺮف أي اﻟﺤﺮف اﻟﺼﻐﯿﺮ ﻟﯿﺲ ھﻮ اﻟﺤﺮف اﻟﻜﺒﯿﺮ‬
‫ﻓﺈن اﻟﻤﺘﺤﻮل ‪ a‬ﻓﮭﻮ ﻏﯿﺮ اﻟﻤﺘﺤﻮل ‪A‬‬

‫ﻛﯿﻔﯿﺔ ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ ‪C++‬‬


‫ﻟﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﯾﺠﺐ أن ﻧﺴﺘﮭﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﻤﻜﺘﺒﺎت اﻟﺘﻲ ﺗﺪﻋﻢ اﻟﺘﻌﻠﯿﻤﺎت اﻟﻮاﺟﺐ اﺳﺘﺨﺪاﻣﮭﺎ و‬
‫اﻟﻤﻜﺘﺒﺔ اﻟﺘﻲ ﺳﻨﺴﺘﺨﺪﻣﮭﺎ اﻵن ھﻲ ﻣﻜﺘﺒﺔ ‪iostream‬‬
‫ﺑﺤﯿﺚ ﺗﻤﻜﻨﻨﺎ ھﺬه اﻟﻤﻜﺘﺒﺔ ﻣﻦ اﺳﺘﺨﺪام اﻷواﻣﺮ اﻟﺘﺎﻟﯿﺔ‬
‫‪c in‬‬ ‫إدﺧﺎل وﺗﻘﺮأ‬ ‫>>‪cin‬‬
‫‪c out‬‬ ‫<<‪ cout‬إﺧﺮاج و ﺗﻘﺮأ‬
‫‪end line‬‬ ‫ﻧﮭﺎﯾﺔ ﺳﻄﺮ وﺗﻘﺮأ‬ ‫‪endl‬‬

‫‪٢‬‬

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


‫ﺗﺘﻌﺎﻣﻞ ھﺬه ﻟﻐﺔ ‪ C++‬ﻣﻊ ﻋﺪد ﻛﺒﯿﺮ ﻣﻦ اﻟﻤﻜﺘﺒﺎت وﻛﻞ ﻣﻜﺘﺒﺔ ﻟﮭﺎ اﻛﻮاد ﺧﺎﺻﺔ ﺑﮭﺎ و ﯾﻤﻜﻦ اﻟﺘﻌﺎﻣﻞ‬
‫ﻣﻊ ﻋﺪة ﻣﻜﺘﺒﺎت ﻓﻲ آن واﺣﺪ وﺳﻨﺘﺤﺪث ﻋﻦ ﻛﻞ ﻣﻜﺘﺒﺔ ﻋﻨﺪﻣﺎ ﯾﺘﻄﻠﺐ اﻟﺒﺮﻧﺎﻣﺞ ذﻟﻚ‬
‫ﻛﯿﻔﯿﺔ ﻛﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ‬
‫ﯾﻜﺘﺐ أي ﺑﺮﻧﺎﻣﺞ ﻛﻤﺎ ﻓﻲ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬

‫>‪#include <iostream.h‬‬ ‫ﻣﻘﺪﻣﺔ ﻟﺬﻛﺮ اﺳﻢ اﻟﻤﻜﺘﺒﺔ‬


‫) (‪Void main‬‬ ‫ﻣﻘﺪﻣﺔ أﯾﻀﺎ ﺳﻨﺸﺮح ھﺬه اﻷواﻣﺮ ﻓﻲ اﻟﻔﺼﻮل اﻟﻼﺣﻘﺔ‬
‫{‬ ‫ﻗﻮس اﻟﺪﻻﻟﺔ ﻟﺒﺪاﯾﺔ اﻟﺒﺮﻧﺎﻣﺞ‬
‫ﻧﺒﺪأ ﺑﺎﻹﻋﻼم ﻋﻦ اﻟﻤﺘﻐﯿﺮات‬
‫ﯾﻜﺘﺐ ھﻨﺎ اﻟﺒﺮﻧﺎﻣﺞ‬
‫}‬ ‫ﻗﻮس اﻟﺪﻻﻟﺔ ﻋﻠﻰ ﻧﮭﺎﯾﺔ اﻟﺒﺮﻧﺎﻣﺞ‬

‫اﻹﻋﻼم ﻋﻦ اﻟﻤﺘﻐﯿﺮات‬
‫ﻟﯿﺘﻤﻜﻦ اﻟﻤﺴﺘﺨﺪم ﻣﻦ اﺳﺘﺨﺪام اﻟﻤﺘﻐﯿﺮات اﻟﺘﻲ ﯾﺮﯾﺪھﺎ ﯾﺘﻄﻠﺐ اﻟﺒﺮﻧﺎﻣﺞ اﻹﻋﻼم اﻟﻤﺴﺒﻖ ﻋﻦ أﺳﻤﺎء‬
‫ھﺬه اﻟﻤﺘﻐﯿﺮات ﻓﻤﺜﻼً ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﻣﺘﻐﯿﺮﯾﻦ ﻣﻦ ﻧﻮع ) ﻋﺪد ﺻﺤﯿﺢ ( ﻧﻜﺘﺐ ﻣﺎ ﯾﻠﻲ‪:‬‬
‫;‪int a‬‬
‫;‪int b‬‬
‫وﯾﻤﻜﻦ أن ﺗﻜﺘﺐ ﺑﺎﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ; ‪int a,b‬‬

‫وﺳﻨﺴﺘﺨﺪم اﻟﺒﺮﻧﺎﻣﺞ ‪ Turbo‬ﻟﺘﻨﻔﯿﺬ اﻷﻣﺜﻠﮫ ﻛﻤﺎ ھﻮ ﻇﺎھﺮ ﻓﻲ اﻟﺸﻜﻞ ‪:‬‬

‫‪٣‬‬

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


‫وﯾﻜﻔﯿﻚ أن ﺗﻀﻐﻂ اﻟﻘﺎﺋﻤﺔ ‪ File‬وﺗﺨﺘﺎر اﻷﻣﺮ ‪ New‬وﺗﺒﺪأ ﺑﻜﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ وﺗﻀﻐﻂ اﻷﻣﺮ‬
‫‪Run‬‬
‫ﻟﻜﻲ ﺗﻨﻔﺬ اﻟﺒﺮﻧﺎﻣﺞ‬
‫ﻣﺜﺎل‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺎﻟﺘﺼﺮﯾﺢ ﻋﻦ ﻣﺘﺤﻮﻟﯿﻦ ﺻﺤﯿﺤﯿﻦ وﻣﻦ ﺛﻢ ﯾﻘﻮم ﺑﺠﻤﻊ ﻗﯿﻤﺔ اﻷول إﻟﻰ ﻋﺸﺮة‬
‫وإﺳﻨﺎده إﻟﻰ ﻗﯿﻤﺔ اﻟﻤﺘﺤﻮل اﻟﺜﺎﻧﻲ وﻣﻦ ﺛﻢ ﯾﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺒﺎﻋﺔ ﻗﯿﻤﺔ اﻟﻨﺎﺗﺞ ؟‬
‫>‪#include <iostream.h‬‬
‫) ( ‪void main‬‬
‫{‬
‫;‪int vor1‬‬
‫;‪int vor2‬‬
‫;‪cin>> var1‬‬
‫;‪var2 = var1 + 10‬‬
‫;‪cout<< " var1+ 10 is "<<var2‬‬
‫}‬
‫اﻟﻌﺒﺎرة ;‪ cin>> var1‬ﺗﻌﻨﻲ أدﺧﻞ ﻗﯿﻤﺔ اﻟﻤﺘﺤﻮل ‪var1‬‬

‫أﻧﻮاع اﻟﻤﺘﻐﯿﺮات ‪:‬‬


‫اﻟﻤﺘﻐﯿﺮات اﻟﺤﺮﻓﯿﺔ ‪char‬‬

‫‪٤‬‬

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


‫وﺗﺘﻀﻤﻦ اﻟﺤﺮوف ﺑﻜﺎﻓﺔ أﺷﻜﺎﻟﮭﺎ و اﻟﺮﻣﻮز و اﻟﻔﺮاﻏﺎت ) ﻣﺴﺎﻓﺔ ﻓﺎرﻏﺔ ( ﻣﺜﻞ ‪:‬‬
‫;‪char a,b‬‬
‫; '‪a= 'a‬‬
‫;''=‪b‬‬
‫;‪char var1‬‬
‫; '‪var1 = '.‬‬
‫اﻟﻤﺘﻐﯿﺮات اﻟﺼﺤﯿﺤﺔ ‪integer‬‬
‫ﺗﺘﻀﻤﻦ ﻗﯿﻢ ﻋﺪدﯾﺔ ﺻﺤﯿﺤﺔ ﯾﻤﻜﻦ أن ﺗﺄﺧﺬ ﻗﯿﻤﺔ ﺗﺼﻞ إﻟﻰ ‪٣٢٧٦٧‬‬
‫وﺗﻜﺘﺐ ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ‪:‬‬
‫;‪int a‬‬
‫;‪a= 100‬‬

‫اﻟﻤﺘﻐﯿﺮات اﻟﻌﺪدﯾﺔ اﻟﻌﺸﺮﯾﺔ ‪floating point‬‬


‫ﺗﺘﻀﻤﻦ ﺟﻤﯿﻊ اﻷﻋﺪاد اﻟﺤﻘﯿﻘﯿﺔ‬
‫وﺗﻜﺘﺐ ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬
‫;‪float x‬‬
‫;‪x = 5.2‬‬
‫اﻟﻤﺘﻐﯿﺮات اﻟﻌﺪدﯾﺔ اﻟﻌﺸﺮﯾﺔ اﻟﻄﻮﯾﻠﺔ ‪double‬‬
‫ھﻲ ﻧﻔﺲ اﻟﻤﺘﻐﯿﺮات اﻟﻌﺪدﯾﺔ اﻟﻌﺸﺮﯾﺔ وﻟﻜﻦ ﯾﻤﻜﻦ ﺗﻤﺜﯿﻠﮭﺎ إﻟﻰ ﺧﻤﺴﺔ ﻋﺸﺮ ﺧﺎﻧﺔ‬
‫وﺗﻜﺘﺐ ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‪:‬‬
‫;‪double x‬‬

‫ﻣﻼﺣﻈﺎت ھﺎﻣﺔ‬
‫ﻗﺴــــﻤﺔ ﻋﺪد ﺻﺤﯿﺢ ﻋﻠﻰ ﻋﺪد ﺻﺤﯿﺢ ﯾﻜﻮن اﻟـﻨــﺎﺗﺞ ﺻﺤﯿﺢ أﯾﻀﺎً‬
‫ﻗﺴــــﻤﺔ ﻋـﺪد ﺣﻘﯿﻘﻲ ﻋﻠﻰ ﻋﺪد ﺻﺤﯿﺢ ﯾﻜﻮن اﻟـــﻨــﺎﺗﺞ ﺣﻘﯿﻘﻲ أﯾﻀﺎً‬
‫أﻣﺎ ﻗﺴﻤﺔ ﻋﺪد ﺣﻘﯿﻘﻲ ﻋﻠﻰ ﻋﺪد ﺻﺤﯿﺢ ﯾﻜﻮن اﻟــﻨﺎﺗــﺞ ﺣﻘﯿﻘﻲ‬

‫ﻻ ﺗﻮﺟﺪ ﻋﻤﻠﯿﺔ ﻗﺴﻤﺔ ﻋﺪد ﺻﺤﯿﺢ ﻋﻠﻰ ﻋﺪد ﺣﻘﯿﻘﻲ‬

‫ﻣﺜﺎل ‪:‬‬
‫أوﺟﺪ ﻧﺘﯿﺠﺔ اﻟﺘﻤﺮﯾﻦ اﻟﺘﺎﻟﻲ‬
‫>‪#include <iostream.h‬‬
‫) ( ‪void main‬‬
‫{‬
‫; ‪int i , j‬‬

‫‪٥‬‬

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


‫;‪float x,y,z‬‬
‫;‪i = 5/2‬‬
‫; ‪x = 5/2‬‬
‫;)‪y = (float ) (5/2‬‬
‫;‪j = ( float) 5/2‬‬
‫; ‪z = 5. / 2‬‬
‫;‪cout<<i <<endl<< x<<endl << y<<endl << j<<endl << z<<endl‬‬
‫}‬

‫اﻟﺠﻮاب‬
‫‪I=2‬‬ ‫‪x= 2.000‬‬ ‫‪y= 2.000‬‬ ‫‪j=2.5‬‬

‫اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ و اﻷدوات اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﯿﮭﺎ‬


‫‪+‬‬ ‫ﻟﻠﺠﻤﻊ ﺗﺴﺘﺨﺪم‬
‫‪-‬‬ ‫ﻟﻠﻄﺮح‬
‫‪/‬‬ ‫ﻟﻠﻘﺴﻤﺔ‬
‫‪%‬‬ ‫ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ‬
‫*‬ ‫ﻟﻠﻀﺮب‬
‫ﻟﻠﺰﯾﺎدة ﺑﻤﻘﺪار واﺣﺪ ‪++‬‬
‫ﻟﻠﻨﻘﺼﺎن ﺑﻤﻘﺪار واﺣﺪ ‪--‬‬

‫أوﻟﻮﯾﺎت اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ‬


‫‪ -١‬اﻟﺰﯾﺎدة و اﻟﻨﻘﺼﺎن ﻋﻨﺪﻣﺎ ﺗﺄﺗﻲ ﻗﺒﻞ اﻟﻌﺪد‬
‫‪ -٢‬اﻷﻗﻮاس‬
‫‪ -٣‬إﺷﺎرة اﻟﺴﺎﻟﺐ‬
‫‪ -٤‬اﻟﻘﺴﻤﺔ و ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ و اﻟﻀﺮب‬
‫‪ -٥‬اﻟﺠﻤﻊ و اﻟﺼﺮح‬
‫‪ -٦‬اﻟﻤﺴﺎواة‬
‫‪ -٧‬اﻟﺰﯾﺎدة و اﻟﻨﻘﺼﺎن اﻟﻤﺘﺄﺧﺮة ﺑﻌﺪ اﻟﻌﺪد‬
‫ﻣﻼﺣﻈﺔ‬
‫ﻓﻲ ﺣﺎل وﺟﻮد ﻋﻤﻠﯿﺘﯿﻦ ﻟﮭﻤﺎ ﻧﻔﺲ اﻷوﻟﻮﯾﺔ ﻧﺒﺪأ ﺑﺘﻨﻔﯿﺬ اﻟﻌﻤﻠﯿﺔ اﻷﻗﺮب إﻟﻰ اﻟﯿﺴﺎر‪.‬‬

‫‪٦‬‬

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


‫اﻷدوات اﻟﻌﻼﻗﯿﺔ ‪:‬‬
‫وھﻲ ﺣﺴﺐ ھﺬا اﻟﺠﺪول‬

‫<‬ ‫اﻷﻛﺒﺮ‬
‫>‬ ‫اﻷﺻﻐﺮ‬
‫=<‬ ‫أﻛﺒﺮ أو ﯾﺴﺎوي‬
‫أﺻﻐﺮ أو‬
‫=>‬ ‫ﯾﺴﺎوي‬
‫==‬ ‫إن ﻛﺎن ﯾﺴﺎوي‬
‫إن ﻛﺎن ﻻ‬
‫=!‬ ‫ﯾﺴﺎوي‬

‫أﻣﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻸوﻟﻮﯾﺎت ﻓﮭﻲ ﻋﻠﻰ ﻧﻔﺲ اﻟﺘﺮﺗﯿﺐ‬

‫ﻣﺜﺎل‪:‬‬
‫أﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹدﺧﺎل ﻋﺪد ﻣﺎ وﻣﻦ ﺛﻢ ﻃﺒﺎﻋﺔ ﺟﺪول ﺿﺮب ﻟﮫ‬
‫اﻟﺤﻞ‪:‬‬
‫>‪#include < iostream.h‬‬
‫) ( ‪void main‬‬
‫}‬
‫;‪int x‬‬
‫;‪cin>> x‬‬
‫;‪cout<< x <<endl‬‬
‫;‪cout<< x *2<<endl‬‬
‫;‪cout<< x *3<<endl‬‬
‫;‪cout<< x *4<<endl‬‬
‫;‪cout<< x *5<<endl‬‬
‫;‪cout<< x *6<<endl‬‬
‫;‪cout<< x *7<<endl‬‬
‫;‪cout<< x *8<<endl‬‬
‫;‪cout<< x *9<<endl‬‬
‫{‬
‫ﻣﺜﺎل آﺧﺮ‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹدﺧﺎل ﺛﻼﺛﺔ ﻋﻼﻣﺎت ﻟﻄﺎﻟﺐ وﻣﻦ ﺛﻢ ﻃﺒﺎﻋﺔ ﻣﻌﺪل ھﺬه اﻟﻌﻼﻣﺎت‬

‫‪٧‬‬

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


:‫اﻟﺤﻞ‬
#include <iostream.h>
void main ()
{
int a,b,c;
cin>> a >> b >> c ;
cout<<"the averaje is"<< ( a+b+c )/3;
}

‫اﻷدوات اﻟﻤﻨﻄﻘﯿﺔ‬
&& and
|| or
! not

:‫ﻣﺜﺎل‬
Int a=b=3;
A<3 false
A < = 3 true
A>b false
A != b false
A = =b true

: ‫اﻷدوات اﻟﺪﻗﯿﻘﺔ‬
‫ وﺗﺴﺘﻌﻤﻞ ھﺬه اﻷدوات ﻣﻊ اﻟﻤﻌﻄﯿﺎت‬bit ‫ أﻧﮭﺎ ﺗﺴﺘﺨﺪم أدوات دﻗﯿﻘﺔ ﺗﺘﻌﺎﻣﻞ ﻣﻊ‬C++ ‫ﺗﺘﻤﯿﺰ ﻟﻐﻮ‬
.‫ وﻻ ﺗﺴﺘﺨﺪم ﻣﻊ ﻏﯿﺮھﺎ‬Int , char
:‫وھﺬه اﻷدوات ھﻲ‬

‫اﻟﺘﻌﻠﯿﻤﺔ‬ ‫اﻟﺸﺮح‬
~ Not
>> ‫إزاﺣﺔ اﻟﻰ اﻟﯿﺴﺎر‬
<< ‫إزاﺣﺔ اﻟﻰ اﻟﯿﻤﯿﻦ‬
^ Xor
& And
| Or

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


‫وﺗﻜﻮن اﻷوﻟﻮﯾﺔ ﺣﺴﺐ ﺗﺮﺗﯿﺐ اﻟﺠﺪول‪.‬‬

‫ﻣﺜﺎل‪:‬‬
‫إذا ﻛﺎن ﻟﺪﯾﻨﺎ ‪ x‬ﻣﻤﺜﻞ ﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ‬

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

‫اﻟﻤﻄﻠﻮب أوﺟﺪ ﻗﯿﻤﺔ ﻧﻔﻲ ‪ x‬أي ‪~x‬‬

‫اﻟﺠﻮاب‪:‬‬
‫‪1‬‬ ‫‪1‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪0 1‬‬

‫اﻷدوات اﻟﺸﺮﻃﯿﺔ‪:‬‬
‫وھﻲ ﻋﺒﺎرة ﻋﻦ ﺣﻠﻘﺎت ﺗﺘﻢ ﺿﻤﻦ ﺷﺮوط ﯾﺤﺪدھﺎ ﻛﺎﺗﺐ اﻟﺒﺮﻧﺎﻣﺞ‬

‫اﻷدوات اﻟﺸﺮﻃﯿﺔ اﻷوﻟﯿﺔ ‪conditional operator‬‬

‫اﻟﺸﻜﻞ اﻟﻨﻤﻮذﺟﻲ ھﻮ ‪:‬‬


‫‪Expression ? Expression1 : Expression2‬‬
‫‪(a>b)? c : d‬‬
‫إن ﻛﺎن اﻟﺸﺮط ﺻﺤﯿﺢ ﻓﺎﺧﺘﺮ اﻟﻘﯿﻤﺔ ‪c‬‬ ‫وﯾﻜﻮن اﻟﺠﻮاب‬
‫وإن ﻛﺎن اﻟﺸﺮط ﻏﯿﺮ ﺻﺤﯿﺢ ﻓﺎﺧﺘﺮ ‪d‬‬

‫ﻣﺜﺎل ‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﺤﺴﺎب اﻟﻘﯿﻤﺔ اﻟﻤﻄﻠﻘﺔ ﻟﻠﻤﺘﺤﻮل ‪ y‬ﺑﺎﺳﺘﺨﺪام اﻟﻤﻌﺎﻣﻞ اﻟﺸﺮﻃﻲ ) اﻷداة اﻟﺸﺮﻃﯿﺔ (‬
‫و اﻟﻤﻌﺮﻓﺔ ﺑﺎﻟﻌﻼﻗﺔ اﻟﺘﺎﻟﯿﺔ‬
‫‪ y‬ﺗﺴﺎوي ‪ x‬ﺑﺎﻟﻘﯿﻤﺔ اﻟﻤﻄﻠﻘﺔ‬
‫أي أن ‪ y = x‬ﻋﻨﺪﻣﺎ ‪x>0‬‬
‫‪x>0‬‬ ‫‪y= -x‬ﻋﻨﺪﻣﺎ‬ ‫و‬
‫اﻟﺤﻞ‪:‬‬
‫>‪#include < iostream.h‬‬
‫) ( ‪void main‬‬
‫}‬

‫‪٩‬‬

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


int y, x;
cin>> x;
y =(x >= 0)? x :-x;
cout<< y;
{

if – else ‫اﻟﺠﻤﻠﺔ اﻟﺸﺮﻃﯿﺔ‬


: ‫ﺷﻜﻠﮭﺎ اﻟﻌﺎم‬
if(Expression)
Expression1
else
Expression2

‫ﻣﺜﺎل ﺗﻮﺿﯿﺤﻲ‬
if(b < c)
a = b;
else
a = c;
‫ﻣﺜﺎل آﺧﺮ‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹدﺧﺎل ﻃﻮﻟﻚ و ﻃﻮل زﻣﯿﻠﻚ ﺑﺸﺮط‬
‫إن ﻛﺎن ﻃﻮﻟﻚ أﻛﺒﺮ ﻣﻦ ﻃﻮل زﻣﯿﻠﻚ ﻋﻨﺪﺋﺬ ﻗﻢ ﺑﻄﺒﺎﻋﺔ ﻃﻮﻟﻚ وﻣﻦ ﺛﻢ ﻗﻢ ﺑﺤﺴﺎب ﻣﻌﺪل اﻷﻃﻮال‬
‫ﺛﻢ أﻃﺒﻌﮫ وإﻻ ﻓﺄﻃﺒﻊ ﻃﻮل زﻣﯿﻠﻚ وأﻃﺒﻊ ﺿﻌﻒ ﻃﻮﻟﮫ وأﻃﺒﻊ ﻧﺼﻒ ﻃﻮﻟﮫ‬

:‫اﻟﺤﻞ‬
#include <iostream.h>
void main()
{
int z,y;
cout<< "Inter your long"<<endl;
cin>> z ;
cout<< "Inter friend's long"<<endl;
cin>> y;
cout<< "--------------------"<<endl;
if(z>y)
{
cout<< "You longer"<<endl;
cout<< "Your long is "<<z<<endl;
cout<<endl;
cout<< " The average longs are ";

١٠

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


cout<< (z+y)/2;
}
else
{
cout<<" Your friend is longer"<<endl;
cout<<" He's long is "<<y<<endl;
cout<<" y*2 = "<<y*2<<endl;
cout<<" y/2 = "<<y/2;
}
}

:‫ﻣﺜﺎل آﺧﺮ‬
‫ﻧﺎﻗﺶ ﺣﺎﻟﺔ إدﺧﺎل ﻋﺪدﯾﻦ ﺑﻤﺨﺘﻠﻒ اﻟﺤﺎﻻت‬

#include <iostream.h>
void main()
{
int z,y;
cout<< "enter first number"<<endl;
cin>> z;
cout<<"enter scanned number"<<endl;
cin>>y;
if(z>y)
cout<<"the large number is first"<<z<<endl;
else
if(z==y)
cout<<"z=y";
else
cout<<"the large number is scaned";
}

(switch – case) ‫ﺣﻠﻘﺔ‬


‫ﺷﻜﻠﮭﺎ اﻟﻌﺎم‬
switch(Expression)

١١

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


{
case constant 1 : statement 1;
break;
case constant 2 : statement 2;
break;
.
.
.
case constant x : statement x;
break;
default : statement;
break;
}

: ‫ﻣﻼﺣﻈﺔ‬
‫ ﻗﯿﻤﺔ ﺻﺤﯿﺤﺔ‬switch ‫ اﻟﻤﻌﺮف ﻓﻲ‬Expression ‫ﯾﺠﺐ أن ﯾﻜﻮن‬

:‫ﻣﺜﺎل‬
#include <iostream.h>
void main()
{
int x;
cin>> x;
switch (x)
{
case 1:
cout<<" welcome"<<endl;
break;
case 2:
cout<<" hello student"<<endl;
break;
case 3:
cout<<" introdaction to c++"<<endl;
break;
default:
cout<< "bye bye";
}
}
:‫ﻣﺜﺎل آﺧﺮ‬

١٢

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


‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻄﺒﻊ اﺳﻢ اﻟﻜﻮﻛﺐ ﻓﻲ اﻟﻤﺠﻤﻮﻋﺔ اﻟﺸﻤﺴﯿﺔ ﻣﺮﺗﺒﺎً ﻣﻦ اﻷﻗﺮب إﻟﻰ اﻟﺸﻤﺲ ﺑﺤﯿﺚ‬
‫ﻧﺪﺧﻞ إﻟﻰ اﻟﺒﺮﻧﺎﻣﺞ رﻗﻢ اﻟﻜﻮﻛﺐ ﻓﯿﻄﺒﻊ اﻟﺒﺮﻧﺎﻣﺞ اﺳﻢ اﻟﻜﻮﻛﺐ‬

‫اﻟﺤﻞ‬
#include <iostream.h>
void main()
{
int x;
cout<< " inter number a planet "<< endl;
cin>> x;
switch (x)
{
case 1:
cout<<" its a Mercury"<<endl;
break;
case 2:
cout<<" its a Venus"<<endl;
break;
case 3:
cout<<" its a earth"<<endl;
break;
case 4:
cout<<" its a Mars"<<endl;
break;
case 5:
cout<<" its a Jupiter"<<endl;
break;
case 6:
cout<<" its a Saturn"<<endl;
break;
case 7:
cout<<" its a URANUS"<<endl;
break;
case 8:
cout<<" its a NEPTUNE"<<endl;
break;
case 9:
cout<<" its a PLUTO"<<endl;
break;
case 10:
cout<<" its a senda "<<endl;
break;

١٣

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


default:
cout<< "err no plant to resemble this number"<<endl;
break;
}
}

:‫ﻣﺜﺎل آﺧﺮ‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﺤﻮل ﻣﻦ اﻷرﻗﺎم اﻟﻌﺮﺑﯿﺔ اﻷﺻﻞ إﻟﻰ اﻷرﻗﺎم اﻟﻤﻮاﻓﻘﺔ ﻟﮭﺎ ﺑﺎﻟﺮوﻣﺎﻧﯿﺔ‬
:‫اﻟﺤﻞ‬
#include<iostream.h>
main()
{
int x;
cout<<"enter the decimal number:";
cin>> x;
while(x<=12)
{switch(x)
{
case 1:
{cout<<"I"<<endl;
cout<<"enter the decimal number:";}
break;
case 2:
{cout<<"II"<<endl;
cout<<"enter the decimal number:";}
break;
case 3:
{cout<<"III"<<endl;
cout<<"enter the decimal number:";}
break;
case 4:
{cout<<"IV"<<endl;
cout <<"enter the decimal number:";}
break;
case 5:
{cout<<"V"<<endl;
cout<<"enter the decimal number:";}
break;
case 6:
{cout<<"VI"<<endl;
cout<<"enter the decimal number:";}

١٤

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


break;
case 7:
{cout<<"VII"<<endl;
cout<<"enter the decimal number:";}
break;
case 8:
{cout<<"VIII"<<endl;
cout<<"enter the decimal number";}
break;
case 9:
{cout<<"IX"<<endl;
cout<<"enter the decimal number";}
break;
case 10:
{cout<<"XI"<<endl;
cout<<"enter the decimal number";}
break;
case 11:
{cout<<"XII"<<endl;
cout<<"enter the decimal number";}
break;
case 12:
{cout<<"XIII"<<endl;
cout<<"enter the decimal number:";}
break;
default:
cout<<"NOOOO";
break;
}
cin>>x;
}
}

١٥

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


‫ﺣﻠﻘﺔ ‪for‬‬
‫ﺷﻜﻠﮭﺎ اﻟﻌﺎم‬
‫) ‪For ( initial value ; coalition ; increment‬‬
‫;‪Statements‬‬
‫اﻟﺸﺮح ‪ :‬ﻋﺒﺎرة ﻋﻦ ﺷﺮط ﯾﻘﯿﺪ ﺣﺮﻛﺔ ‪ for‬وﻏﺎﻟﺒﺎً ﻣﺎ ﯾﺤﻮي ﻗﯿﻤﺔ ﻧﮭﺎﺋﯿﺔ‬
‫وھﺬا اﻟﺸﺮط ﯾﻜﺘﺐ ﻓﯿﮫ اﻟﻘﯿﻤﺔ اﻻﺑﺘﺪاﺋﯿﺔ و اﻟﻘﯿﻤﺔ اﻟﻨﮭﺎﺋﯿﺔ و ﻗﯿﻤﺔ اﻟﺰﯾﺎدة ﻟﻠﻤﺘﺤﻮل ‪.‬‬

‫ﻣﺜﺎل‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻄﺒﻊ ھﺬه اﻹﺷﺎرة * ﻋﺸﺮ ﻣﺮات ﻣﺘﺘﺎﻟﯿﺔ‬

‫>‪#include<iostream.h‬‬
‫)(‪main‬‬
‫{‬
‫;‪int i‬‬
‫) ‪for ( i = 1 ; i < = 10 ; i + +‬‬
‫;"*" <<‪cout‬‬
‫}‬
‫ﻣﺜﺎل آﺧﺮ‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻷﻋﺪاد اﻟﻔﺮدﯾﺔ ﻣﻦ اﻟﺮﻗﻢ )‪ (١‬إﻟﻰ اﻟﺮﻗﻢ )‪. (١٥‬‬

‫اﻟﺤﻞ‪:‬‬

‫‪١٦‬‬

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


‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int x‬‬
‫)‪for(x=1; x<=15 ; x=x+2‬‬
‫;‪cout<<x<<endl‬‬
‫}‬
‫ﻣﻼﺣﻈﺔ ‪:‬‬
‫ﻋﻨﺪ ﻣﻘﺪار اﻟﺰﯾﺎدة واﺣﺪ واﺣﺪ ﻧﻜﺘﺐ )‪ (i++‬أﻣﺎ ﻋﻨﺪ اﻟﺰﯾﺎدة اﺛﻨﺎن اﺛﻨﺎن ﻧﻜﺘﺐ )‪(I=I+2‬‬
‫وﺑﺈﻣﻜﺎﻧﻨﺎ أن ﻧﻌﺮف اﻟﻤﺘﺤﻮل داﺧﻞ اﻟﺤﻠﻘﺔ أﯾﻀﺎً ﻣﺜﻞ )‪for(int i=1; i=15 ; i=1+2‬‬

‫ﻣﺜﺎل آﺧﺮ‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻄﺒﻊ اﻻرﻗﺎم ‪ 2.3…….10‬ﺑﺸﻜﻞ ﻋﺎﻣﻮدي‬
‫اﻟﺤﻞ ‪:‬‬

‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬

‫)‪for(int x=2; x<=10 ; x++‬‬


‫;‪cout<<x<<endl‬‬
‫}‬
‫ﺣﻠﻘﺎت ‪ for‬اﻟﻤﺘﺪاﺧﻠﺔ‬
‫ﯾﻤﻜﻦ أن ﺗﺄﺗﻲ ﺣﻠﻘﺔ ‪ for‬ﺗﺎﺑﻌﺔ ﻟﺤﻠﻘﺔ ‪ for‬أﺧﺮى أي ﻣﺘﻀﻤﻨﺔ ﺑﺪاﺧﻠﮭﺎ ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‬
‫)‪For ( I =1; I < = 10 ; I ++‬‬
‫)‪For ( j = 2 ; j < = 20 ; j ++‬‬
‫وھﻨﺎ ﺗﻨﻔﺬ اﻟﻌﻤﻠﯿﺔ اﻟﺜﺎﻧﯿﺔ ﺣﺴﺐ اﻟﺤﻠﻘﺔ اﻷوﻟﻰ‬
‫أي ﻛﻞ ﻣﺮة ﺗﻨﻔﺬ ﻓﯿﮭﺎ اﻟﺤﻠﻘﺔ اﻷوﻟﻰ ﺗﻨﻔﺬ اﻟﺤﻠﻘﺔ اﻟﺜﺎﻧﯿﺔ ﻣﻦ اﻟﺒﺪاﯾﺔ إﻟﻰ اﻟﻨﮭﺎﯾﺔ‬

‫ﻣﺜﺎل ‪:‬‬
‫اﻛﺘﺐ ﻧﺘﯿﺠﺔ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ‬
‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int j ,i‬‬
‫)‪for(i=1; i<=3 ; i++‬‬
‫)‪for(j=1; j<=4 ; j++‬‬

‫‪١٧‬‬

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


‫{‬
‫;‪cout<<i‬‬
‫;‪cout<<j‬‬
‫}‬
‫}‬
‫اﻟﺠﻮاب ‪:‬‬
‫‪11121314 21222324 31323334‬‬

‫ﺣﻠﻘﺔ ‪while‬‬
‫ﺷﻜﻠﮭﺎ اﻟﻌﺎم‬
‫)‪while(condition‬‬
‫; ‪Statement‬‬
‫ﻣﻼﺣﻈﺔ ‪:‬‬
‫ﯾﺠﺐ إﺿﺎﻓﺔ ﺗﻌﻠﯿﻤﺔ ﻓﻲ ﻧﮭﺎﯾﺔ ھﺬه اﻟﺤﻠﻘﺔ ﻟﺘﺴﻤﺢ اﻟﻌﻮدة إﻟﻰ ﺑﺪاﯾﺔ اﻟﺒﺮﻧﺎﻣﺞ ﺣﺘﻰ ﯾﺘﻢ ﻓﺤﺺ اﻟﺸﺮط‬
‫ﻣﺮة أﺧﺮى‬

‫ﻣﺜﺎل‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم اﻟﻤﺴﺘﺨﺪم ﺑﺈدﺧﺎل ﻋﺪد ﻣﺎ وﻣﻦ ﺛﻢ ﯾﻔﺤﺺ اﻟﺒﺮﻧﺎﻣﺞ ھﺬا اﻟﻌﺪد ﻟﻤﻌﺮﻓﺔ ﻓﯿﻤﺎ إذا‬
‫ﻛﺎن ھﺬا اﻟﻌﺪد أوﻟﻲ أم ﻻ‬

‫اﻟﺤﻞ‪:‬‬
‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int x,i‬‬
‫;‪cin>> x‬‬
‫;‪i=2‬‬
‫)‪while (x>i‬‬
‫{‬
‫)‪if (x%i==0‬‬
‫{‬
‫‪cout<<"the number in not prime";// make i right any thing‬‬

‫‪١٨‬‬

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


‫;‪i=x+1‬‬
‫}‬
‫‪else‬‬
‫)‪if(x % i !=0‬‬
‫;‪i++‬‬
‫}‬
‫)‪if(x==i‬‬
‫;"‪cout<<"the number is prime‬‬
‫}‬

‫ﻣﺜﺎل آﺧﺮ‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻄﻠﺐ ﻣﻦ اﻟﻤﺴﺘﺨﺪم إدﺧﺎل ﻗﯿﻤﺔ ﻋﺪدﯾﺔ ﻣﺎ‬
‫وﻃﺎﻟﻤﺎ ﻛﺎﻧﺖ ھﺬه اﻟﻘﯿﻤﺔ ﻣﻮﺟﺒﺔ ﻓﯿﻄﺒﻊ اﻟﺒﺮﻧﺎﻣﺞ ھﺬه اﻹﺷﺎرة * ﻋﻠﻰ ﺳﻄﺮ ﺟﺪﯾﺪ ‪.‬‬

‫اﻟﺤﻞ‬
‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int x,i‬‬
‫;‪cin>> x‬‬
‫)‪while (x>0‬‬
‫{‬
‫;‪cout<<"*"<<endl‬‬
‫;‪cin>>x‬‬
‫}‬
‫}‬

‫وھﻨﺎ ﯾﺒﻘﻰ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ اﻟﺤﻠﻘﺔ وﻻ ﯾﺨﺮج ﻣﻨﮭﺎ إﻻ ﺑﻜﺘﺎﺑﺔ ﻗﯿﻤﺔ ﺳﺎﻟﺒﺔ‬


‫أﻣﺎ إن اردﻧﺎ أن ﯾﺨﺮج اﻟﺒﺮﻧﺎﻣﺞ ﺑﻌﺪ أول ﻣﺮة ﻓﻨﻜﺘﺐ ھﺬه اﻟﻌﺒﺎرة‬
‫;‪x=x-x‬‬
‫ﺑﺪﻻً ﻣﻦ اﻟﻌﺒﺎرة‬
‫;‪Cin>>x‬‬

‫‪١٩‬‬

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


‫ﺣﻠﻘﺔ ‪do while‬‬

‫اﻟﺸﻜﻞ اﻟﻌﺎم‬
‫‪Do‬‬
‫{‬
‫‪Statement‬‬
‫;)‪}while (condition‬‬
‫اﻟﺸﺮح‪:‬‬
‫اﺑﻖ ﺿﻤﻦ اﻟﺤﻠﻘﺔ ‪ do‬ﺣﺘﻰ ﯾﺘﻢ ﺗﻨﻔﯿﺬ اﻟﺸﺮط )‪while (condition‬‬

‫ﻣﻼﺣﻈﺔ ھﺎﻣﺔ ﺟﺪًا‬


‫اﻟﻔﺮق اﻟﺠﻮھﺮي ﺑﯿﻦ اﻟﺤﻠﻘﺔ ‪ do while‬و اﻟﺤﻠﻘﺔ ‪while‬‬
‫ھﻮ أن اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ اﻟﺤﻠﻘﺔ ‪ do while‬ﯾﻨﻔﺬ ﻣﺮة واﺣﺪة ﻋﻠﻰ اﻷﻗﻞ‬

‫ﻣﺜﺎل‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺠﻤﻊ اﻷﻋﺪاد اﻟﻤﺪﺧﻠﺔ وﻣﻦ ﺛﻢ ﯾﺘﻮﻗﻒ ﻋﻦ اﻟﻌﻤﻞ وﯾﻘﻮم ﺑﻄﺒﺎﻋﺘﮭﺎ ﺑﻤﺠﺮد إدﺧﺎل‬
‫اﻟﺮﻗﻢ ﺻﻔﺮ‪.‬‬

‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int x, sum‬‬
‫;‪sum = 0‬‬
‫‪do‬‬
‫{‬
‫;‪cin>>x‬‬
‫;‪sum+=x‬‬
‫;)‪}while (x!=0‬‬
‫;‪cout<<"sum of number is ="<<sum‬‬
‫}‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬
‫إن اﻟﻌﺒﺎرة ‪ sum+=x‬ﺗﻜﺎﻓﺊ و ﺗﺴﺎوي اﻟﻌﺒﺎرة ‪sum = sum + x‬‬

‫ﻣﻼﺣﻈﺔ أﺧﺮى‬
‫ﯾﻤﻜﻦ ﻛﺘﺎﺑﺔ ھﺬا اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﺤﻠﻘﺔ ‪ while‬ﻓﻘﻂ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ‬

‫‪٢٠‬‬

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


‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int x, sum‬‬
‫;‪sum = 0‬‬
‫‪do‬‬
‫{‬
‫;‪cin>>x‬‬
‫)‪While ( x!=0‬‬
‫{‬
‫;‪Sum+=x‬‬
‫;‪Cin>>x‬‬
‫}‬

‫ﺣﻠﻘﺔ اﻹﯾﻘﺎف ‪break‬‬


‫وﻇﯿﻔﺘﮭﺎ ‪ :‬إﯾﻘﺎف ﺑﻨﯿﺔ أو ﺣﻠﻘﺔ ﺗﻜﺮار ﻋﻨﺪ ﺗﺤﻘﻖ ﺷﺮط أو ﺷﺮوط ﻣﻌﯿﻨﺔ ‪.‬‬
‫ﻋﻨﺪ ﺗﻨﻔﯿﺬ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﯾﺘﻢ اﻟﻘﻔﺰ إﻟﻰ ﺳﻠﺴﻠﺔ اﻟﺠﻤﻞ اﻟﺘﺎﻟﯿﺔ ﻟﻠﺒﻨﯿﺔ أو ﺣﻠﻘﺔ اﻟﺘﻜﺮار‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫) ‪for(int i=1 ; i<= 100 ; i++‬‬
‫{‬
‫;‪cout<<i‬‬
‫)‪if(I = = 10‬‬
‫;‪break‬‬
‫}‬
‫}‬

‫ﺣﻠﻘﺔ اﻻﺳﺘﻤﺮار ‪continue‬‬


‫ﺗﻌﻤﻞ ھﺬه اﻟﺤﻠﻘﺔ ﻋﻠﻰ ﺗﺠﺎوز ﺗﻨﻔﯿﺬ ﺑﻘﯿﺔ اﻟﺘﻌﻠﯿﻤﺎت ﻓﻲ اﻟﺘﻜﺮار ﺧﻼل اﻟﺪورة اﻟﺤﺎﻟﯿﺔ و اﻻﻧﺘﻘﺎل إﻟﻰ‬
‫اﻟﺪورة اﻟﺘﺎﻟﯿﺔ ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬

‫‪٢١‬‬

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


‫)‪for(int i=1; i<=100; i++‬‬
‫{‬
‫)‪if(i==10‬‬
‫;‪continue‬‬
‫;‪cout<< i <<endl‬‬
‫}‬
‫}‬
‫ﻣﺜﺎل آﺧﺮ‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﻄﺒﺎﻋﺔ ﺟﻤﯿﻊ اﻷرﻗﺎم اﻟﻮاﻗﻌﺔ ﺑﯿﻦ )‪ (١‬إﻟﻰ )‪ (١٠٠‬اﻟﺘﻲ ﺗﻘﺒﻞ اﻟﻘﺴﻤﺔ ﻋﻠﻰ‬
‫اﻷﻋﺪاد اﻟﺘﺎﻟﯿﺔ ) ‪٢‬و‪٤‬و‪. (٦‬‬
‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫)‪for(int i=1; i<=100; i++‬‬
‫{‬
‫)‪if(i%6=0 && i%4=0 && i%2=0‬‬
‫}};‪cout<< i<<endl‬‬
‫ﻃﺮﯾﻘﺔ أﺧﺮى أﺳﮭﻞ‪:‬‬
‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫)‪for(int i=1; i<=100; i++‬‬
‫{‬
‫) ‪if(i%2!=0‬‬
‫;‪continue‬‬
‫) ‪else if(i%4!=0‬‬
‫;‪continue‬‬
‫) ‪else if(i%6!=0‬‬
‫;‪continue‬‬
‫;‪cout<<i<<endl‬‬
‫}‬
‫}‬

‫ﺗﻌﻠﯿﻤﺔ اﻻﻧﺘﻘﺎل ‪goto‬‬


‫ﺗﻔﯿﺪ ھﺬه اﻟﻌﻤﻠﯿﺔ ﻓﻲ اﻻﻧﺘﻘﺎل ﻣﻦ ﺳﻄﺮ ﺑﺮﻣﺠﻲ إﻟﻰ آﺧﺮ ﻣﻊ ﺗﺠﺎوز ﻟﺒﻌﺾ اﻷﺳﻄﺮ اﻟﺒﺮﻣﺠﯿﺔ ﻣﻦ‬
‫أﺟﻞ ﺗﻨﻔﯿﺬ أﻣﺮ ﻣﻌﯿﻦ‪.‬‬
‫ﻣﺜﺎل‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺈدﺧﺎل رﻗﻢ ﻣﺎ ﻓﺈن ﻛﺎن اﻟﺮﻗﻢ أﺻﻐﺮ ﻣﻦ ﻋﺸﺮة ﻓﯿﻄﺒﻊ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻌﺒﺎرة اﻟﺘﺎﻟﯿﺔ‬
‫‪The number is less ten‬‬
‫أﻣﺎ إن ﻛﺎن اﻟﺮﻗﻢ أﻛﺒﺮ أو ﯾﺴﺎوي اﻟﻌﺸﺮة ﻓﯿﻄﺒﻊ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻌﺒﺎرة‬

‫‪٢٢‬‬

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


‫‪The number is equal or beggar ten‬‬

‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int x‬‬
‫;‪cin>>x‬‬
‫)‪if(x<10‬‬
‫;‪goto one‬‬
‫;‪else goto two‬‬
‫;"‪one: cout<<"the number is less ten‬‬
‫};"‪two: cout<<"the number is equal or beggar ten‬‬

‫وﻟﻜﻦ ﻧﺠﺪ أن اﻟﺒﺮﻧﺎﻣﺞ ﯾﻌﻄﻲ اﻟﻌﺒﺎرﺗﯿﻦ ﻣﻌﺎً إن ﻛﺎن اﻟﺮﻗﻢ اﻟﻤﺪﺧﻞ أﺻﻐﺮ ﻣﻦ ﻋﺸﺮة‬
‫وھﺬا اﻟﺨﻄﺄ ﺳﺒﺒﮫ‪:‬‬
‫اﻟﺒﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺘﻨﻔﯿﺬ اﻟﺘﻌﻠﯿﻤﺎت ﺳﻄﺮ ﺳﻄﺮ وﺑﻤﺎ أن اﻟﻌﺒﺎرة اﻟﺜﺎﻧﯿﺔ ﺟﺎءت ﺗﻤﺎﻣﺎً ﺑﻌﺪ اﻟﻌﺒﺎرة اﻷوﻟﻰ‬
‫) ﻓﻲ اﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ ﻟﮭﺎ ( ﻓﻨﻔﺬت ﺑﻄﺒﯿﻌﺔ اﻟﺤﺎل‪.‬‬

‫ﺗﺪرﯾﺒﺎت‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم اﻟﻤﺴﺘﺨﺪم ﺑﮫ ﺑﺈدﺧﺎل ﻋﺪة أﻋﺪاد ‪ / n /‬وﯾﻘﻮم ﺑﺠﻤﻌﮭﺎ ﺑﺤﯿﺚ ﯾﺤﺪد اﻟﻤﺴﺘﺨﺪم‬
‫ﻋﺪد اﻷﻋﺪاد ‪ /n/‬ﻗﺒﻞ إدﺧﺎﻟﮭﺎ ؟‬
‫اﺧﺘﺮ اﻟﻄﺮﯾﻘﺔ اﻟﻤﻨﺎﺳﺒﺔ ﻟﺤﻞ ھﺬا اﻟﻤﺜﺎل؟‬

‫اﻟﺤﻞ اﻟﻄﺮﯾﻘﺔ اﻷوﻟﻰ ﺑﺎﺳﺘﺨﺪام اﻟﺤﻠﻘﺔ ‪do while‬‬

‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int n,x,sum‬‬
‫;‪sum=0‬‬
‫;‪cin>>n‬‬
‫‪do‬‬
‫{‬
‫;‪cin>>x‬‬
‫;‪sum+=x‬‬
‫;‪n--‬‬
‫}‬
‫;)‪while(n!=0‬‬
‫;‪cout<<"the sum of number is "<<sum‬‬

‫‪٢٣‬‬

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


}

while ‫اﻟﻄﺮﯾﻘﺔ اﻟﺜﺎﻧﯿﺔ ﺑﺎﺳﺘﺨﺪام اﻟﺤﻠﻘﺔ‬


#include <iostream.h>
void main()
{
int n,count=1,num,sum=0;
cout<<"enter n";
cin>>n;
while(count<=n)
{
cin>>num;
sum+=num;
count++;
}
cout <<"the sum of number is"<<sum;
}

for ‫اﻟﻄﺮﯾﻘﺔ اﻟﺜﺎﻟﺜﺔ ﺑﺎﺳﺘﺨﺪام اﻟﺤﻠﻘﺔ‬


#include <iostream.h>
void main()
{
int sum=0,x,i,n;
cout<<"enter n"<<endl;
cin>>n;
for(i=1; i<=n ; i++)
{
cout<<"enter namber"<<endl;
cin>>x;
sum=sum+x;
}
cout<<" the sum of number is = ";
cout<<sum<<endl;
}
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻤﺜﻞ آﻟﺔ ﺣﺎﺳﺒﺔ ﺑﺴﯿﻄﺔ ﺗﺪﺧﻞ ﻋﺪدﯾﻦ ﻓﻘﻂ ﺑﺤﯿﺚ ﻧﺨﺘﺎر ﻋﻤﻠﯿﺔ ﻣﻦ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ‬
‫ ﻓﯿﻌﻄﯿﻨﺎ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺠﻮاب‬٢+١ ‫اﻷرﺑﻌﺔ ﻣﺜﻞ أن ﻧﻜﺘﺐ‬
‫وﻧﺎﻗﺶ ﺣﺎﻟﺔ اﻟﻘﺴﻤﺔ ﻋﻠﻰ ﺻﻔﺮ؟‬
#include<iostream.h>
void main()
{
int x,y;

٢٤

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


char r;
cin>> x;
cin>> r;
cin>> y;
switch(r)
{
case '+':
cout<<x+y;
break;
case '-':
cout<<x-y;
break;
case '*':
cout<<x*y;
break;
case '/':
if(y==0)
cout<<"error";
else
cout<<x/y;
break;
default: cout<<" chose the right operate";}}
‫ﻣﺜﺎل ﻣﻤﺎﺛﻞ وﻟﻜﻦ ﺑﺘﻄﻮﯾﺮ أﻛﺜﺮ‬
‫اﻛﺘﺐ ﻧﻔﺲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ وﻟﻜﻦ اﺳﻤﺢ ﻟﻠﺒﺮﻧﺎﻣﺞ ﺑﺄن ﯾﺪﺧﻞ اﻟﻌﻤﻠﯿﺎت أﻛﺜﺮ ﻣﻦ ﻣﺮة‬
#include<iostream.h>
void main()
{
int x,y,n,count;
char r;

cout<<" enter how many play program"<<endl;


cin>> n;
cin>> x;
cin>> r;
cin>> y;

while(n!=0)
{
n--;
switch(r)
{
case '+':

٢٥

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


{
cout<<"the score is = "<<x+y<<endl;
cout<<"----------------------"<<endl;
}
break;
case '-':
{
cout<<"the score is = "<<x-y<<endl;
cout<<"----------------------"<<endl;
}
break;
case '*':
{
cout<<"the score is = "<<x*y<<endl;
cout<<"----------------------"<<endl;
}
break;
case '/':
{
cout<<"the score is = ";
if(y==0)
cout<<"error"<<endl;
else
cout<<x/y<<endl;
cout<<"----------------------"<<endl;
}
break;
default:
{
cout<<" chose the right operate"<<endl;
cout<<"----------------------"<<endl;
}
}
cin>> x;
cin>> r;
cin>> y;
}
}
:‫ﻣﺜﺎل‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‬
1
12
123

٢٦

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


‫‪1234‬‬
‫‪12345‬‬
‫اﻟﺤﻞ‪:‬‬
‫ﺑﺎﺳﺘﺨﺪام ﻋﻼﻗﺔ رﯾﺎﺿﯿﺔ أي ﯾﻜﻮن اﻟﺨﺮج رﻗﻤﺎً وﻟﯿﺲ ﺷﻜﻞ ھﻮ ﻛﺎﻵﺗﻲ‪:‬‬
‫>‪#include<iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int x‬‬
‫;‪x=0‬‬
‫)‪for(int i=1;i<=5 ;i++‬‬

‫{‬
‫;‪x=x*10+i‬‬
‫;‪cout<<x<<endl‬‬
‫}‬
‫}‬

‫أﻣﺎ ﻛﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺮﯾﻘﺔ ﯾﻌﻄﯿﻨﺎ اﻟﺨﺮج ﺷﻜﻼً وﻟﯿﺲ رﻗﻢ ﻓﮭﻮ‪:‬‬
‫>‪#include<iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;' ' =‪char c‬‬
‫)‪for(int i=1;i<=5;i++‬‬
‫{‬
‫)‪for(int j=1;j<=i;j++‬‬
‫;‪cout<<j<<c‬‬
‫;‪cout<<endl‬‬
‫}‬
‫}‬

‫ﻣﻼﺣﻈﺔ ‪ :‬ﯾﻤﻜﻦ أن ﻧﻜﺘﺐ ﻓﻲ اﻟﺴﻄﺮ اﻟﻮاﺣﺪ أﻛﺜﺮ ﻣﻦ أﻣﺮ ﺑﺮﻣﺠﻲ وﻟﻜﻨﺎ ﻓﻀﻠﻨﺎ أن ﻻ ﻧﻔﻌﻞ ذﻟﻚ ﻣﻦ أﺟﻞ‬
‫اﻟﺘﺮﺗﯿﺐ و ﻓﮭﻢ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻊ أﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺬﻟﻚ ﻓﻲ ﺑﻌﺾ اﻷﻣﺜﻠﺔ‬

‫ﻓﯿﺠﻮز ﻣﺜﻼً ﻛﺘﺎﺑﺔ ;‪ cin>>x;cin>>y‬ﻋﻠﻰ ﺳﻄﺮ واﺣﺪ وھﻜﺬا ‪.‬‬

‫ﻣﺜﺎل‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺤﺴﺎب !‪ n‬اﻟﻌﺎﻣﻠﻲ ﻷي رﻗﻢ‬
‫اﻟﺤﻞ ‪:‬‬

‫‪٢٧‬‬

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


while ‫ﺑﺎﺳﺘﺨﺪام اﻟﺤﻠﻘﺔ‬
#include<iostream.h>
void main()
{
int x,y,fact=1;
cout<<" this program is for factorial calculation";

cout<<"\n ------------------------------------------";
cout<<"\n enter x"<<endl ;
cin>>x;
y=1;
cout<<x<<"! = ";
while(y<=x)
{
fact=fact*y;
y++;
}
cout<<fact;
}
‫ ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‬for ‫وﯾﻤﻜﻦ ﻛﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﺳﺘﺨﺪام اﻟﺤﻠﻘﺔ‬
#include<iostream.h>
void main()
{
int i,n,fact=1;
cout<<" this program is for factorial calculation";
cout<<"\n copy right 2006";
cout<<"\n designed by hindawi";
cout<<"\n ------------------------------------------";
cout<<"\n enter x"<<endl ;
cin>>n;
cout<<n<<"! = ";
for(i=1;i<=n;i++)
{
fact=fact*i;
}
cout<<fact;
}

٢٨

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


‫ﺳﻠﺴﻠﺔ ﻓﯿﺒﻮﻧﺎﺷﻲ ‪Fibonacci Series‬‬
‫ھﻲ ﻋﺒﺎرة ﻋﻦ ﺳﻠﺴﻠﺔ أﻋﺪاد ﯾﻮن أي رﻗﻢ ﻓﯿﮭﺎ ﯾﺴﺎوي ﻣﺠﻤﻮع اﻟﺮﻗﻤﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ﻟﮫ و ﯾﻜﻮن اﻟﺮﻗﻢ اﻷول ﻣﻨﮭﺎ و‬
‫اﻟﺜﺎﻧﻲ ﯾﺴﺎوي اﻟﻮاﺣﺪ ‪.‬‬
‫أي ﻛﻤﺎ ﻓﻲ ھﺬه اﻟﺴﻠﺴﻠﺔ‬
‫‪1 1 2 3 5 8 13 21 ……………..n‬‬
‫ﻣﺜﺎل‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺤﺴﺎب اﻟﻌﻨﺎﺻﺮ اﻟﻌﺸﺮة اﻷوﻟﻰ ﻣﻦ ﺳﻠﺴﻠﺔ ﻓﯿﺒﻮﻧﺎﺷﻲ‬
‫>‪#include<iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int a,b,c,i‬‬
‫;' '=‪char s‬‬
‫;‪a=b=1‬‬
‫;‪cout<<a<<s<<b<<s‬‬
‫)‪for(i=3;i<=10;i++‬‬
‫{‬
‫;‪c=a+b‬‬
‫;‪cout<<c<<s‬‬
‫;‪a=b‬‬
‫;‪b=c‬‬
‫}‬

‫‪٢٩‬‬

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


}

:‫ﻣﺜﺎل آﺧﺮ‬
n ‫أوﺟﺪ ﺣﺪود ﻓﯿﺒﻮﻧﺎﺷﻲ ﻣﻦ أﺟﻞ‬
:‫اﻟﺤﻞ‬
#include<iostream.h>
void main()
{
int a,b,c,i,n;
char s=' ';
a=b=1;
cin>>n;
cout<<a<<s<<b<<s;
for(i=3;i<=n;i++)
{
c=a+b;
cout<<c<<s;
a=b;
b=c;
}}

‫ﺗﺪرﯾﺒﺎت‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‬
12345
23451
34512
45123
51234
:‫اﻟﺤﻞ‬
#include<iostream.h>
void main()
{
int a,b,c,d,e;
char s= ' ';
a=1;
b=2;
c=3;
d=4;
e=5;
for(int i=1;i<=5;i++)
{
cout<<a<<s<<b<<s<<c<<s<<d<<s<<e<<endl;

٣٠

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


a=b;
b=c;
c=d;
d=e;
e=a;
e--;
}
}

:‫ﻣﺜﺎل‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻋﻠﻰ اﻟﺸﺎﺷﺔ‬
A.1 A.2 A.3 A.4 A.5
B.1 B.2 B.3 B.4 B.5
C.1 C.2 C.3 C.4 C.5
D.1 D.2 D.3 D.4 D.5
E.1 E.2 E.3 E.4 E.5
‫اﻟﺤﻞ‬
#include<iostream.h>
void main()
{
char A,B,C,D,E,y,s,n;
s='.';
n=' ';
for(y='A';y<='E';y++)
{
cout<<endl;
for(int i=1;i<=5;i++)
cout<<y<<s<<i<<n;
}}

:‫ﻣﺜﺎل‬
‫ ﻟﮭﺬه اﻟﻤﺘﻮاﻟﯿﺔ‬N ‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺤﺴﺎب‬
1 >2>4>8>16>32> >>>>>>>>>>
‫اﻟﺤﻞ‬
#include<iostream.h>
void main()
{
float a,b,n;
char s=' ';
a=b=1;
cin>>n;

٣١

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


‫;‪cout<<a<<s<<b<<s‬‬
‫)‪for(int i=3;i<=n;i++‬‬
‫{‬
‫;‪b=2*a‬‬
‫;‪cout<<b<<s‬‬
‫;‪a=b‬‬
‫}‬
‫}‬

‫‪Arrays‬‬ ‫اﻟﻤﺼﻔﻮﻓﺎت‬
‫اﻟﻤﺼﻔﻮﻓﺔ ھﻲ ﻋﺒﺎرة ﻋﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﺗﺘﺸﺎﺑﮫ ﻓﻲ اﻟﻨﻮع ‪double , int , char , float‬‬
‫وﻟﮭﺎ اﺳﻢ ﻣﺸﺘﺮك ‪.‬‬

‫ﺗﺘﺸﺎﺑﮫ ﻓﻲ اﻟﻨﻮع ‪ :‬ﯾﻌﻨﻲ أن ﺗﻜﻮن اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﺗﺨﺰﻧﮭﺎ اﻟﻤﺼﻔﻮﻓﺔ ﻣﺜﻼً ﻛﻠﮭﺎ أﻋﺪاد ﺻﺤﯿﺤﺔ‪.‬‬
‫ﻟﮭﺎ اﺳﻢ ﻣﺸﺘﺮك ‪ :‬ﯾﻌﺒﺮ ﻋﻦ ھﺬه اﻟﺒﯿﺎﻧﺎت ﺑﺎﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ‬

‫اﻟﺘﺼﺮﯾﺢ ﻋﻦ اﻟﻤﺼﻔﻮﻓﺔ‪:‬‬
‫ھﻨﺎك ﺛﻼﺛﺔ أﺷﯿﺎء ﯾﺠﺐ أن ﺗﺄﺧﺬ ﺑﻌﯿﻦ اﻻﻋﺘﺒﺎر ﻋﻨﺪ اﻟﺘﺼﺮﯾﺢ ﻋﻦ اﻟﻤﺼﻔﻮﻓﺔ‬
‫اﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ ‪ :‬وھﻮ اﺳﻢ ﻧﺨﺘﺎره ﻣﺜﻠﻤﺎ ﻧﺨﺘﺎر اﺳﻢ أي ﻣﺘﻐﯿﺮ‪.‬‬
‫ﻋﺪد اﻟﻌﻨﺎﺻﺮ اﻟﺘﻲ ﺑﺪاﺧﻠﮭﺎ‪.‬‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﯿﮭﺎ‪.‬‬

‫وﯾﻤﻜﻦ أن ﺗﻜﺘﺐ ﻛﻤﺎ ﻓﻲ ھﺬه اﻷﻣﺜﻠﺔ‪:‬‬

‫;}‪Int mark [5] ={1,3,2,4,6‬‬


‫;}‪Int mark [ ] = {5,2,1‬‬

‫‪٣٢‬‬

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


‫;]‪Int mark [5‬‬

‫ﺣﯿﺚ‪:‬‬
‫ﻧﻮع اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﺑﺪاﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ‬ ‫‪int‬‬
‫اﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ‬ ‫‪mark‬‬
‫ﻋﺪد اﻟﻌﻨﺎﺻﺮ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ‬ ‫]‪[5‬‬
‫ﻋﻠﻤﺎً أﻧﮫ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺎت ﯾﺒﺪأ ﺗﺮﻗﯿﻢ اﻟﻌﻨﺎﺻﺮ ) ﺧﺎﻧﺎت اﻟﻤﺼﻔﻮﻓﺔ ( وﻟﯿﺲ ﻗﯿﻤﺘﮭﺎ ﺑﺎﻟﺮﻗﻢ ﺻﻔﺮ‬
‫أي وﺑﺸﻜﻞ أوﺿﺢ‪:‬‬
‫ﻣﺼﻔﻮﻓﺔ ﺗﺘﺄﻟﻒ ﻣﻦ ﺳﺘﺔ ﻋﻨﺎﺻﺮ ﻓﺈﻧﮭﺎ ﺗﺘﻤﺜﻞ ﺑﺎﻟﺸﻜﻞ‬

‫اﻟﻌﻨﺼﺮ ‪٠‬‬ ‫اﻟﻌﻨﺼﺮ ‪١‬‬ ‫اﻟﻌﻨﺼﺮ ‪٢‬‬ ‫اﻟﻌﻨﺼﺮ ‪٣‬‬ ‫اﻟﻌﻨﺼﺮ ‪٤‬‬ ‫اﻟﻌﻨﺼﺮ ‪٥‬‬
‫ﻗﯿﻤﺔ‬ ‫ﻗﯿﻤﺔ‬ ‫ﻗﯿﻤﺔ‬ ‫ﻗﯿﻤﺔ‬ ‫ﻗﯿﻤﺔ‬ ‫ﻗﯿﻤﺔ‬

‫وﻣﻦ ھﺬا اﻟﺸﻜﻞ ﻧﺴﺘﻨﺘﺞ ﺑﺄن اﻟﻤﺼﻔﻮﻓﺔ ﯾﺒﺪأ ﺗﺮﻗﯿﻤﮭﺎ ﻣﻦ اﻟﺼﻔﺮ‬

‫ﻛﯿﻔﯿﺔ إدﺧﺎل ﻋﻨﺎﺻﺮ ﻣﺼﻔﻮﻓﺔ‬


‫ﯾﺘﻢ ذﻛﺮ اﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ ﺛﻢ رﻗﻢ اﻟﻌﻨﺼﺮ اﻟﺬي ﻧﺮﯾﺪ اﻟﺘﻌﺎﻣﻞ ﻣﻌﮫ ﺑﯿﻦ ﻗﻮﺳﯿﻦ ‪.‬‬
‫ﻓﺈذا أردﻧﺎ ﻣﺜﻼً أن ﻧﻀﻊ اﻟﻘﯿﻤﺔ ‪ ٧٥‬ﻓﻲ اﻟﻌﻨﺼﺮ اﻟﺜﺎﻟﺚ ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ ﯾﺘﻢ ذﻟﻚ ﻛﻤﺎ ﯾﻠﻲ‬
‫‪Mark[2] = 75‬‬

‫ﻣﻼﺣﻈﺔ ھﺎﻣﺔ ﺟﺪًا‬


‫اﻟﺒﺪاﯾﺔ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ ﺗﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ ) أي اﻟﻤﺆﺷﺮ ( ﻛﻤﺎ ذﻛﺮﻧﺎ ﺳﺎﺑﻘﺎً‪.‬‬
‫ﻛﻤﺎ ﻓﻲ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‬
‫رﻗﻢ اﻟﻌﻨﺼﺮ‬ ‫‪0‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬

‫ﻗﯿﻤﺔ اﻟﻌﻨﺼﺮ‬ ‫‪454‬‬ ‫‪11‬‬ ‫‪1‬‬ ‫‪258‬‬ ‫‪852‬‬

‫ﻓﮭﺬه اﻟﻤﺼﻔﻮﻓﺔ ﺗﺘﺄﻟﻒ ﻣﻦ ﺧﻤﺴﺔ ﻋﻨﺎﺻﺮ‪.‬‬


‫ﻟﻨﺘﻤﻜﻦ ﻣﻦ إدﺧﺎل ﻗﯿﻤﺔ ﻋﻨﺼﺮ‪-‬ﺣﺮف أو رﻗﻢ ‪ -‬ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﯾﺠﺐ ﻋﻠﯿﻨﺎ ﺗﺤﺪﯾﺪ رﻗﻢ اﻟﻌﻨﺼﺮ ﺣﺘﻰ ﻧﺘﻤﻜﻦ ﻣﻦ‬
‫ذﻟﻚ ﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ‪:‬‬
‫أدﺧﻞ اﻟﻘﯿﻤﺔ ‪ ٣‬ﻓﻲ اﻟﻤﻜﺎن اﻟﺜﺎﻧﻲ ﻟﻠﻤﺼﻔﻮﻓﺔ ]‪mark[4‬‬

‫‪٣٣‬‬

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


‫اﻟﺤﻞ‪:‬‬
‫;]‪cin>>mark[1‬‬
‫ﻃﺒﻌﺎ ﻛﺘﺒﻨﺎ ]‪ [1‬ﻷن اﻟﻌﻨﺼﺮ اﻟﺜﺎﻧﻲ ﻣﻦ اﻟﻤﺼﻔﻮﻓﺔ ﯾﺸﺎر ﻟﮫ ﺑﺎﻟﺮﻗﻢ ‪١‬‬
‫وﻷن اﻟﻌﻨﺼﺮ اﻷول ﻣﻨﮭﺎ ﯾﺄﺧﺬ اﻟﻤﻜﺎن )‪ (0‬ﻛﻤﺎ ﺗﻢ ذﻛﺮه ﺳﺎﺑﻘﺎً‬

‫ﻛﯿﻔﯿﺔ إدﺧﺎل ﻋﻨﺎﺻﺮ ﻣﺼﻔﻮﻓﺔ ﺑﺸﻜﻞ ﻣﺘﺘﺎﻟﻲ‪:‬‬

‫ﻹدﺧﺎل ﻋﻨﺎﺻﺮ ﻣﺼﻔﻮﻓﺔ اﺳﻤﮭﺎ ‪ mark‬ﺗﺘﺄﻟﻒ ﻣﻦ ﺧﻤﺲ ﻋﻨﺎﺻﺮ ﻧﺘﺒﻊ ﺣﻠﻘﺔ ‪ for‬ﻛﻤﺎ ﯾﻠﻲ‪:‬‬

‫)‪for(int i=0 ; i<5 ; i++‬‬


‫{‬
‫; "‪cout<<" please enter array elements‬‬
‫; ]‪cin>> mark [i‬‬
‫}‬

‫* ﻋﻠﻤﺎً أن رﻗﻢ اﻟﻌﻨﺼﺮ) وﻟﯿﺲ ﻗﯿﻤﺘﮫ( ﯾﺒﺪأ ﻣﻦ اﻟﺮﻗﻢ ﺻﻔـﺮ وﻟﮭﺬا ﻛﺘﺒﻨﺎ ‪i<5‬‬
‫ﻓﺎﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﻲ ﺗﺘﺄﻟﻒ ﻣﻦ ﺧﻤﺴﺔ ﻋﻨﺎﺻﺮ ﯾﻜﻮن رﻗﻢ اﻟﻌﻨﺼﺮ اﻷﺧﯿﺮ – وﻟﯿﺲ ﻗﯿﻤﺘﮫ – ﺗﻜﻮن أرﺑﻌﺔ‬

‫ﺗﻨﻘﺴﻢ اﻟﻤﺼﻔﻮﻓﺔ إﻟﻰ ﻧﻮﻋﯿﻦ ‪:‬‬

‫‪ -١‬ﻣﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ‬


‫‪ -٢‬ﻣﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﯾﻦ‬

‫وﺗﺴﻤﻰ اﻟﻤﺼﻔﻮﻓﺔ }‪ A{ 2,5,4,6‬ﻣﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ ﻷﻧﮭﺎ ﺗﺘﻜﻮن ﻣﻦ ﺻﻒ واﺣﺪ و إن ﻛﺎﻧﺖ‬
‫ﺗﺘﻜﻮن ﻣﻦ ﻋﺎﻣﻮد واﺣﺪ ﻓﺘﺴﻤﻰ ﻧﻔﺲ اﻻﺳﻢ ‪.‬‬
‫أﻣﺎ اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪﯾﻦ ﻓﮭﻲ اﻟﺘﻲ ﺗﺘﺄﻟﻒ ﻣﻦ أﻛﺜﺮ ﻣﻦ ﺻﻒ أو أﻛﺜﺮ ﻣﻦ ﻋﺎﻣﻮد‪.‬‬

‫ﻣﻼﺣﻈﺔ ‪:‬‬
‫ﻗﺪ ﻧﺤﺘﺎج ﻓﻲ اﻟﻤﺼﻔﻮﻓﺎت أو ﻏﯿﺮھﺎ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ ﻗﯿﻤﺔ ﺛﺎﺑﺘﺔ ) ﻣﺜﻼً ‪ ( ١٠‬ﻟﻤﺘﺤﻮل ﻣﺎ) ‪ ( max‬ﻻ ﺗﺘﻐﯿﺮ أﺑﺪا‬
‫أي ﻣﺘﺤﻮل ﺛﺎﺑﺖ اﻟﻘﯿﻤﺔً ﻓﺈﻧﻨﺎ ﻧﻌﺮف ھﺬا اﻟﻤﺘﺤﻮل ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ‬
‫‪#define max 10‬‬
‫ﻓﻔﻲ ھﺬه اﻟﺘﻌﻠﯿﻤﺔ ﻓﺈن اﻟﻤﺘﺤﻮل ‪ max‬أﺧﺬ اﻟﻘﯿﻤﺔ )‪ (١٠‬ﻃﻮال ﻓﺘﺮة ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ‬
‫وﻻ ﯾﻤﻜﻦ أن ﯾﺪﺧﻞ ‪ max‬ﻓﻲ أي ﻣﻦ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ أو اﻹﺳﻨﺎد‪.‬‬

‫ﻣﺜﺎل ‪:‬اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺈدﺧﺎل ﻣﺮﺗﺒﺎت ﻋﺸﺮة ﻣﻮﻇﻔﯿﻦ ﺛﻢ ﯾﻘﻮم ﺑﺤﺴﺎب وﻃﺒﺎﻋﺔ ﻣﺘﻮﺳﻂ ھﺬه اﻟﺮواﺗﺐ‬
‫>‪#include<iostream.h‬‬
‫‪#define max 10‬‬ ‫ﺗﻌﺮﯾﻒ اﻟﻤﺘﺤﻮل اﻟﺜﺎﺑﺖ‬
‫)(‪void main‬‬

‫‪٣٤‬‬

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


‫{‬
‫;]‪float salary[max‬‬
‫;‪float average ,sum‬‬
‫;‪int count‬‬
‫;‪sum=0.0‬‬
‫)‪for(count=0;count<max;count++‬‬ ‫ﻛﯿﻔﯿﺔ اﺳﺘﺨﺪام اﻟﻤﺘﺤﻮل اﻟﺜﺎﺑﺖ ﺿﻤﻦ ھﺬه اﻟﺤﻠﻘﺔ‬
‫{‬
‫;"‪cout<<"please enter salary for employee\n‬‬
‫;]‪cin>>salary[count‬‬
‫;]‪sum=sum+salary[count‬‬
‫}‬
‫;‪average = sum / max‬‬ ‫اﺳﺘﺨﺪام اﻟﻤﺘﺤﻮل اﻟﺜﺎﺑﺖ ﺿﻤﻦ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ‬
‫;‪cout<<"\n salary average is = "<<average‬‬
‫}‬

‫ﻣﻼﺣﻈﺔ‬
‫* ﺗﻌﺮﻓﻨﺎ ﺳﺎﺑﻘﺎ ﻋﻠﻰ ﻧﻮع اﻟﺒﯿﺎﻧﺎت ‪ char‬ﺣﯿﺚ ﯾﻤﻜﻦ أن ﯾﻀﻢ ﺣﺮف واﺣﺪ ﻓﻘﻂ ﻟﻜﻦ ﻓﻲ ﺣﺎل أردﻧﺎ إدﺧﺎل‬
‫ﺳﻠﺴﻠﺔ ﻣﻦ اﻷﺣﺮف ﻋﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل ‪:‬‬
‫ﻧﺮﯾﺪ إدﺧﺎل اﺳﻢ ﻣﻮﻇﻒ أو ﻋﻨﻮان ﻋﻨﺪھﺎ ﺳﻨﻘﻮم ﺑﺎﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺳﻠﺴﻠﺔ ﻣﻦ اﻷﺣﺮف أي ‪ :‬ﺳﯿﺘﻢ إدﺧﺎل ﻣﺠﻤﻮﻋﺔ‬
‫ﻣﻦ اﻷﺣﺮف‪.‬‬
‫وھﺬا ﻣﺎ ﯾﺸﺒﮫ ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻷﺣﺮف و ﯾﺴﻤﻰ ھﺬا اﻟﻨﻮع ﻣﻦ أﺳﻠﻮب اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت ﺑـ ‪string‬‬

‫* ﯾﻤﻜﻦ إدﺧﺎل ﺟﻤﯿﻊ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ اﻻﺳﻤﯿﺔ ‪ char‬دﻓﻌﺔ واﺣﺪة ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬


‫; ] [ ‪cin >> mark‬‬
‫وﻧﻜﺘﺐ اﻻﺳﻢ اﻟﻤﺮاد ادﺧﺎﻟﮫ ﺑﺎﻟﻜﺎﻣﻞ ﺛﻢ ﻧﻀﻐﻂ إﻧﺘﺮ‬

‫ﺑﯿﻨﻤﺎ ﻟﯿﺲ ﺑﺎﻹﻣﻜﺎن ﻓﻌﻞ ذﻟﻚ ﻣﻊ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺮﻗﻤﯿﺔ ‪ int float‬إﻻ رﻗﻢ رﻗﻢ ‪.‬‬
‫ﻣﺜﺎل‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺈدﺧﺎل أﺳﻤﺎء اﻟﻤﻮﻇﻔﯿﻦ و ﻋﻨﺎوﯾﻨﮭﻢ‬
‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;]‪char name[20‬‬
‫;]‪char address[20‬‬
‫)‪for(int i=0;i<13;i++‬‬
‫{‬
‫;‪cin>>name‬‬
‫;‪cin>>address‬‬
‫;‪cout<<name‬‬
‫;‪cout<<address‬‬
‫}‬
‫}‬

‫‪٣٥‬‬

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


‫ﻛﻤﺎ ﻧﻼﺣﻆ أﻧﻨﺎ ﻓﻲ ھﺬا اﻟﻤﺜﺎل أدﺧﻠﻨﺎ اﺳﻢ اﻟﻤﻮﻇﻒ ﻛﺎﻣﻼً و ﻋﻨﻮاﻧﮫ أﯾﻀﺎً ﻷن اﺳﻢ اﻟﻤﻮﻇﻒ ھﻮ ﻋﺒﺎرة ﻋﻦ‬
‫ﻣﺼﻔﻮﻓﺔ ﺣﺮﻓﯿﺔ وﻛﺬﻟﻚ اﻟﻌﻨﻮان‬

‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻣﻦ أﺟﻞ إﯾﺠﺎد ﻣﺠﻤﻮع ﻋﻨﺎﺻﺮ ﻣﺼﻔﻮﻓﺔ أﺣﺎدﯾﺔ اﻟﺒﻌﺪ ﻋﺪد ﻋﻨﺎﺻﺮھﺎ ﺧﻤﺴﺔ ﻋﻨﺎﺻﺮ‬
‫>‪#include<iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;]‪float mark[5‬‬
‫;‪int sum=0‬‬
‫)‪for(int i=0;i<5;i++‬‬
‫{‬
‫;]‪cin>>mark[i‬‬
‫;]‪sum=sum+mark[i‬‬
‫}‬
‫;‪cout<<"sum = "<<sum‬‬
‫}‬
‫ﺷﺮح اﻟﺒﺮﻧﺎﻣﺞ‬
‫ﻟﻘﺪ أدﺧﻠﻨﺎ ھﻨﺎ اﻟﻌﻨﺎﺻﺮ رﻗﻢ رﻗﻢ و اﻟﺬي ﻗﺎم ﺑﺬﻟﻚ ﺣﻠﻘﺔ ‪FOR‬‬
‫وﻣﻦ ﺛﻢ ﻗﻤﻨﺎ ﺑﺠﻤﻊ ﻗﯿﻢ ﻋﻨﺎﺻﺮ ھﺬه اﻟﻤﺼﻔﻮﻓﺔ‬

‫ﻣﻼﺣﻈﺔ‬
‫ﻟﯿﺲ ﺑﺎﻹﻣﻜﺎن ﺗﺤﺪﯾﺪ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﺑﻤﺘﺤﻮل‬
‫ﻓﺈﻧﮫ ﻣﻦ اﻟﻮاﺟﺐ ﺗﺤﺪﯾﺪ ﻋﺪد ﻋﻨﺎﺻﺮھﺎ وﻟﺬﻟﻚ ﻓﺈﻧﮫ ﻣﻦ اﻟﺨﻄﺄ ﻛﺘﺎﺑﺔ‬
‫]‪float mark[x‬‬
‫‪cin>>x‬‬
‫ﻷﻧﮫ ﻻ ﯾﺠﻮز ﺗﺤﺪﯾﺪ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﺑﻤﺘﺤﻮل‬

‫ﻣﻼﺣﻈﺔ‬
‫اﻟﻌﺒﺎرة ‪ i<5‬وﻟﻢ ﻧﻜﺘﺐ ‪ i<=5‬ﻷن ﻋﻨﺎﺻﺮ‬ ‫ﻟﻘﺪ ﻛﺘﺒﻨﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ )‪for(int i=0;i<5;i++‬‬
‫اﻟﻤﺼﻔﻮﻓﺔ ﺗﺒﺪأ ﻣﻦ اﻟﺼﻔﺮ‬

‫ﻣﺜﺎل آﺧﺮ‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺈدﺧﺎل ﺳﻠﺴﻠﺔ ﻣﺆﻟﻔﺔ ﻣﻦ ﻋﺸﺮة رﻣﻮز ﺛﻢ ﯾﻘﻮم ﺑﻄﺒﺎﻋﺘﮭﺎ وﻓﻖ ﺗﺮﺗﯿﺐ اﻹدﺧﺎل ﺛﻢ ﺑﻌﻜﺴﮫ‬
‫>‪#include<iostream.h‬‬
‫)(‪void main‬‬
‫{‬
‫;]‪char s[10‬‬ ‫ﺣﺪدﻧﺎ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﺑﺄﻧﮭﺎ ﻋﺸﺮة ﻋﻨﺎﺻﺮ‬
‫)‪for (int i=0;i<10;i++‬‬ ‫ﺣﻠﻘﺔ ﻹدﺧﺎل اﻟﻌﻨﺎﺻﺮ‬
‫;]‪cin>>s[i‬‬

‫‪٣٦‬‬

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


‫)‪for(i=0;i<10;i++‬‬ ‫ﺣﻠﻘﺔ اﻹﺧﺮاج اﻟﺘﺼﺎﻋﺪﯾﺔ‬
‫;]‪cout<<s[i‬‬
‫)‪for(i=9;i>=0;i--‬‬ ‫ﺣﻠﻘﺔ اﻹﺧﺮاج اﻟﺘﻨﺎزﻟﯿﺔ‬
‫;]‪cout<<s[i‬‬
‫}‬
‫ﻣﻼﺣﻈﺔ ھﺎﻣﺔ‬
‫* ﻓﻲ ھﺬا اﻟﻤﺜﺎل أدﺧﻠﻨﺎ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﺣﺮف ﺣﺮف‬
‫* ﻟﻘﺪ ﻛﺘﺒﻨﺎ ﺣﻠﻘﺔ اﻹﺧﺮاج اﻟﺘﻨﺎزﻟﯿﺔ ﺑﮭﺬا اﻟﺸﻜﻞ‬
‫)‪for(i=9;i>=0;i--‬‬
‫ﻋﻨﺪﻣﺎ ‪ i=9‬ﺗﻨﻌﻲ ﺑﺄﻧﻨﺎ ﻧﺮﯾﺪ اﻟﻌﻨﺼﺮ اﻟﻌﺎﺷﺮ‬ ‫ﻟﻸﺳﺒﺎب اﻟﺘﺎﻟﯿﺔ‬
‫ﻋﻨﺪﻣﺎ ‪ i=0‬ﻧﻌﻨﻲ ﺑﺄﻧﻨﺎ ﻧﺮﯾﺪ اﻟﻌﻨﺼﺮ اﻷول‬

‫ﺗﻤﺎرﯾﻦ ﺣﻮل اﻟﻤﺼﻔﻮﻓﺔ أﺣﺎدﯾﺔ اﻟﺒﻌﺪ‬


‫* اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾُﻤَﻜّﻦ اﻟﻤﺴﺘﺨﺪم ﻣﻦ إدﺧﺎل ﻋﺸﺮة رﻣﻮز ﺛﻢ ﯾﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺒﺎﻋﺔ ﻋﺪد ﻣﺮات ﺗﻜﺮار اﻟﺤﺮﻓﯿﻦ‬
‫‪ A a‬ﻓﻲ ھﺬه اﻟﺴﻠﺴﻠﺔ‬

‫>‪#include<iostream.h‬‬
‫‪#define n 10‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int count=0‬‬
‫;]‪char s[n‬‬
‫)‪for(int i=0;i<n;i++‬‬
‫{‬
‫;]‪cin>> s[i‬‬
‫)'‪if(s[i]=='A'||s[i]=='a‬‬
‫;‪count ++‬‬

‫}‬
‫;‪cout<<count‬‬
‫}‬

‫ﺷﺮح اﻟﺒﺮﻧﺎﻣﺞ‬

‫ﻛﻤﺎ ﺗﻼﺣﻆ‬
‫ﺑﻌﺪ أﻣﺮ اﻻدﺧﺎل ﻛﺘﺒﻨﺎ اﻟﻜﻮد اﻟﺘﺎﻟﻲ‬
‫)'‪if(s[i]=='A'||s[i]=='a‬‬

‫ﻣﺎ ﻣﻌﻨﻰ ھﺬه اﻟﺤﻠﻘﺔ ؟‬


‫إن ﻛﺎن اﻟﻌﻨﺼﺮ اﻟﻤﺪﺧﻞ ﯾﺴﺎوي اﻟﻘﯿﻤﺔ ‪ A‬أو ‪ or‬ﯾﺴﺎوي اﻟﻘﯿﻤﺔ ‪ a‬ﻧﻔﺬ اﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ‬

‫‪٣٧‬‬

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


‫واﻟﺬي ھﻮ ‪ count++‬أي زﯾﺪ اﻟﻌﺪاد ﺑﻤﻘﺪار واﺣﺪ‬
‫ﻓﻜﻠﻤﺎ ﺗﻨﻔﺬ ھﺬا اﻟﺸﺮط زادت ﻗﯿﻤﺔ اﻟﻌﺪاد ﺣﺘﻰ ﺗﻤﺎم إدﺧﺎل ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﻓﺈن اﻟﺒﺮﻧﺎﻣﺞ ﯾﻄﺒﻊ ﻗﯿﻤﺔ اﻟﻌﺪاد‪.‬‬
‫ﻣﺜﺎل‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾُﻤَﻜﻦ اﻟﻤﺴﺘﺨﺪم ﺑﺈدﺧﺎل ﻣﺼﻔﻮﻓﺔ أﺣﺎدﯾﺔ اﻟﺒﻌﺪ ﻣﺆﻟﻔﺔ ﻣﻦ ﻋﺸﺮة أرﻗﺎم‬
‫وﻣﻦ ﺛﻢ ﯾﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺒﺎﻋﺔ اﻷرﻗﺎم اﻟﺘﻲ ھﻲ أﻛﺒﺮ ﻣﻦ ﺧﻤﺴﺔ‬
‫ﻣﻊ ﻃﺒﺎﻋﺔ أﻣﺎﻛﻦ ﺗﻮاﺟﺪھﺎ ﺿﻤﻦ اﻟﻤﺼﻔﻮﻓﺔ‬

‫اﻟﺤﻞ‪:‬‬

‫>‪#include<iostream.h‬‬
‫‪#define n 10‬‬
‫)(‪void main‬‬
‫{‬
‫;]‪int i,s[n‬‬
‫)‪for(i=0;i<n;i++‬‬
‫{‬
‫;]‪cin>>s[i‬‬
‫)‪if(s[i]>5‬‬
‫{‬
‫;‪cout<<"this number is begger of 5"<<endl‬‬
‫"<<‪cout<<i‬‬ ‫;‪"<<s[i]<<endl‬‬
‫}‬
‫}}‬
‫ﺷﺮح اﻟﺒﺮﻧﺎﻣﺞ‬
‫إن اﻟﻘﯿﻤﺔ ‪ I‬ﺗﻤﺜﻞ ﻣﻜﺎن ﺗﻮاﺟﺪ اﻟﻌﻨﺼﺮ داﺧﻞ اﻟﻤﺼﻔﻮﻓﺔ‬
‫أﻣﺎ اﻟﻘﯿﻤﺔ ]‪ S[I‬ﻓﺈﻧﮭﺎ ﺗﺸﻜﻞ ﻗﯿﻤﺔ ھﺬا اﻟﻌﻨﺼﺮ‬

‫اﻟﻤﺼﻔﻮﻓﺎت ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ‬


‫ھﻲ اﻟﻤﺼﻔﻮﻓﺎت اﻟﺘﻲ ﺗﺘﺄﻟﻒ ﻣﻦ أﻛﺜﺮ ﻣﻦ ﻋﺎﻣﻮد أو أﻛﺜﺮ ﻣﻦ ﺳﻄﺮ‬
‫ﻣﺜﺎل ﻋﻠﯿﮭﺎ‪:‬‬

‫ﻓﻔﻲ ھﺬا اﻟﻤﺜﺎل ﺗﺘﺄﻟﻒ ھﺬه اﻟﻤﺼﻔﻮﻓﺔ ﻣﻦ ﻋﺎﻣﻮدﯾﻦ و ﺛﻼﺛﺔ أﺳﻄﺮ‬


‫وﻹدﺧﺎل ھﺬه اﻟﻤﺼﻔﻮﻓﺔ ﯾﺠﺐ ﻋﻠﯿﻨﺎ ﺑﺪاﯾﺔ أن ﻧﻌﺮف اﻟﺒﺮﻧﺎﻣﺞ ﺑﺴﻄﺮ ﺛﻢ ﺑﻌﺎﻣﻮد اﻟﻌﻨﺼﺮ اﻟﻤﺮاد إدﺧﺎﻟﮫ‬
‫وﺗﻜﻮن ﺑﺎﻟﻄﺮﯾﻘﺔ اﻟﺘﺎﻟﯿﺔ‪:‬‬
‫;]‪cin>> a[i] [j‬‬
‫ﺣﯿﺚ ‪ a :‬اﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ‬

‫‪٣٨‬‬

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


‫‪ i‬رﻗﻢ اﻟﺴﻄﺮ‬
‫‪ j‬رﻗﻢ اﻟﻌﺎﻣﻮد‬
‫وﯾﻜﻮن ﺗﺮﻗﯿﻢ اﻷﺳﻄﺮ و اﻷﻋﻤﺪة ﺣﺴﺐ اﻟﺸﻜﻞ‪:‬‬

‫‪ a[1][0]=1‬أن اﻟﻘﯿﻤﺔ ) ‪ ( ١‬ﻣﻮﺟﻮدة ﻓﻲ اﻟﺴﻄﺮ ‪ 1‬و اﻟﻌﺎﻣﻮد ‪ 0‬ﻛﻤﺎ ﻓﻲ اﻟﺸﻜﻞ‬ ‫ﺣﯿﺚ ﯾﻌﺒﺮ اﻟﻜﻮد‬
‫اﻟﺴﺎﺑﻖ‬
‫وﻛﻤﺎ أﻧﻨﺎ ﻗﺪ اﺳﺘﺨﺪﻣﻨﺎ ﺣﻠﻘﺔ ‪ for‬ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ أﺣﺎدﯾﺔ اﻟﺒﻌﺪ ﻓﺈﻧﻨﺎ ﺳﻨﺴﺘﺨﺪم ھﻨﺎ ﺣﻠﻘﺘﻲ ‪ for‬ﻹدﺧﺎل اﻟﻤﺼﻔﻮﻓﺔ‬
‫ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ ﻛﺎﻟﺘﺎﻟﻲ‪:‬‬

‫)‪for(i=0 ; i<3 ; i++‬‬


‫)‪for(j=0 ; j<2; j++‬‬
‫;]‪cin>>a[i][j‬‬

‫ﻣﻼﺣﻈﺔ‪:‬‬
‫ﻧﺴﻤﻲ اﻟﻤﺼﻔﻮﻓﺔ ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ ﺑﺎﻟﻤﺼﻔﻮﻓﺔ اﻟﻤﺮﺑﻌﺔ إذا ﺗﺴﺎوى ﻋﺪد اﻷﺳﻄﺮ ﻣﻊ ﻋﺪد اﻷﻋﻤﺪة‬

‫ﻣﺜﺎل ‪:‬‬
‫اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺈدﺧﺎل ﻋﻨﺎﺻﺮ ﻣﺼﻔﻮﻓﺔ ﺛﻨﺎﺋﯿﺔ اﻟﺒﻌﺪ‬
‫ﺗﺘﺄﻟﻒ ﻣﻦ ﺳﻄﺮﯾﻦ وﺛﻼﺛﺔ أﻋﻤﺪة‬
‫ﺑﺤﯿﺚ ﯾﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﺳﺘﺒﺪال ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﻘﯿﻤﺔ اﻟﻔﺮدﯾﺔ ﺑﺎﻟﻘﯿﻤﺔ )‪( ١٠‬‬
‫ﺛﻢ ﯾﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺒﺎﻋﺔ ﺷﻜﻞ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺠﺪﯾﺪ‪.‬‬

‫اﻟﺤﻞ‪:‬‬

‫>‪#include <iostream.h‬‬
‫)(‪void main‬‬
‫{‬

‫‪٣٩‬‬

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


‫;‪int s[2][3],i,j‬‬
‫)‪for(i=0;i<2;i++‬‬
‫)‪for(j=0;j<3;j++‬‬
‫{‬
‫;]‪cin>>s[i][j‬‬
‫)‪if(s[i][j]%2!=0‬‬
‫;‪s[i][j]=10‬‬
‫}‬
‫)‪for(i=0;i<2;i++‬‬
‫{‬
‫)‪for(j=0;j<3;j++‬‬
‫;" "<<]‪cout<<s[i][j‬‬
‫;‪cout<<endl‬‬

‫}}‬

‫اﻟﺴﺠﻼت ) اﻟﺘﺮﻛﯿﺒﺎت ( ‪structure‬‬


‫ﺗﻌﺮﯾﻒ اﻟﺴﺠﻞ‪:‬‬
‫ھﻮ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺘﻠﻔﺔ ﻓﻲ اﻟﻨﻮع ﻣﻊ ﺑﻌﻀﮭﺎ اﻟﺒﻌﺾ ﺑﺤﯿﺚ ﯾﻤﻜﻦ اﻟﺘﻌﺎﻣﻞ ﻣﻌﮭﺎ ﻛﻮﺣﺪة واﺣﺪة ‪.‬‬

‫اﻟﻨﻮع ‪ :‬أي أن ﯾﻜﻮن ﺑﻌﻀﮭﺎ ﻣﻦ ﻧﻮع ‪ int‬وﺑﻌﻀﮭﺎ ‪ char‬وﺑﻌﻀﮭﺎ ‪ float‬وﺑﻌﻀﮭﺎ ‪.......‬اﻟﺦ‪.‬‬

‫ﻓﻤﺜﻼً ‪:‬‬
‫ﻟﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻟﺘﺴﺠﯿﻞ ﺑﯿﺎﻧﺎت ﻣﻮﻇﻔﯿﻦ ﻓﻲ اﻟﺸﺮﻛﺔ ﻧﺤﺘﺎج إﻟﻰ ﺗﺨﺰﯾﻦ ‪:‬‬

‫اﺳﻢ اﻟﻤﻮﻇﻒ وھﻮ ﻣﻦ ﻧﻮع ﻣﺼﻔﻮﻓﺔ ﺣﺮﻓﯿﺔ ]‪char name[40‬‬ ‫‪-١‬‬


‫]‪char address[40‬‬ ‫ﻋﻨﻮاﻧﮫ وھﻮ ﻣﻦ ﻧﻮع ﻣﺼﻔﻮﻓﺔ ﺣﺮﻓﯿﺔ‬ ‫‪-٢‬‬
‫‪int age‬‬ ‫ﻋﻤﺮه ﻣﺘﺤﻮل ﻣﻦ ﻧﻮع ﻋﺪد ﺻﺤﯿﺢ‬ ‫‪-٣‬‬
‫‪float salary‬‬ ‫راﺗﺒﮫ ﻣﺘﺤﻮل ﻣﻦ ﻧﻮع ﻋﺪد ﺣﻘﯿﻘﻲ‬ ‫‪-٤‬‬

‫وﻛﻤﺎ ﻧﻼﺣﻆ ﻓﺈن ﺟﻤﯿﻊ ھﺬه اﻟﺒﯿﺎﻧﺎت ﯾﺠﺐ اﻟﺘﻌﺎﻣﻞ ﻣﻌﮭﺎ ﻛﻮﺣﺪة واﺣﺪة ﻷﻧﮭﺎ ﻟﻤﻮﻇﻒ واﺣﺪ‬
‫وﻟﺬﻟﻚ ﻓﺈﻧﻨﺎ ﺑﺤﺎﺟﺔ إﻟﻰ ﺳﺠﻞ ﺧﺎص ﻟﮭﺬا اﻟﻤﻮﻇﻒ‬

‫ﻛﯿﻔﯿﺔ اﻹﻋﻼم ﻋﻦ اﻟﺴﺠﻞ ‪:‬‬


‫ﻟﻠﺘﺼﺮﯾﺢ ﻋﻦ ﺳﺠﻞ ﻧﺴﺘﺨﺪم اﻟﻜﻠﻤﺔ اﻟﻤﺤﺠﻮزة ‪ struct‬وھﻲ اﺧﺘﺼﺎر ﻟﻜﻠﻤﺔ ‪ structure‬وﻣﻌﻨﺎھﺎ ﺗﺮﻛﯿﺐ‬

‫‪٤٠‬‬

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

You might also like