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

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

C++

Uploaded by

ajtajore
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
22 views

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

C++

Uploaded by

ajtajore
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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