Search for notes by fellow students, in your own course and all over the country.

Browse our notes for titles which look like what you need, you can preview any of the notes via a sample of the contents. After you're happy these are the notes you're after simply pop them into your shopping cart.

My Basket

You have nothing in your shopping cart yet.

Title: البرمجة
Description: كيف تقوم بالبرمجة عن طريق اللغة C++

Document Preview

Extracts from the notes are below, to see the PDF you'll receive please use the links above


‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ‬
‫ﻓﻲ‬

‫هﺎﻧﻲ اﻷﺗﺎﺳﻲ – اﻟﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ‬
‫ﺁﺧﺮ ﺗﻌﺪﻳﻞ ﻓﻲ 1002/02/11‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬

‫ﻣﻼﺣﻈﺔ : هﺬا اﻟﻜﺘﺎب هﻮ ﻗﻴﺪ اﻻﻋﺪاد ﺣﺎﻟﻴﺎ وهﻮ ﻟﻢ ﻳﻜﻤﻞ
...
com‬‬

‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫2‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬

‫اﻟﻔﻬﺮس‬

‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫3‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬

‫ﻣﻘﺪﻣﺔ‬

‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫4‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬

‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫5‬

‫اﻟﺪرس اﻷول – أﺳﺎﺳﻴﺎت اﻟﺒﺮﻣﺠﺔ‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬

‫أﺳﺎﺳﻴﺎت اﻟﺒﺮﻣﺠﺔ‬
‫ﻓﻲ هﺬا اﻟﺪرس ﺳﻮف أﺷﺮح آﻴﻔﻴﺔ آﺘﺎﺑﺔ أول ﺑﺮﻧﺎﻣﺞ ﻟﻚ ﺑﺎﻟﺴﻲ++ ﺑﺎﺳـﺘﺨﺪام 0
...
هـﺬا ﻻ ﻳﻌﻨـﻲ أﻧـﻪ ﻻﻳﻤﻜﻨـﻚ اﺳـﺘﺨﺪام‬
‫ﻣﺘﺮﺟﻤﺎت أﺧﺮى ﻣﺜﻞ ++‪ Borland C‬وﻟﻜﻦ ﺳـﻮف ﻳﻜـﻮن ﺷـﺮﺣﻲ آﻠـﻪ ﻋﻠـﻰ ++‪ Visual C‬وذﻟـﻚ ﻣـﻦ أﺟـﻞ اﻟـﺘﻤﻜﻦ ﻣـﻦ‬
‫اﺳﺘﺨﺪام هﺬﻩ اﻟﺒﻴﺌﺔ ﻓﻲ ﺣﺎل أردﻧﺎ ﻟﻼﻧﺘﻘﺎل إﻟﻰ ﺑﺮﻣﺠﺔ ﺗﻄﺒﻴﻘﺎت وﻧﺪوز ﺑﺎﺳﺘﺨﺪاﻣﻬﺎ
...

‫1
...
ﺣﺴـﻨﺎ ﻟﻤـﺎذا ﻻ‬
‫ﻧﺠﻬﺰ اﻟﺸﻮاء وﻧﻘﻮم ﺑﺘﺸﻐﻴﻞ اﻟﻔﻴﺠﻮال ﺳﻲ اﻵن !‬
‫إذا ﺗﻤﺖ ﻋﻤﻠﻴﺔ اﻟﺘﺸﻐﻴﻞ ﺑﻨﺠﺎح ﻃﺒﻌﺎ ﺳﻮف ﺗﺤﺼﻞ ﻋﻠﻰ ﺷﻜﻞ ﻣﺸﺎﺑﻪ إﻟﻰ اﻟﺸﻜﻞ 1
...


‫ﺷﻜﻞ 1 -1‬
‫اﻟﺨﻄﻮات اﻟﻼزﻣﺔ ﻣﻦ أﺟﻞ اﻟﺒﺪأ ﻓﻲ أي ﻣﺸﺮوع ﻓﻲ هﺬﻩ اﻟﺪروس هﻲ اﻟﺘﺎﻟﻴﺔ :‬
‫• اﺧﺘﺮ ‪ New‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪ File‬وﺳﻮف ﺗﺤﺼﻞ ﻋﻠﻰ ﻧﺎﻓﺬة آﻤﺎ ﻓﻲ اﻟﺸﻜﻞ 1-2
...
arabteam2000
...
Win32 Console Application‬وﻣـﻦ ﺛـﻢ اآﺘـﺐ اﺳـﻢ اﻟﻤﺸـﺮوع ﻓـﻲ اﻟﺨﺎﻧـﺔ‬
‫‪ ، Project Name‬وﻟﻴﻜﻦ ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل اﺳﻢ اﻟﻤﺸﺮوع ‪
...

‫• اﺿﻐﻂ ﻋﻠﻰ ‪
...


‫ﺷﻜﻞ 1 -3‬
‫• ﺗﺄآﺪ ﻣﻦ اﺧﺘﻴﺎر ‪ An empty project‬وﻣﻦ ﺛﻢ اﺿﻐﻂ ﻋﻠﻰ ‪
...
ﻳﻤﻜﻨـﻚ‬
‫أن ﺗﺘﺨﻴﻞ اﻟﻤﺸﺮوع آﺒﻴﺌﺔ ﻋﻤﻞ ﻣﻨﻈﻤﺔ ﻟﺒﺮﻧﺎﻣﺠﻚ ، ﺣﻴﺚ ﺗﻘﻮم ﺑﺎﺿﺎﻓﺔ أي ﻋﺪد ﻣﻦ اﻟﻤﻠﻔـﺎت ﻟﻠﻤﺸـﺮوع وﺗﻨﻈﻴﻤﻬـﺎ ﺗﻤﺎﻣـﺎ‬
‫آﻤﺎ ﺗﻨﻈﻢ اﻟﻤﻠﻔﺎت ﻓﻲ ﻣﺴﺘﻜﺸﻒ اﻟﻮﻧﺪوز
...

‫ﻋﻨﺪ ﻋﻮدﺗﻚ إﻟﻰ اﻟﺒﻴﺌﺔ اﻟﺮﺋﻴﺴﻴﺔ ﻟﻠﻔﻴﺠﻮال ﺳﻲ ﺳﻮف ﺗﻼﺣﻆ أن اﻟﻘﺴﻢ اﻷﻳﺴﺮ ﺻﺎر ﻳﺤﺘﻮي ﻋﻠﻰ اﺳﻢ ﻣﺸﺮوﻋﻚ اﻟﺬي‬
‫آﺘﺒﺘﻪ وهﻲ ﻣﺸﺎﺑﻬﺔ ﻟﻠﺸﻜﻞ 1-4
...
هﺬﻩ اﻟﻤﺠﻠﺪات هـﻲ وهﻤﻴـﺔ أي ﻻ‬
‫ﻳﻮﺟﺪ ﻟﻬﺎ ﻣﻘﺎﺑﻞ ﻋﻠﻰ اﻟﻘﺮص اﻟﺼﻠﺐ
...


‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫7‬

‫اﻟﺪرس اﻷول – أﺳﺎﺳﻴﺎت اﻟﺒﺮﻣﺠﺔ‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬

‫اﻵن ﻣﻦ أﺟﻞ آﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ اﻷول ﻳﺠﺐ ﻋﻠﻴﻨﺎ ﻣﻦ اﻧﺸﺎء ﻣﻠﻒ آﻮد ﺟﺪﻳﺪ وهﺬا ﻣﻦ اﻷﻣﺮ ‪ New‬ﻣﻦ اﻟﻘﺎﺋﻤﺔ ‪
...
Projects‬ﻃﺒﻌـﺎ ﻳﻤﻜﻨـﻚ أن‬
‫ﺗﺨﻤﻦ ﻣﺎهﻮ اﻟﺬي ﺳﻮف ﻧﺨﺘﺎرﻩ
...

‫ﺳﻮف ﺗﺠﺪ أﻧﻪ ﺗـﻢ اﺿـﺎﻓﺔ اﻟﻤﻠـﻒ ‪ test
...


‫>‪#include ...
‪cout << "My first program‬‬
‫;)0( ‪return‬‬
‫}‬
‫1 ‪PROGRAM‬‬
‫ﻳﺠﺐ أن ﺗﻨﺘﺒﻪ أن ﻟﻐﺔ اﻟﺴﻲ++ ﺗﻔﺮق ﺑﻴﻦ اﻷﺣﺮف اﻟﻜﺒﻴﺮة واﻷﺣﺮف اﻟﺼﻐﻴﺮة
...
main‬‬
‫2
...

‫ﻋﻤﻠﻴﺔ ﺗﺮﺟﻤﺔ اﻟﻤﺸﺮوع وﺑﻨﺎء اﻟﻤﻠﻒ اﻟﺘﻨﻔﻴﺬي ﻓﻲ اﻟﻔﻴﺠﻮال ﺳﻲ++ ﺗﺘﻢ ﺑﺨﻄﻮة واﺣﺪة وهﻲ ﻋﻦ ﻃﺮﻳﻖ اﺧﺘﻴﺎر اﻷﻣـﺮ‬
‫‪ Build FirstProg
...
F‬وﻣﻦ أﺟﻞ ﺗﻨﻔﻴـﺬ اﻟﻤﺸـﺮوع أو اﻟﻤﻠـﻒ اﻟﺘﻨﻔﻴـﺬي اﺧﺘـﺮ اﻷﻣـﺮ‬
‫‪ Execute FirstProg
...
Ctrl+F‬ﻃﺒﻌـﺎ ﻳﻤﻜﻨـﻚ أوﻻ ﺑﻨـﺎء اﻟﻤﻠـﻒ اﻟﺘﻨﻔﻴـﺬي‬
‫وﻣﻦ ﺑﻌﺪهﺎ ﺗﻨﻔﻴﺬﻩ ﺑﺨﻄﻮﺗﻴﻦ وﻟﻜﻦ اﻷﻣﺮ ‪ Execute‬ﻳﻘﻮم ﺑﺸﻜﻞ ﺁﻟﻲ ﺑﻌﻤﻠﻴﺔ اﻟﺘﺮﺟﻤﺔ وﺑﻨﺎء اﻟﻤﻠﻒ اﻟﺘﻨﻔﻴـﺬي إذا دﻋـﺎ اﻷﻣـﺮ‬
‫إﻟﻰ ذﻟﻚ
...


‫ﺷﻜﻞ 1 -5‬

‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫8‬

‫اﻟﺪرس اﻷول – أﺳﺎﺳﻴﺎت اﻟﺒﺮﻣﺠﺔ‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬
‫3
...
اﻹﺟﺎﺑـﺔ‬
‫هﻲ آﻠﻤﺘﻴﻦ ﻃﺒﻌﺎ وهﻲ هﻨﺪﺳﺔ اﻟﺒﺮﻧﺎﻣﺞ ، ﺗﻤﺎﻣﺎ آﻤﺎ ﻳﻔﻌﻞ إﺧﻮاﻧﻨﺎ ﻓﻲ اﻟﻬﻨﺪﺳﺔ اﻟﻤﺪﻧﻴﺔ أم اﻟﻤﻌﻤﺎرﻳﺔ
...

‫ﻟﻦ أﺗﻄﺮق ﻓﻲ هﺬﻩ اﻟﺪروس إﻟﻰ ﻣﻮاﺿﻴﻊ اﻟﺘﺼﻤﻴﻢ وﺗﺤﻠﻴﻞ اﻟﻤﻮارد ﻷﻧﻬﺎ ﻗﺪ ﺗﻜﻮن ﺧﺎرﺟﺔ ﻋﻦ اﻃﺎر هﺬﻩ اﻟـﺪروس وﻟﻜـﻦ‬
‫آﺪروس ﻟﺘﻌﻠﻴﻢ ﻟﻐﺔ اﻟﺴﻲ++ ﻳﺠﺐ أن أﻧﻮﻩ إﻟﻰ ﻣﻮاﺿﻴﻊ ﺗﻨﻈﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ واﻟﺘﻲ هﻲ ﺟﺰء ﻻ ﻳﺘﺠﺰء ﻣﻦ هﻨﺪﺳﺔ اﻟﺒﺮﻧﺎﻣﺞ
...
اﻟﺘﻌﻠﻴﻘـﺎت هـﻲ ﺟـﺰء ﻣـﻦ اﻟﺒﺮﻧـﺎﻣﺞ‬
‫اﻟﺬي ﻳﻬﻤﻞ أﺛﻨﺎء ﻋﻤﻠﻴﺔ ﺗﺮﺟﻤﺔ اﻟﺒﺮﻧﺎﻣﺞ وهﻲ ﺗﻔﻴﺪ ﻓﻲ ﺗﻔﺴـﻴﺮ اﻟﺨﻄـﻮات اﻟﺘـﻲ ﺗﻘـﻮم ﺑﻬـﺎ
...

‫)‪PROGRAM 1
...
2 (b‬‬

‫‪This program calculates the sum of 10 and 20 and prints it on screen‬‬
‫‪Programmed by : Anonymous‬‬
‫0003/1/1 : ‪Date‬‬

‫*/‬
‫**‬
‫**‬
‫**‬
‫/*‬

‫)(‪int main‬‬
‫{‬
‫;‪int sum‬‬

‫‪// This will hold the sum of the numbers‬‬
‫‪// Store 10 + 20 in sum‬‬
‫‪// Print the sum value‬‬

‫;02 + 01 = ‪sum‬‬
‫;‪cout << sum << endl‬‬

‫‪// End the program‬‬

‫;)0( ‪return‬‬
‫}‬

‫ﻃﺒﻌﺎ ﺳﻮف ﺗﻘﻮل أن اﻟﺒﺮﻧﺎﻣﺞ اﻟﺜﺎﻧﻲ أﺳﻬﻞ ﻟﻠﻘﺮاﺋﺔ واﻟﻔﻬﻢ ﻣﻦ اﻷول ﻟﻌﺪة أﺳﺒﺎب
...

‫• وﺿﻊ أﺳﻄﺮ ﻓﺎرﻏﺔ ﺑﻴﻦ ﻗﺴﻢ وﺁﺧﺮ ﻓﻲ اﻟﻜﻮد ، اﻷﻗﺴﺎم ﺗﻜﻮن ﻣﺘﺮاﺑﻄﺔ ﻣﻨﻄﻘﻴﺎ ﻓﻴﻤﺎ ﺑﻴﻨﻬﺎ
...


‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫9‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬

‫اﻟﺪرس اﻷول – أﺳﺎﺳﻴﺎت اﻟﺒﺮﻣﺠﺔ‬

‫ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ اﻟﺘﻌﻠﻴﻘﺎت ﻓﻴﻤﻜﻦ آﺘﺎﺑﺘﻬﺎ ﺑﺸﻜﻠﻴﻦ آﻤﺎ هﻮ ﻣﻮﺿﺢ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻷﺧﻴﺮ
...
أﻣﺎ اﻟﺸﻜﻞ اﻵﺧﺮ ﺑﺎﺳﺘﺨﺪام */ و /* اﻟﺮﻣﺰ اﻷول ﻳﻔـﺘﺢ ﻓﻘـﺮة ﺗﻌﻠﻴـﻖ‬
‫واﻟﺮﻣﺰ اﻟﺜﺎﻧﻲ ﻳﻐﻠﻖ هﺬﻩ اﻟﻔﻘﺮة ، ذآﺮت ﻓﻘﺮة ﻷن هﺬا اﻟﻨﻮع ﻣﻦ اﻟﺘﻌﻠﻴﻖ ﻣﻤﻜـﻦ أن ﻳﻤﺘـﺪ ﻋﻠـﻰ ﻋـﺪة أﺳـﻄﺮ أو ﻳﻤﻜـﻦ أن‬
‫ﻳﻜﻮن ﻓﻲ ﺳﻄﺮ واﺣﺪ
...
1 ﻣﻠﺨﺺ اﻟﺪرس‬
‫• ﻣﻦ أﺟﻞ اﻟﺒﺪأ ﺑﻤﺸﺮوع ﺑﺮﻣﺠﻲ ﻳﺠﺐ اﻧﺸﺎء ﻣﺸﺮوع ﺟﺪﻳﺪ ﻓﻲ اﻟﻔﻴﺠﻮال ﺳﻲ++ ﻋﻦ ﻃﺮﻳـﻖ اﺧﺘﻴـﺎر ‪ New‬ﻣـﻦ‬
‫اﻟﻘﺎﺋﻤﺔ ‪
...
File‬‬
‫• ﻗﻤﻨﺎ ﺑﻜﺘﺎﺑﺔ أول ﺑﺮﻧﺎﻣﺞ ﻓﻲ اﻟﺴﻲ++ وﺗﻨﻔﻴﺬﻩ
...


‫ﻣﻦ أﺟﻞ ﺗﻨﺰﻳﻞ ﻣﻠﻔﺎت ﻣﺸﺮوع هﺬا اﻟﺪرس اﻧﻘﺮ هﻨﺎ
...
arabteam2000
...
ﻣـﻦ اﻷﻣـﻮر‬
‫اﻟﻤﻬﻤﺔ ﺟﺪا آﻤﺎ هﻮ اﻟﺤﺎل ﻓﻲ ﺑﺎﻗﻲ اﻟﻠﻐﺎت هﻮ ﻋﻤﻠﻴﺔ ﺗﺤﺪﻳﺪ ﻣﺎ هﻮ ﻧﻮع هﺬﻩ اﻟﻌﻨﺎﺻﺮ أو ﺑﻜﻠﻤـﺔ أﺧـﺮى أﻧـﻮاع اﻟﻤﻌﻄﻴـﺎت
...
ﻋﻠـﻰ ﺳـﺒﻴﻞ اﻟﻤﺜـﺎل اﻷﻧـﻮاع اﻟﻤﺸـﺘﻘﺔ هـﻲ‬
‫ﺗﻠﻚ اﻷﻧﻮاع اﻟﺘﻲ ﺗﻌﺘﻤﺪ ﻋﻠﻰ اﻷﻧﻮاع اﻷﺳﺎﺳﻴﺔ ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺎت
...
اﻷوﻟﻰ هﻲ اﻟﺘـﻲ ﺗﺒﻘـﻰ ﺛﺎﺑﺘـﺔ ﻃـﻮل‬
‫ﻓﺘﺮة ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ، أﻣﺎ اﻟﺜﺎﻧﻴﺔ هﻲ اﻟﺘﻲ ﺗﺘﻐﻴﺮ ﻗﻴﻤﺘﻬﺎ
...
Variables‬ﻃﺒﻌﺎ آﻼ اﻟﺼﻨﻔﻴﻦ اﻟﺴﺎﺑﻘﻴﻦ ﻳﺠﺐ أن ﺗﻨﻄﺒﻖ ﻋﻠﻴـﻪ ﻣﺎذآﺮﻧـﺎﻩ‬
‫ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ اﻷﻧﻮاع ؛ ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل اﻟﻤﺘﺤﻮﻻت ﻳﺠﺐ ﺗﺤﺪﻳﺪ ﻧﻮﻋﻬﺎ ﺣﺘﻰ ﻧﺴﺘﻄﻴﻊ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ
...
اﻟﺘﻌﺒﻴـﺮ‬
‫ﻳﺘﻜﻮن ﻣﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺤـﺪود ‪ operands‬أو اﻟﻘـﻴﻢ و اﻟﻌﻮاﻣـﻞ ‪
...
اﻟﻌﻮاﻣﻞ ﻳﻤﻜﻦ ﺗﺼﻨﻴﻔﻬﺎ إﻟـﻰ ﻋـﺪة أﺻـﻨﺎف‬
‫أﻳﻀﺎ ﻓﻤﻨﻬﺎ ﻋﻮاﻣﻞ ﻣﻦ أﺟﻞ اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ آﺎﻟﺠﻤﻊ واﻟﻀﺮب وﻣﻨﻬـﺎ ﻋﻮاﻣـﻞ اﻟﻤﻘﺎرﻧـﺔ آﺎﻷﺻـﻐﺮ واﻷآﺒـﺮ
...

‫هﺬا اﻟﺪرس ﻳﻮﺟﺪ ﻓﻴﻪ ﻋﺪد هﺎﺋﻞ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت ﻣـﻊ ﻗﻠﻴـﻞ ﻣـﻦ اﻟﺘﻄﺒﻴـﻖ ، ﻟـﺬا ﻟـﻴﺲ ﻣـﻦ اﻟﻀـﺮوري ﻓﻬﻤـﻪ‬
‫ﺑﺸﻜﻞ آﺎﻣﻞ وﻟﻜﻦ ﻳﺠﺐ ﻗﺮاﺋﺘﻪ ﺑﺸﻜﻞ آﺎﻣﻞ واﻟﺮﺟﻮع إﻟﻴﻪ إذا دﻋﺖ اﻟﺤﺎﺟﺔ ﻓﻲ اﻟﺪروس اﻟﻼﺣﻘﺔ
...
2 اﻟﺜﻮاﺑﺖ اﻟﺼﺤﻴﺤﺔ – ‪Integer Constants‬‬
‫هﺬﻩ اﻟﺜﻮاﺑﺖ هﻲ ﻋﺒﺎرة ﻋﻦ أﻋﺪاد ﻗﺪ ﺗﻜﻮن ﻣﻮﺟﺒﺔ أو ﺳـﺎﻟﺒﺔ
...
اﻷﻋﺪاد ﺑﺎﻟﻨﻈﺎم اﻟﻌﺸﺮي ﺗﺘﻜﻮن ﻣـﻦ اﻷرﻗـﺎم ﻣـﻦ 0 إﻟـﻰ 9 واﻟـﺮﻗﻢ اﻷول ﻳﺠـﺐ أن ﻳﻜـﻮن ﻏﻴـﺮ اﻟـﺮﻗﻢ 0
...
دﻗﺔ هـﺬﻩ اﻷﻋـﺪاد ﺗﻌﺘﻤـﺪ ﻋﻠـﻰ اﻟﻤﺴـﺎﺣﺔ‬
‫اﻟﺘﻲ ﻳﺤﺠﺰهﺎ اﻟﻤﺘﺮﺟﻢ ﻟﻠﻌﺪد ، وهﺬا ﻳﺨﺘﻠﻒ ﻣﻦ ﺣﺎﺳﺐ إﻟﻰ ﺁﺧـﺮ ﻓﻔـﻲ اﻷﺟﻬـﺰة اﻟﺘـﻲ ﺗﺤﺘـﻮي ﻋﻠـﻰ ﻣﺴـﺠﻼت ﺑﺤﺠـﻢ‬
‫61ﺑﺖ ﻓﺈن ال ‪ integer‬ﺳﻮف ﻳﺤﺠﺰ ﻟﻪ 61ﺑﺖ وﺑﺎﻟﺘﺎﻟﻲ ﻓﺈن ﻣﺠﺎﻟﻪ ﻳﺘﺮاوح ﺑﻴﻦ 86723- إﻟﻰ 76723
...

‫ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ اﻷﻋﺪاد ﻓﻲ اﻟﻨﻈﺎم اﻟﺜﻤﺎﻧﻲ ﻓﺈﻧﻬﺎ ﻳﺠﺐ أن ﺗﺒﺪأ ﺑﺎﻟﺮﻗﻢ 0 وهﺬﻩ أﻣﺜﻠﺔ ﻋﻠﻴﻬﺎ :‬
‫5320‬

‫3210‬

‫7770‬

‫020‬

‫أﻣﺎ اﻷﻋﺪاد ﺑﺎﻟﻨﻈﺎم اﻟﺴﺖ ﻋﺸﺮي ﻓﻬﻲ ﺗﺒﺪأ ﺑﺎﻟﺮﻣﺰ ‪ 0x‬أو ‪ 0X‬وهﺬا أﻣﺜﻠﺔ ﻋﻠﻰ هﺬا :‬
‫‪0x0A2F‬‬

‫2‪0XECA‬‬

‫4321‪0x‬‬

‫‪0xFFFF‬‬

‫ﻓﻲ ﺣﺎل ﺗﺨﻄﻰ اﻟﺜﺎﺑﺖ اﻟﻤﺠﺎل اﻟﻤﺴﻤﻮح ﻓﻴﻪ ﻓﺈن ﻣﻌﻈﻢ اﻟﻤﺘﺮﺟﻤﺎت ﺗﻘﻮم ﺑﺎﻟﺘﺤﺬﻳﺮ ﻋﻦ ذﻟﻚ
...
982L‬‬
‫2
...
اﻟﺼـﻴﻐﺔ اﻟﻤﺒﺎﺷـﺮة واﻟﺒﺴـﻴﻄﺔ‬
‫أﻣﺜﻠﺔ ﻋﻠﻰ هﺬا :‬
‫6295141
...
21‬

‫1
...
0‬

‫اﻟﻨﻘﻄﺔ اﻟﺘﻲ ﺗﻔﺼـﻞ اﻟﻘﺴـﻢ اﻟﺤﻘﻴﻘـﻲ واﻟﻜﺴـﺮي ﻻ ﺗﺸـﺘﺮط أن ﺗﺤﻄـﺎط ﺑـﺮﻗﻤﻴﻦ ﺣﻴـﺚ ﻳﻤﻜـﻦ آﺘﺎﺑـﺔ اﻟـﺮﻗﻢ اﻟﺜﺎﻧﻴـﺔ‬
‫واﻟﺜﺎﻟﺚ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ آﺎﻟﺘﺎﻟﻲ :‬

...


‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫11‬

‫اﻟﺪرس اﻟﺜﺎﻧﻲ – اﻷﻧﻮاع و اﻟﻌﻮاﻣﻞ و اﻟﺘﻌﺎﺑﻴﺮ‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬

‫وﻟﻜﻦ ﻳﻔﻀﻞ ، ﻋﻠﻰ آﻞ اﻷﺣﻮل ، اﺳﺘﺨﺪام اﻟﺼﻴﻐﺔ اﻟﺘﻲ ﺗﺠﻌﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻗﺎﺑﻞ ﻟﻠﻘﺮاﺋﺔ ﺑﺸﻜﻞ واﺿﺢ
...
0e‬‬

‫)43210
...
34e‬‬

‫3
...
‘X‬إن ﻗﻴﻤﺔ اﻟﺜﺎﺑﺖ‬
‫اﻟﻤﺤﺮﻓﻲ هﻲ ﻋﺒﺎرة ﻋﻦ ﻗﻴﻤﺔ هـﺬا اﻟﺤـﺮف ﻓـﻲ ﺟـﺪول اﻟﻤﺤـﺎرف ﻓـﻲ اﻟﻨﻈـﺎم أو اﻟﺠﻬـﺎز
...
ASCII (American Standard Code for Information Interchange‬ﻓﻔـﻲ ﺟـﺪول ‪ ASCII‬ﺗﺒﻠـﻎ ﻗﻴﻤـﺔ‬
‫اﻟﻤﺤﺮف ’‪ ‘X‬اﻟﻘﻴﻤﺔ 88
...
escape character‬وهـﻲ‬
‫ﺗﺴﺘﺨﺪم ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺤﺎرف اﻟﺘﻲ ﻣﻦ اﻟﺼﻌﺐ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ أو ﻣﻦ اﻟﺼﻌﺐ ادﺧﺎﻟﻬﺎ ﻣﻦ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ ﻣﺒﺎﺷﺮة
...
اﻟﻤﺤﺮﻓﻴﻦ اﻟﺴﺎﺑﻘﻴﻦ ﻳﻌﺘﺒﺮو آﻤﺤﺮف واﺣﺪ ﻣﻦ وﺟﻬﺔ ﻧﻈﺮ اﻟﻤﺘﺮﺟﻢ ، ﺳﻮف أﺳﺮد هﺬﻩ‬
‫اﻟﻤﺤﺎرف هﻨﺎ :‬
‫‪Alarm bell‬‬
‫‪New line‬‬
‫‪Horizontal tab‬‬
‫‪Vertical tab‬‬
‫‪backspace‬‬
‫‪Carriage return‬‬
‫‪Formfeed‬‬
‫‪Single quote‬‬
‫‪Double quote‬‬
‫‪backslash‬‬
‫‪Question mark‬‬
‫‪NULL character‬‬

‫‪\a‬‬
‫‪\n‬‬
‫‪\t‬‬
‫‪\v‬‬
‫‪\b‬‬
‫‪\r‬‬
‫‪\f‬‬
‫’\‬
‫”\‬
‫\\‬
‫?\‬
‫0\‬

‫اﻵن ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل إذا أردت اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺤـﺮف \ ﻓﻴﺠـﺐ أن ﺗﻜﺘـﺐ ’\\‘ ﻋﻮﺿـﺎ ﻋـﻦ ’\‘
...
اﻟﻨﺎﺗﺞ هﻮ ﻋﺒﺎرة ﻋﻦ رﻗﻢ ﺳﺖ ﻋﺸﺮي ﻳﻤﺜﻞ دﻟﻴﻞ ﻓﻲ ﺟﺪول اﻟﻤﺤﺎرف ﻓﻲ اﻟﺠﻬﺎز ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜـﺎل‬
‫ﻓﺈن اﻟﻤﺤﺮف ’‪ ‘X‬ﻗﻴﻤﺘﻪ 85‪ 0x‬ﻓﻲ ﺟﺪول ‪ ASCII‬وﺑﺎﻟﺘﺎﻟﻲ ﻳﻤﻜﻦ ﺗﻤﺜﻴﻠﻪ أﻳﻀـﺎ ﺑﺎﻟﺼـﻴﻐﺔ ’85‪
...

‫اﻟﻤﺤﺮف اﻷﺧﻴﺮ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻘﺎﺋﻤﺔ اﻟﺴﺎﺑﻘﺔ ﻳﻌﺘﺒﺮ اﻟﻤﺤﺮف اﻷول ﻓﻲ ﺟﺪول ‪ ASCII‬وﻳﺴﻤﻰ ﺑﻤﺤﺮف اﻟﺼـﻔﺮ أو ال‬
‫‪
...

‫4
...
وﻳﻤﻜﻦ أﻳﻀـﺎ اﺳـﺘﺨﺪام ﻧﻔـﺲ‬
‫ﻣﺤﺎرف اﻟﻬﺮوب اﻟﺴﺎﺑﻘﺔ ﺑﺪاﺧﻞ اﻟﺴﻠﺴﻠﺔ اﻟﻨﺼﻴﺔ
...
arabteam2000
...
‪over two lines‬‬
‫اﻟﻤﺘﺮﺟﻢ ﻳﻌﺘﺒﺮ اﻟﺴﻠﺴﻠﺔ اﻟﺴﺎﺑﻘﺔ آﺴﻠﺴﻠﺔ واﺣﺪة أي ﻳﻘﻮم ﺑﺘﺠﺎهﻞ اﻟﻤﺤﺮف \ ﺑﺎﻻﺿﺎﻓﺔ إﻟـﻰ رﻣـﺰ اﻟﺴـﻄﺮ اﻟﺠﺪﻳـﺪ‬
‫اﻟﺬي ﺑﻌﺪﻩ
...
‪“This string extends over two lines‬‬
‫وأﻳﻀﺎ اﻟﺴﻠﺴﻠﺘﻴﻦ اﻟﻤﻨﻔﺼﻠﺘﻴﻦ اﻟﺘﻲ ﺗﻠﻲ أﺣﺪهﻤﺎ اﻷﺧﺮى ﻳﻘﻮم اﻟﻤﺘﺮﺟﻢ ﺑﺎﺿﺎﻓﺘﻬﻤﺎ إﻟﻰ ﺑﻌﻀـﻬﻤﺎ ﻟﺘﻜـﻮﻳﻦ ﺳﻠﺴـﻠﺔ‬
‫واﺣﺪة
...

‫أﻳﻀﺎ اﻷﻣﺮ اﻟﻬﺎم ﺟﺪا ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ ﻣﻮﺿـﻮع اﻟﺴﻼﺳـﻞ ﻓـﻲ اﻟﺴـﻲ++ ﻓـﺈن أي ﺳﻠﺴـﻠﺔ ﺳـﻮف ﺗﻨﺘﻬـﻲ ب ‪NULL‬‬
‫‪ Character‬أو ’0\‘
...
ﻟـﺬﻟﻚ ﺗﺴـﻤﻰ اﻟﺴﻼﺳـﻞ‬
‫اﻟﻨﺼﻴﺔ ﻓﻲ ﻟﻐﺔ اﻟﺴﻲ ب ‪ Null terminated string‬أو اﻟﺴﻠﺴﻠﺔ اﻟﻤﻨﺘﻬﻴﺔ ﺑﻤﺤﺮف اﻟﺼﻔﺮ
...
وﺑﺎﻟﺘﺎﻟﻲ ﻳﺠﺐ‬
‫اﻻﻧﺘﺒﺎﻩ ﻓﻲ ﺣﺎﻟﺔ اﺳﺘﺨﺪام اﻟﻤﺤﺎرق واﻟﺴﻼﺳﻞ واﻟﺘﻔﺮﻳﻖ ﻓﻴﻤﺎ ﺑﻴﻨﻬﻤﺎ
...
2 اﻟﻤﻌﺮﻓﺎت – ‪Identifiers‬‬
‫ﻟﻐﺔ اﻟﺴﻲ++ ﻣﺜﻞ ﺑﺎﻗﻲ اﻟﻠﻐﺎت ﺗﺘﻄﻠﺐ ﻣﻨﻚ اﻋﻄﺎء أﺳﻤﺎء ﻣﻌﻴﻨﺔ ﻟﻠﻤﻌﻄﻴﺎت اﻟﺘﻲ ﺗﺴﺘﺨﺪﻣﻬﺎ ﻓﻲ ﺑﺮﻧﺎﻣﺠـﻚ
...
وﻳﺠـﺐ أن ﻳﺼـﻨﻊ اﻟﻤﻌـﺮف ﺑﺎﻻﻋﺘﻤـﺎد‬
‫ﻋﻠﻰ اﻟﻘﺎﻋﺪة اﻟﺘﺎﻟﻴﺔ :‬
‫اﻟﻤﻌﺮف هﻮ ﻋﺒﺎرة ﻋﻦ ﺧﻠﻴﻂ ﻣـﻦ اﻟﻤﺤـﺎرف واﻷرﻗـﺎم واﻟﺘـﻲ ﻳﺠـﺐ أن ﺗﺒـﺪأ ﺑﻤﺤـﺮف
...

‫ﻣﻦ اﻟﻘﺎﻋﺪة اﻟﺴﺎﺑﻘﺔ ﻳﻤﻜﻦ أن ﻧﻀﻊ ﺑﻌﺾ اﻷﻣﺜﻠﺔ ﻟﻤﻌﺮﻓﺎت ﺗﻌﺘﺒﺮ ﺻﺤﻴﺤﺔ ﻟﻤﺘﺮﺟﻢ اﻟﺴﻲ++ :‬
‫‪counter‬‬
‫‪BUFFER‬‬
‫‪unit_cost‬‬
‫‪h2o‬‬
‫‪programName AVeryLongIdentifier‬‬

‫‪time‬‬
‫‪x‬‬
‫‪_MAX‬‬

‫ﻳﻌﺘﺒﺮ أي ﻣﻌﺮﻓﻴﻦ هﻤﺎ واﺣﺪ ﻓﻲ ﺣﺎﻟﺔ آﺎن ﻟﻬﻤﺎ ﻧﻔﺲ اﻻﻣﻼء وﻧﻔﺲ ﺣﺎﻟﺔ اﻷﺣـﺮف )اﻟﺼـﻐﻴﺮة أم اﻟﻜﺒﻴـﺮة(
...

‫ﻳﻔﻀﻞ أن ﻳﻌﻄﻲ اﻟﻤﺒﺮﻣﺞ اﺳﻤﺎء ﻟﻠﻤﻌﺮﻓﺎت ﺗﺪل ﻋﻠﻰ اﺳﺘﺨﺪاﻣﻬﺎ
...
s‬‬
‫ﺑﻌﺾ اﻟﻤﻌﺮﻓﺎت ﺗﻜﻮن ﻣﺤﺠﻮزة ﻻﺳﺘﺨﺪام ﻟﻐﺔ اﻟﺴﻲ++ وهﻲ ﻣﺎﺗﺴﻤﻰ ب ‪
...


‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫31‬

‫اﻟﺪرس اﻟﺜﺎﻧﻲ – اﻷﻧﻮاع و اﻟﻌﻮاﻣﻞ و اﻟﺘﻌﺎﺑﻴﺮ‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬
‫‪bad_typeid‬‬
‫‪catch‬‬
‫‪const_cast‬‬
‫‪do‬‬
‫‪enum‬‬
‫‪false‬‬
‫‪friend‬‬
‫‪int‬‬
‫‪new‬‬
‫‪public‬‬
‫‪short‬‬
‫‪static_cast‬‬
‫‪this‬‬
‫‪type_info‬‬
‫‪union‬‬
‫‪void‬‬

‫‪bad_cast‬‬
‫‪case‬‬
‫‪const‬‬
‫‪delete‬‬
‫‪else‬‬
‫‪extern‬‬
‫‪for‬‬
‫‪inline‬‬
‫‪namespace‬‬
‫‪protected‬‬
‫‪return‬‬
‫‪static‬‬
‫‪template‬‬
‫‪try‬‬
‫‪typename‬‬
‫‪virtual‬‬

‫‪auto‬‬
‫‪break‬‬
‫‪class‬‬
‫‪default‬‬
‫‪dynamic_cast‬‬
‫‪explicit‬‬
‫‪float‬‬
‫‪if‬‬
‫‪mutable‬‬
‫‪private‬‬
‫‪reinterpret_cast‬‬
‫‪sizeof‬‬
‫‪switch‬‬
‫‪true‬‬
‫‪typeid‬‬
‫‪using‬‬
‫‪while‬‬

‫‪asm‬‬
‫‪bool‬‬
‫‪char‬‬
‫‪continue‬‬
‫‪double‬‬
‫‪except‬‬
‫‪finally‬‬
‫‪goto‬‬
‫‪long‬‬
‫‪operator‬‬
‫‪register‬‬
‫‪signed‬‬
‫‪struct‬‬
‫‪throw‬‬
‫‪typedef‬‬
‫‪unsigned‬‬
‫‪volatile‬‬

‫ﺑﻘﻲ أﻣﺮ هﺎم ﻳﺠﺐ اﻟﺘﻨﻮﻳﻪ ﻟﻪ وذﻟﻚ أﻧﻪ ﻻ ﻳﻨﺼﺢ ﺑﺎﺳﺘﺨﺪام رﻣـﺰزﻳﻦ )_( ﻓـﻲ ﺑﺪاﻳـﺔ اﻟﻤﻌـﺮف ، ﻣﺜـﻞ ‪ ، __MAX‬وذﻟـﻚ‬
‫ﺑﺴﺒﺐ أن اﻟﻤﻌﺮﻓﺎت ﺑﻬﺬا اﻟﺸﻜﻞ ﻣﺤﺠﻮزة ﻻﺳﺘﺨﺪام اﻟﻤﻜﺘﺒﺎت اﻟﻘﻴﺎﺳﻴﺔ ﻟﻠﺴﻲ++
...
2 ﺗﻌﺮﻳﻒ اﻟﻤﺘﺤﻮﻻت – ‪Variable definition‬‬
‫ﻣﻦ اﺳﻤﻬﺎ ﻓﺈن اﻟﻤﺘﺤﻮﻻت هﻲ ﻋﺒﺎرة ﻋﻦ ﻋﻨﺎﺻﺮ ﻣﻌﻄﻴﺎت ﺗﺘﻐﻴﺮ ﻗﻴﻤﻬﺎ أﺛﺘﺎء وﻗـﺖ ﺗﻨﻔﻴـﺬ اﻟﺒﺮﻧـﺎﻣﺞ
...
ﻃﺒﻌـﺎ إن ﻋﻤﻠﻴـﺔ ﺗﺤﺪﻳـﺪ‬
‫ﻧﻮع اﻟﻤﺘﺤﻮل ﺗﻌﺮف ﺑﺘﻌﺮﻳﻒ اﻟﻤﺘﺤﻮﻻت أو ‪
...
type-specifier‬إن اﻷﻧـﻮاع اﻷﺳﺎﺳـﻴﺔ‬
‫ﻓﻲ اﻟﺴﻲ++ ﻳﻤﻜﻦ اﻋﺘﺒﺎرهﺎ :‬
‫)‪(integer‬‬
‫)‪(character‬‬
‫)‪(single precision floating point‬‬
‫)‪(double precision floating point‬‬

‫‪int‬‬
‫‪char‬‬
‫‪float‬‬
‫‪double‬‬

‫وآﻤﺜﺎل ﻋﻠﻰ ﺗﻌﺮﻳﻒ اﻟﻤﺘﺤﻮﻻت :‬
‫;‪hours, minutes, seconds‬‬

‫‪int‬‬

‫هﻨﺎ اﻟﻤﺘﺤﻮﻻت ‪ hours‬و ‪ minutes‬و ‪ seconds‬آﻠﻬـﺎ ﻋﺒـﺎرة ﻋـﻦ ﻣﺘﺤـﻮﻻت ﻷﻋـﺪاد ﺻـﺤﻴﺤﺔ ‪ integer‬وﺑﺎﻟﺘـﺎﻟﻲ ﻳﻤﻜـﻦ‬
‫ﺗﺨﺰﻳﻦ أي ﻋﺪد ‪ integer‬ﺿﻤﻨﻬﺎ واﺳﺘﺨﺪام هﺬا اﻟﻌﺪد ﻻﺣﻘﺎ ﻓﻲ ﺑﺮﻧﺎﻣﺠﻚ
...
وهﺬا ﻣﺜﺎل ﻋﻠﻰ ذﻟﻚ :‬
‫;‪day, month, year‬‬
‫;‪centigrade, fahrenheit‬‬
‫;‪initial‬‬
‫;‪epsilon‬‬

‫‪int‬‬
‫‪float‬‬
‫‪char‬‬
‫‪double‬‬

‫وﻋﻨﺪ اﻟﺘﻌﺮﻳﻒ ﻳﻔﻀﻞ ﺗﻌﺮﻳﻒ اﻟﻤﺘﺤﻮﻻت ذات اﻟﻌﻼﻗﺔ ﻓﻴﻤﺎ ﺑﻴﻨﻬﺎ ﻓﻲ ﻣﺠﻤﻮﻋﺔ واﻟﺒﺎﻗﻲ ﻓﻲ ﻣﺠﻤﻮﻋﺔ أﺧﺮى آﺎﻟﺘﺎﻟﻲ :‬
‫;‪counter, value‬‬
‫;‪day, month, year‬‬

‫‪int‬‬
‫‪int‬‬

‫وأﻳﻀﺎ ﻳﻤﻜﻦ آﺘﺎﺑﺔ اﻟﺘﻌﺮﻳﻒ ﻋﻠﻰ ﻋﺪة أﺳﻄﺮ آﺎﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ :‬

‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫41‬

‫اﻟﺪرس اﻟﺜﺎﻧﻲ – اﻷﻧﻮاع و اﻟﻌﻮاﻣﻞ و اﻟﺘﻌﺎﺑﻴﺮ‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬

‫,‪day, month, year‬‬
‫;‪hours, minutes, seconds‬‬

‫‪int‬‬

‫أﻳﻀﺎ ﻳﻤﻜﻦ اﻋﻄﺎء ﻗﻴﻢ ﻣﻌﻴﻨﺔ ﻟﻠﻤﺘﺤﻮﻻت أﺛﻨﺎء ﺗﻌﺮﻳﻔﻬﺎ وهﺬا ﻳﺘﻢ ﻋﻦ ﻃﺮﻳﻖ اﺳﺘﺨﺪام رﻣﺰ اﻻﻟﺤﺎق )=( آﺎﻟﺘﺎﻟﻲ :‬
‫;0 = ‪sum‬‬
‫;41
...
أﻣﺎ اﻟﻤﺘﺤﻮﻻت اﻟﺘﻲ ﻳـﺘﻢ ﺗﻌﺮﻳﻔﻬـﺎ ﻣـﻦ‬
‫ﻏﻴﺮ اﻋﻄﺎﺋﻬﺎ ﻗﻴﻤﺔ ﻣﻌﻴﻨﺔ ﻓﻘﻴﻤﺘﻬﺎ ﻏﻴﺮ ﻣﻌﺮوﻓﺔ وﻻ ﻳﻨﺼﺢ ﺑﺎﺳﺘﺨﺪاﻣﻬﺎ ﺣﺘﻰ ﻳﺘﻢ اﻋﻄﺎﺋﻬﺎ ﻗﻴﻤﺔ ﻣﻌﻴﻨﺔ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ
...
ﻳﻜﻔـﻲ اﻵن أن ﺗﻌـﺮف أن آـﻞ ﻣﺘﺤـﻮل ﻟـﻪ اﻟﺨـﻮاص‬
‫اﻟﺘﺎﻟﻴﺔ :‬
‫•‬

‫إﻧﻬﺎ ﻣﻦ ﻧﻮع ﻣﺎ
...


‫آﻞ ﻣﺘﺤﻮل ﻳﺠﺐ أن ﻳﻜﻮن ﻣﺘﻮاﺟﺪ ﻓﻲ اﻟﺬاآﺮة ﻓﻲ ﻋﻨﻮان ﻣﻌﻴﻦ
...
ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل اﻋﺘﺒﺮ اﻟﺘﻌﺮﻳﻒ اﻟﺘﺎﻟﻲ :‬
‫;52 = ‪x‬‬

‫‪int‬‬

‫ﻋﻠﻰ ﻣﺴﺘﻮى ﻓﻬﻤﻨﺎ ﻓﺈﻧﻪ ﻳﻤﻜﻦ اﻟﻘﻮل أن ﺗﻢ ﺣﺠﺰ ﻣﺴـﺎﺣﺔ ﻓـﻲ اﻟـﺬاآﺮة ﻣـﻦ أﺟـﻞ اﺳـﺘﻴﻌﺎب أرﻗـﺎم ‪ integer‬وهـﺬﻩ‬
‫اﻟﻤﺴﺎﺣﺔ ﻳﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻋﻦ ﻃﺮﻳﻖ اﻟﻤﻌﺮف ‪
...
اﻧﻈﺮ اﻟﺸﻜﻞ 2-2
...
arabteam2000
...
2 اﻟﻮاﺻﻔﺎت – ‪Qualifiers‬‬

‫اﻟﻮاﺻﻔﺎت ﻓﻲ ﻟﻐﺔ اﻟﺴﻲ++ اﻟﺘﻲ ﺳﻮف ﻧﺸﺮﺣﻬﺎ ﻓﻲ هﺬﻩ اﻟﻔﻘﺮة هﻲ :‬
‫•‬
‫•‬
‫•‬

‫‪ long‬و ‪
...
unsigned‬‬
‫‪
...
إن اﺳـﺘﺨﺪام ‪ long‬ﻳﻌﻄـﻲ‬
‫اﻟﻤﺘﺤﻮل أآﺒﺮ ﻣﺠﺎل ﻣﻤﻜﻦ ﻟﻸﻋﺪاد اﻟﺘﻲ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ
...
أﻣـﺎ ﺣﺎﻟﻴـﺎ ﺗﺤـﺖ اﻟﻮﻧـﺪوز‬
‫وﺑﺎﺳﺘﺨﺪام اﻷﺟﻬﺰة اﻟﺤﺪﻳﺜﺔ ﻓﺈن ال ‪ int‬وال ‪ long‬آﻼهﻤﺎ ﺗﺄﺧﺬ ﻣﺴـﺎﺣﺔ ﻣﻘـﺪارهﺎ 23ﺑـﺖ
...
long‬وﻟﻜـﻦ ﻣـﻦ أﺟـﻞ اﻟﺘﻮاﻓﻘﻴـﺔ ﺑ ـﻴﻦ اﻟﻤﺘﺮﺟﻤـﺎت اﻟﻤﺨﺘﻠﻔ ـﺔ ﻳﺠـﺐ أن ﺗﻌﻠ ـﻢ أن ‪ int‬ﺗﺘﻌﻠـﻖ ﺑﺎﻟﺤﺎﺳـﺐ‬
‫ـ‬
‫ـ‬
‫ـ‬
‫ـ‬
‫ـ‬
‫ـ‬
‫ـ ـ‬
‫ـ‬
‫ـ‬
‫ـ‬
‫ـ‬
‫اﻟﻤﺴﺘﺨﺪم واﻟﻤﺘﺮﺟﻢ اﻟﻤﺴﺘﺨﺪم أﻣﺎ ‪ long‬ﻓﻬﻲ دوﻣﺎ ﺗﺤﺠﺰ أآﺒﺮ ﻣﺴﺎﺣﺔ ﻣﻤﻜﻨﺔ ﻣﻦ أﺟﻞ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻷﻋﺪاد وﻗـﺪ ﺗﻜـﻮن‬
‫46ﺑﺖ ﻓﻲ ﻋﻠﻰ ﻣﻌﺎﻟﺠﺎت 46ﺑﺖ اﻟﺠﺪﻳﺪة
...
int‬ﻓﻴﺪل ﻋﻠﻰ أن اﻟﻤﺘﺤﻮل ﺳـﻮف ﻳﺴـﺘﺨﺪم ﻣـﻦ أﺟـﻞ ﻣﺠـﺎل ﺻـﻐﻴﺮ ﻟﻸﻋـﺪاد
...

‫وﻣﺜﺎل ﻋﻠﻰ ﺗﻌﺮﻳﻒ اﻟﻤﺘﺤﻮﻻ ﺑﺎﺳﺘﺨﺪام اﻟﻮاﺻﻒ ‪: short‬‬
‫;‪day_of_week‬‬

‫‪short int‬‬

‫ﻓﻲ اﻟﻤﺜﺎﻟﻴﻦ اﻟﺴﺎﺑﻘﻴﻦ ﻳﻤﻜﻦ ﺗﺠﺎهﻞ اﻟﻨﻮع ‪ ، int‬أي ﻳﻤﻜﻦ اﻟﺘﻌﺮﻳﻒ آﺎﻟﺘﺎﻟﻲ :‬
‫;‪memory_address‬‬
‫;‪day_of_week‬‬

‫‪long‬‬
‫‪short‬‬

‫أﻳﻀﺎ اﺳﺘﺨﺪام ‪ long‬ﻗﺒﻞ ‪ double‬ﻳﻌﻄﻲ اﻟﻤﺘﺤﻮل ﻣﺠﺎل أآﺒﺮ ﻣﻦ اﻟﻤﺠﺎل اﻟﻤﺴﺘﺨﺪم ﻓﻲ ‪
...
أﻣﺎ ﻓﻲ ﺣﺎﻟﺔ أردﻧﺎ‬
‫أن ﻳﻜﻮن ﻣﺠﺎل اﻷﻋﺪاد اﻟﻤﺴﺘﺨﺪﻣﺔ هﻲ ﻓﻘﻂ ﻣﻮﺟﺒﺔ ﻓﻴﺠﺐ أن ﻧﺴـﺒﻖ ‪ int‬أو ‪ char‬ﺑﺎﻟﻮاﺻـﻒ ‪
...
char‬وآﻤﺜﺎل ﻋﻠﻰ اﺳﺘﺨﺪام هﺬا اﻟﻮاﺻﻒ :‬
‫;‪natural‬‬
‫;‪record_number‬‬
‫;‪i_am_byte‬‬

‫‪unsigned int‬‬
‫‪unsigned‬‬
‫‪unsigned char‬‬

‫إن اﺳﺘﺨﺪام ‪ int‬ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ آﺎن اﺧﺘﻴـﺎري وﻳﻤﻜـﻦ ﺗﺠﺎهﻠﻬـﺎ
...

‫أﺧﻴﺮا ، إن اﻟﻮاﺻﻒ ‪ const‬ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻪ ﻣﻊ ﺗﻌﺮﻳﻒ أي ﻣﺘﺤﻮل وذﻟﻚ ﻟﺘﺤﺪﻳﺪ أن ﻗﻴﻤﺔ هﺬا اﻟﻤﺘﺤﻮل ﻟﻦ ﺗﺘﻐﻴـﺮ أﺑـﺪا‬
‫أﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ
...
اﻟﻤﺘـﺮﺟﻢ ﻓـﻲ هـﺬﻩ اﻟﺤﺎﻟـﺔ ﻳﺴـﺘﻄﻴﻊ أن ﻳﻀـﻊ هـﺬا‬
‫اﻟﻤﺘﺤﻮل ﻓﻲ ذاآﺮة ﻗﺎﺑﻠﺔ ﻟﻠﻘﺮاﺋﺔ ﻓﻘﻂ أو ﻳﻘﻮم ﺑﺎﻟﺘﻌﺪﻳﻞ ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﺸـﻜﻞ اﻟـﺬي ﻳﺮﻳـﺪ )‪
...
3 = ‪pi‬‬
‫;01 = ‪student_number‬‬

‫‪const double‬‬
‫‪const int‬‬

‫ﻣﻦ ﻏﻴﺮ أي ﻋﻤﻠﻴﺔ ﺗﻬﻴﺌﺔ ﻓﺈن هﺬا ﻳﻌﺘﺒﺮ ﺧﻄﺄ أن ﺗﻜﺘﺐ :‬
‫;‪pi‬‬

‫‪const double‬‬

‫هﻨﺎ ﻟﻢ ﻧﻌﻄﻲ اﻟﻤﺘﺤﻮل ‪ pi‬أي ﻗﻴﻤﺔ وﺑﻤﺎ أﻧﻪ ﻻ ﻳﻤﻜﻦ اﻋﻄﺎء ‪ pi‬أي ﻗﻴﻤﺔ أﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻓﺈن ‪ pi‬ﺗﺒﻘﻰ ذات ﻗﻴﻤـﺔ‬
‫ﻏﻴﺮ ﻣﻌﺮﻓﺔ وﺑﺎﻟﺘﺎﻟﻲ ﻓﺈن ﻣﺜﻞ هﺬا اﻟﻨﻮع ﻣﻦ اﻟﺘﻌﺮﻳﻔﺎت ﻳﻌﻄﻴﻨﺎ ﺧﻄﺄ أﺛﻨﺎء اﻟﺘﺮﺟﻤﺔ
...
arabteam2000
...
( MSDN‬‬
‫‪Range of Values‬‬
‫‪System dependent‬‬
‫‪System dependent‬‬
‫721 ‪–128 to‬‬
‫767,23 ‪–32,768 to‬‬
‫746,384,741,2 ‪–2,147,483,648 to‬‬
‫‪–9,223,372,036,854,775,808 to‬‬
‫708,577,458,630,273,322,9‬
‫721 ‪–128 to‬‬
‫552 ‪0 to‬‬
‫767,23 ‪–32,768 to‬‬
‫535,56 ‪0 to‬‬
‫746,384,741,2 ‪–2,147,483,648 to‬‬
‫592,769,492,4 ‪0 to‬‬
‫)‪3
...
7E +/- 308 (15 digits‬‬
‫)‪1
...
وﻻﺣﻆ ﻓﻲ اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﻓﺈن اﻷﻧﻮاع اﻟﻤﺴـﺒﻮﻗﺔ ب ﻋﻼﻣﺘـﻴﻦ )_( هـﻲ اﺿـﺎﻓﺔ ﻣـﻦ‬
‫اﻟﻔﻴﺠﻮال ﺳﻲ++ أي أن اﺳﺘﺨﺪاﻣﻬﺎ ﻳﻌﻨﻲ أن ﺑﺮﻧﺎﻣﺠﻚ ﺳﻮف ﻳﺘﺮﺟﻢ ﻓﻘﻂ ﻓﻲ ﺑﻴﺌﺔ اﻟﻔﻴﺠـﻮال ﺳـﻲ++
...
اﻟﺸـﺊ‬
‫اﻟﻮﺣﻴﺪ اﻟﺬي ﻗﺪ ﻳﻔﻴﺪك هﻮ 46‪ __int‬اﻟﺘﻲ ﺗﻌﻄﻴﻚ ﻣﺠﺎل ﺿﺨﻢ ﺟﺪا ﻟﻼﻋـﺪاد وﻟﻜـﻦ ﻳﺠـﺐ أن ﺗﻨﺘﺒـﻪ ﻋﻠـﻰ أن‬
‫اﺳﺘﺨﺪام 46‪ __int‬هﻮ أﺑﻄﺄ ﻣﻦ اﺳﺘﺨﺪام ‪ long‬أو ‪ int‬وﺧﺎﺻﺔ ﻓﻲ ﺣﺴﺎب اﻟﺘﻌﺎﺑﻴﺮ اﻟﺮﻳﺎﺿﻴﺔ
...
arabteam2000
...
2 اﻟﺘﻌﺎﺑﻴﺮ اﻟﺤﺴﺎﺑﻴﺔ – ‪Arithmetic expressions‬‬

‫إن ﻟﻐﺔ اﻟﺴﻲ++ ﺗﺪﻋﻢ اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﻌﺎدﻳﺔ ﻣﺜﻞ اﻟﺠﻤﻊ )+( و اﻟﻄﺮح )-( و اﻟﻀـﺮب )*( واﻟﻘﺴـﻤﺔ )/( وأﻳﻀـﺎ‬
‫ﺗﺪﻋﻢ ﻋﻤﻠﻴﺔ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ ﻟﻸﻋﺪاد اﻟﺼﺤﻴﺤﺔ وهﻲ )%(
...
ﻳﻮﺟﺪ ﻣﻌﺎﻣﻼت أﺧﺮى ﺗﻄﺒﻖ ﻋﻠﻰ ﺣﺪ واﺣﺪ وهـﻲ‬
‫ﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ ﻣﻌﺎﻣﻞ اﻻﺷﺎرة اﻟﺴـﺎﻟﺒﺔ )-( وﻣﻌﺎﻣـﻞ اﻻﺷـﺎرة اﻟﻤﻮﺟﺒـﺔ )+( ، اﻷﺧﻴﺮﺗـﺎن ﺗﺴـﻤﻰ ﻣﻌـﺎﻣﻼت أﺣﺎدﻳـﺔ أو‬
‫‪ unary‬وذﻟﻚ ﺑﺴﺒﺐ أﻧﻬﺎ ﺗﻄﺒﻖ ﻋﻠﻰ ﺣﺪ واﺣﺪ
...
14 * radius * radius‬‬
‫‪distance / time‬‬
‫001 % ‪money‬‬
‫آﻤﺎ ﺗﻼﺣﻆ ﻓﻲ اﻟﻤﺜﺎل اﻷول ﻓﺈن اﻟﻘﻴﻤﺔ 21 ﺿﺮﺑﺖ ﻣﻊ ﻣﺎ ﻳﺤﺘﻮي ﻋﻠﻴﻪ اﻟﻤﺘﺤﻮل ‪
...

‫إن اﻟﺘﻌﺒﻴﺮ اﻟﺤﺴﺎﺑﻲ ﻓﻲ ﻟﻐﺔ ﺳﻲ++ ﻳﺘﻢ ﺣﺴﺎﺑﻪ ﻋﻠﻰ ﺣﺴﺐ أوﻟﻮﻳﺔ اﻟﻌﻮاﻣﻞ اﻟﻤﺴﺘﺨﺪﻣﺔ ﻓﻲ اﻟﺘﻌﺒﻴﺮ
...
اﻟﺠـﺪول 2-2 ﻳﻮﺿـﺢ اﻟﻤﻌـﺎﻣﻼ اﻟﺤﺴـﺎﺑﻴﺔ ﺣﺴـﺐ‬
‫أوﻟﻮﻳﺘﻬﺎ
...

‫واﻟﻀﺮب واﻟﻘﺴﻤﺔ وﺑﺎﻗﻲ اﻟﻘﺴـﻤﺔ هـﻲ ﻓـﻲ اﻟﻤﻨﺘﺼـﻒ
...

‫وآﻤﺜﺎل ﻋﻠﻰ هﺬا إﻟﻴﻚ ﺑﺎﻟﺘﻌﺒﻴﺮ اﻟﺘﺎﻟﻲ :‬
‫4*3+2‬
‫اﻟﺘﻌﺒﻴﺮ اﻟﺴﺎﺑﻖ ﻗﻴﻤﺘﻪ ﺗﺴﺎوي 41 ﻷﻧﻪ أوﻻ ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﻣﻌﺎﻣﻞ اﻟﻀﺮب ﻋﻠﻰ 3 و 4 اﻟﺬي ﻧﺘﻴﺠﺘﻪ 21 وﻣﻨﻪ اﻟﺠﻤﻊ ﻋﻠـﻰ‬
‫2 و 21 اﻟﺬي ﻳﻨﺘﺞ 41
...
ﻓـﻲ اﻟﻤﺠﻤﻮﻋـﺔ‬
‫اﻷوﻟﻰ ﺑﺘﻢ اﻟﺘﻨﻔﻴﺬ ﻣﻦ اﻟﻴﻤﻴﻦ إﻟﻰ اﻟﻴﺴﺎر ، أﻣﺎ اﻟﺜﺎﻧﻴﺔ واﻟﺜﺎﻟﺜﺔ ﻓﻴﺘﻢ ﺗﻨﻔﻴـﺬهﺎ ﻣـﻦ اﻟﻴﺴـﺎر إﻟـﻰ اﻟﻴﻤـﻴﻦ
...

‫)))01-(+(-(‬
‫)4 * )5 / )2 * 01(((‬
‫)5 + )3 – 2((‬

‫)‪(right to left‬‬
‫)‪(left to right‬‬
‫)‪(left to right‬‬

‫01-+-‬
‫4 * 5 / 2 * 01‬
‫5+3–2‬

‫اﻟﻤﺜﺎل اﻷول ﻻﺣﻆ أن اﻟﺘﻨﻔﻴﺬ ﻳﺘﻢ ﻣﻦ اﻟﻴﻤﻴﻦ إﻟﻰ اﻟﻴﺴﺎر وﺑﺎﻟﺘﺎﻟﻲ ﻳﺘﻢ ﺗﻨﻔﻴﺬ اﺷـﺎرة اﻟﻨـﺎﻗﺺ اﻷﻗـﺮب إﻟـﻰ اﻟﻌـﺪد أوﻻ‬
‫ﻟﺘﺮﺟﻊ اﻟﻘﻴﻤﺔ 01- وﻣﻨﻪ اﺷﺎرة اﻟﻤﻮﺟﺐ ﻟﺘﺮﺟﻊ 01- وأﺧﻴﺎر اﻟﺴﺎﻟﺐ ﻟﺘﺮﺟﻊ 01
...
اﻟﻤﺜﺎل اﻷﺧﻴـﺮ ﻳـﺘﻢ‬
‫ﺗﻨﻔﻴﺬ أول ﻋﻤﻠﻴﺔ ﻃﺮح ﻟﺘﺮﺟﻊ 1- وﺑﻌﺪهﺎ اﻟﺠﻤﻊ ﻋﻠﻰ 1- و 5 ﻟﺘﻜﻮن اﻟﻨﺘﻴﺠﺔ 4
...
وﺑﺎﻟﺘـﺎﻟﻲ اﻟﺘﻌﺒﻴـﺮ ﻳﺼـﺒﺢ 5 + 21 + 2 اﻵن ﻳـﺘﻢ‬
‫ﺣﺴﺎب اﻟﺠﻤﻊ ﻣﻦ اﻟﻴﺴﺎر إﻟﻰ اﻟﻴﻤﻴﻦ ﺑﺪأ ﻣﻦ 2 و 21 ﻟﻴﺼﺒﺢ اﻟﺘﻌﺒﻴﺮ 5 + 41 وأﺧﻴﺮا ﺗﻜﻮن ﻧﺘﻴﺠﺔ اﻟﺘﻌﺒﻴﺮ 91
...
arabteam2000
...
أﻣﺎ ﻓﻲ ﺣﺎﻟﺔ آـﺎن أﺣـﺪ اﻟﺤـﺪﻳﻦ ﻋﻠـﻰ اﻷﻗـﻞ ﻋـﺪد ﺣﻘﻴﻘـﻲ ‪ float‬ﻓـﺈن‬
‫اﻟﺠﻮاب ﻳﻜﻮن ﻋﺪد ﺣﻘﻴﻘﻲ
...
31‬
‫0
...
2‬
‫6
...
وآﻤﺜـﺎل‬
‫ﻋﻠﻰ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ ﻟﺪﻳﻨﺎ :‬
‫5 % 31‬
‫5 % 51‬
‫5 % 31-‬
‫5- % 31‬

‫ﺗﺴﺎوي‬
‫ﺗﺴﺎوي‬
‫ﺗﺴﺎوي‬
‫ﺗﺴﻮاي‬

‫3‬
‫0‬
‫3-‬
‫3‬

‫ﻓﻲ ﺣﺎﻟﺔ أﺣﺪ اﻟﺤﺪﻳﻦ آﺎن ﺳﺎﻟﺒﺎ ﻓﺈن اﺷﺎرة ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ ﺗﻜﻮن ﻣﺸﺎﺑﻬﺔ ﻷﺷﺎرة اﻟﻤﻘﺴﻮم ﻋﻠﻴﻪ آﻤـﺎ ﻓـﻲ اﻟﻤﺜـﺎل‬
‫اﻟﺴﺎﺑﻖ
...

‫ﻗﻤﺖ ﺑﺎﻻﺳﺘﻔﺎﺿﺔ ﻓﻲ اﻟﺸﺮح ﻋﻠﻰ هﺬﻩ اﻟﻤﻌﺎﻣﻼت اﻟﺴﻬﻠﺔ ﻷﻧﻪ ﻓﻲ اﻟﺴﻲ++ وآﻤـﺎ ﺳـﻮف ﻧـﺮى ﻻﺣﻘـﺎ‬
‫ﻓﻲ ﻗﺴﻢ اﻟﺒﺮﻣﺠﺔ ﻏﺮﺿﻴﺔ اﻟﺘﻮﺟﻪ ‪ Object Oriented Programming‬أﻧﻪ ﻳﻤﻜﻦ اﻋﺎدة ﺑﺮﻣﺠـﺔ اﻟﻌﻮاﻣـﻞ ﻣـﻦ‬
‫أﺟﻞ اﻋﻄﺎﺋﻬﺎ ﺧﻮاص ﺟﺪﻳﺪة
...
2 اﻟﺘﺤﻮﻳﻞ ﺑﻴﻦ اﻷﻧﻮاع – ‪Type conversions‬‬
‫ﻓﻲ هﺬا اﻟﻘﺴﻢ ﺳﻮف ﻧﺤﺎول اﻻﺟﺎﺑﺔ ﻋﻠﻰ اﻟﺴﺆال اﻟﺘﺎﻟﻲ : ﻣﺎذا ﻳﺤﺪث إذا أردﻧﺎ ﺗﻨﻔﻴـﺬ ﺗﻌﺒﻴـﺮ ﺣﺴـﺎﺑﻲ ﻳﺘﺮآـﺐ ﻣـﻦ‬
‫ﺣﺪود ذات أﻧﻮاع ﻣﺨﺘﻠﻔﺔ ؟‬
‫ﻓﻲ اﻟﺒﺪﻳﺔ ﻳﺤﺐ أن أﻧﻮﻩ ﻋﻠﻰ أن ﻣﻌﻈﻢ اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ ﺗﺘﻢ ﻋﻠﻰ ﻧﻮع ‪ int‬وذﻟﻚ ﺑﺴﺐ أن ‪ int‬داﺋﻤﺎ ﺗﻜﻮن ﺑﺤﺠـﻢ‬
‫ﻣﺴﺠﻞ اﻟﻤﻌﺎﻟﺞ اﻟﺪاﺧﻠﻲ وﺑﺎﻟﺘﺎﻟﻲ ﺗﻜﻮن اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ ﻋﻠﻴﻬﺎ أﺳﺮع ﻣﺎﻳﻤﻜﻦ
...
unsigned int‬ﻃﺒﻌﺎ هﺬا ﻓﻲ ﺣﺎﻟﺔ ﻟﻢ ﻧﻘـﻢ ﺑﺎﺟﺒـﺎر اﻟﺜﺎﺑـﺖ أو اﻟـﺮﻗﻢ ﻋﻠـﻰ أن ﻳﻜـﻮن ‪ long‬وذﻟـﻚ ﺑـﺬآﺮ‬
‫اﻟﻼﺣﻘﺔ ‪ L‬ﺑﻌﺪ اﻟﺮﻗﻢ وﻋﻨﺪهﺎ ﻳﺠﺐ أن ﻧﻘﻮم ﺑﺘﺤﻮﻳﻼت أﺧﺮى ﻋﻠﻰ اﻷرﻗﺎم أو اﻟﻤﺘﺤﻮﻻت ﻓﻲ اﻟﺘﻌﺒﻴﺮ
...
وﻳـﺘﻢ هـﺬا ﻋﻠـﻰ ﺣﺴـﺐ‬
‫اﻟﺘﺮﺗﻴﺐ اﻟﺘﺎﻟﻲ :‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬

‫إذا آﺎن أﺣﺪ اﻟﺤﺪﻳﻦ ‪ ، long double‬ﻳﺘﻢ ﺗﺤﻮﻳﻞ اﻵﺧﺮ إﻟﻰ ‪
...
double‬‬
‫إذا آﺎن أﺣﺪ اﻟﺤﺪﻳﻦ ‪ ، float‬ﻳﺘﻢ ﺗﺤﻮﻳﻞ اﻵﺧﺮ إﻟﻰ ‪
...

‫إذا آﺎن أﺣﺪ اﻟﺤـﺪﻳﻦ ‪ ، unsigned long int‬ﻳـﺘﻢ ﺗﺤﻮﻳـﻞ اﻵﺧـﺮ إﻟـﻰ ‪
...
unsigned long int‬‬
‫إذا آﺎن أﺣﺪ اﻟﺤﺪﻳﻦ ‪ ، long int‬ﻳﺘﻢ ﺗﺤﻮﻳﻞ اﻵﺧﺮ إﻟﻰ ‪
...
unsigned int‬‬

‫اﻟﻌﻤﻠﻴﺔ ﺗﺒﺪو ﻣﻌﻘﺪة ﻋﻨﺪ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻷﻋﺪاد اﻟﻐﻴﺮ ﻣﺆﺷﺮة أو ‪
...
ui + si‬ﺑﺎﻻﻋﺘﻤﺎد ﻋﻠﻰ اﻟﻘﻮاﻋﺪ اﻟﺴﺎﺑﻘﺔ ﻓﺈن اﻟﺤﺪ اﻟﺜﺎﻧﻲ ﺳﻮف ﻳﺤـﻮل إﻟـﻰ ‪unsigned‬‬
‫‪
...
ﻓـﺈن ﻣﺠـﺎل اﻟﻘـﻴﻢ اﻟﻤﻤﻜـﻦ ﺗﻤﺜﻴﻠﻬـﺎ ﺑﺎﺳـﺘﺨﺪام ‪ unsigned int‬هـﻮ ﻣـﻦ 0 إﻟـﻰ‬
‫53556
...
arabteam2000
...
وإذا ﺟﻤﻌﻨﺎه ـﺎ ﻣ ـﻊ اﻟﻘﻴﻤ ـﺔ 01 ﻧﺤﺼ ـﻞ ﻋﻠ ـﻰ 93556 أو 30001‪0x‬‬
‫ـ‬
‫ـ‬
‫ـ‬
‫ـ ـ‬
‫ـ‬
‫ـ‬
‫ـ‬
‫ـ‬
‫ﺑﺎﻟﻨﻈﺎم اﻟﺴﺖ ﻋﺸﺮي وﺑﺎﻟﺘﺎﻟﻲ ﻳﻜﻮن اﻟﺠﻮاب 3 ﻷﻧﻨﺎ ﻧﺘﻌﺎﻣﻞ ﻣﻊ أﻋﺪاد 61ﺑﺖ
...
وأﻳﻀـﺎ ﺗﺠﻨـﺐ‬
‫اﺳﺘﺨﺪام اﻷﻋﺪاد اﻟﻐﻴﺮ ﻣﺆﺷﺮة ﻗﺪر اﻟﻤﺴﺘﻄﺎع وآﻦ ﺣﺬرا ﻓﻲ ﺣﺎﻟﺔ ﺗﻢ اﺳﺘﺨﺪاﻣﻬﺎ
...
2 ﻣﻌﺎﻣﻞ اﻻﻟﺤﺎق – ‪The assignment operator‬‬
‫ﻣﻌﺎﻣﻞ اﻻﻟﺤﺎق ﻳﺴﻤﺢ ﺑﺎﻟﺤﺎق ﻗﻴﻤﺔ ﺗﻌﺒﻴﺮ ﻣﺎ إﻟﻰ ﻣﺘﺤﻮل ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ
...

‫أﻳﻀﺎ ﻳﺘﻢ ﺗﺤﻮﻳﻞ ﻧﻮع اﻟﻘﻴﻤﺔ ﺣﺘﻰ ﺗﻮاﻓﻖ ﻧﻮع اﻟﻤﺘﺤﻮل
...

‫وآﻤﺎ أن اﻟﺘﻌﺒﻴﺮ ‪ a + b‬ﻳﺮﺟﻊ ﻗﻴﻤﺔ ﺟﺪﻳﺪة ﻓﺄﻳﻀﺎ اﻟﺘﻌﺒﻴﺮ ‪ a = b‬ﻳﺮﺟﻊ ﻗﻴﻤﺔ ﺟﺪﻳـﺪة وذﻟـﻚ ﺑﻌـﺪ ﺣﺴـﺎب ﻗﻴﻤـﺔ اﻟﺘﻌﺒﻴـﺮ‬
‫واﺳﻨﺎدهﺎ إﻟﻰ اﻟﻤﺘﺤﻮل ، هﺬﻩ اﻟﻘﻴﻤﺔ اﻟﺘﻲ ﻳﺮﺟﻌﻬﺎ ﺗﻌﺒﻴﺮ اﻻﻟﺤﺎق ﺗﺴﺎوي ﻗﻴﻤﺔ اﻟﻤﺘﺤﻮل ﺑﻌﺪ اﻻﺳـﻨﺎد
...
variable‬وﻣﻨﻪ ﻓﺈن اﻟﺘﻌﺒﻴﺮ اﻟﺘﺎﻟﻲ :‬
‫;‪X = y = z = p + q‬‬
‫ﻳﺘﻢ ﺗﻔﺴﻴﺮﻩ ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ :‬
‫;))‪x = (y = (z = p + q‬‬
‫آﻤﺎ ذآﺮﻧﺎ ﻓﺈن ﻋﻤﻠﻴﺔ اﻟﺘﺤﻮﻳﻞ ﺗﺘﻢ ﻋﺒﺮ ﻣﻌﺎﻣﻞ اﻻﻟﺤﺎق ﻓﻤﺜﻼ إذا أردﻧﺎ اﻟﺤﺎق ﻣﺎهﻮ ﻣﻦ ﻧﻮع ‪ int‬إﻟـﻰ ‪ double‬ﻓﺴـﻮف‬
‫ﻳﺘﻢ ﺗﺤﻮﻳﻞ ال ‪ int‬إﻟﻰ ال ‪ double‬أﻣﺎ اﻟﻌﻜﺲ أي ﻣﻦ ‪ double‬إﻟﻰ ‪ int‬ﻓﻄﺒﻌﺎ هـﺬﻩ اﻟﻌﻤﻠﻴـﺔ ﻧﺴـﻤﻴﻬﺎ ﻋﻤﻠﻴـﺔ ﻣـﺪﻣﺮة ﻷن‬
‫اﻟﺮﻗﻢ ﺳﻮف ﻳﻘﺮب إﻟﻰ أﻗﺮب ﻋﺪد ﺻﺤﻴﺢ وﻗﺪ ﻳﻔﻘﺪ ﻣﻦ ﻗﻴﻤﺘﻪ
...


‫أﻳﻀﺎ ﻳﺠﺐ اﻟﺤﺮص ﻋﻨﺪﻣﺎ ﻳﺘﻢ اﺳﺘﺨﺪام ﺳﻠﺴﻠﺔ اﻻﻟﺤﺎﻗﺎت ﻣﻊ أﻧﻮاع ﻣﺨﺘﻠﻔﺔ ﻣﻦ اﻟﻤﺘﺤﻮﻻت
...
21 = ‪iii‬‬
‫ﻳﻀﻊ وﻳﺮﺟﻊ اﻟﻘﻴﻤﺔ 21 وﺑﺎﻟﺘﺎﻟﻲ ﻓﻔﻲ اﻟﺘﻌﺒﻴﺮ اﻟﺘﺎﻟﻲ ﺣﻴﺚ ‪ fff‬هﻲ ﻣﻦ ﻧﻮع ‪
...
21 = ‪fff = iii‬‬
‫ﻓﺈن اﻟﻘﻴﻤﺔ 21 ﻣﻦ ﻧﻮع ‪ int‬ﺳﻮف ﺗﺤﻮل إﻟﻰ ‪ float‬أي اﻟﻘﻴﻤﺔ 0
...
fff‬‬

‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫02‬

‫ﻃﺮﻳﻖ اﻟﺒﺮﻣﺠﺔ ﻓﻲ ﺳﻲ++‬

‫اﻟﺪرس اﻟﺜﺎﻧﻲ – اﻷﻧﻮاع و اﻟﻌﻮاﻣﻞ و اﻟﺘﻌﺎﺑﻴﺮ‬

‫11
...
count‬أي ﺑﻜﻠﻤﺔ أﺧﺮى ﻳـﺘﻢ اﺿـﺎﻓﺔ اﺛﻨـﺎن إﻟـﻰ اﻟﻤﺘﺤـﻮل ‪
...
2 =* ‪power‬‬
‫0
...
أﻳﻀﺎ ﻓﺈن اﻷوﻟﻴﺔ وﻃﺮﻳﻘﺔ اﻟﺘﻨﻔﻴﺬ هﻲ ﺗﻤﺎﻣﺎ ﻣﺜﺎ‬
‫ﻣﻌﺎﻣﻞ اﻻﻟﺤﺎق اﻟﺬي ﺷﺮﺣﻨﺎﻩ ﻓﻲ اﻟﻔﻘﺮة اﻟﺴﺎﺑﻘﺔ
...
sum = sum‬‬
‫أﻳﻀﺎ ﻳﻤﻜﻦ اﺳﺘﺨﺪام ﺳﻠﺴﻠﺔ اﻻﻟﺤﺎﻗﺎت هﻨﺎ أﻳﻀﺎ وﻟﻜﻦ ﻣﺮة أﺧﺮى ﻣﻊ اﻟﺤﺬر ﻓﻲ ﺑﻌﺾ اﻟﺤﺎﻻت ﻻﺣﻆ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ:‬
‫‪fff = iii *= fff‬‬
‫إذا آﺎﻧﺖ ‪ fff‬ﻣﻦ ﻧﻮع ‪ float‬وﺗﺤﺘﻮي ﻋﻠـﻰ اﻟﻘﻴﻤـﺔ 432
...
41 = 432
...
وﺑﻌﺪهﺎ ﻳﺘﻢ اﺳﻨﺎد‬
‫اﻟﻘﻴﻤﺔ 0
...
fff‬‬
‫21
...
وﻳﻤﻜـﻦ أن ﻧﺴـﺘﺨﺪم ﻣﻌﺎﻣـﻞ اﻻﺳـﻨﺎد اﻟﻤﺮآـﺐ آﺎﻟﺘـﺎﻟﻲ ﻣـﻦ‬
‫أﺟﻞ اﺿﺎﻓﺔ اﻟﻘﻴﻤﺔ 1 إﻟﻰ اﻟﻤﺘﺤﻮل :‬
‫1 =+ ‪x‬‬
‫ﻓﻲ اﻟﺤﻘﻴﻘﺔ ﻓﺈن اﻟﺰﻳﺎدة ﺑﻤﻘﺪار واﺣﺪ هﻲ ﻣﻦ اﻟﻌﻤﻠﻴﺎت اﻟﺘﻲ ﺗﻤﺮ ﻋﻠﻴﻨﺎ آﺜﺮة ﻓﻲ ﺑﺮاﻣﺠﻨـﺎ ﻓـﻼ ﻳﺨﻠـﻮ ﺑﺮﻧـﺎﻣﺞ ﻣﻨﻬـﺎ
...
هﺬﻩ اﻟﻌﻤﻠﻴـﺔ‬
‫ﺗﺴﻤﻰ ﺑﻤﻌﺎﻣﻞ اﻻﺿـﺎﻓﺔ اﻟﺒﻌﺪﻳـﺔ أو ‪ postincrement operator‬و ﻣﻌﺎﻣـﻞ اﻻﺿـﺎﻓﺔ اﻟﻘﺒﻠﻴـﺔ أو ‪
...
arabteam2000
...
variable‬وأﻳﻀـﺎ آـﻼ اﻟﺤـﺎﻟﺘﻴﻦ اﻟﺴـﺎﺑﻘﺘﻴﻦ‬
‫ﻓﺈﻧﻬــﺎ ﻳﺮﺟﻌــﺎ ﻗﻴﻤــﺔ
...
أﻣــﺎ اﻟﺜﺎﻧﻴــﺔ‬
‫)‪ (postincrement‬ﻓﺈﻧﻪ ﻳﺘﻢ ارﺟﺎع ﻗﻴﻤﺔ اﻟﻤﺘﺤﻮل ﻗﺒﻞ اﻟﺰﻳﺎدة
...
sum‬وﻟﻮ اﻋﺘﺒﺮﻧﺎ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ :‬
‫++‪sum += count‬‬
‫ﻳﺘﻢ اﺿﺎﻓﺔ ﻗﻴﻤﺔ اﻟﻤﺘﺤﻮل ‪ count‬أﻳﻀﺎ ﺑﻤﻘﺪار 1 وﻟﻜﻦ ﻳﺘﻢ اﺳـﺘﺨﺪام اﻟﻘﻴﻤـﺔ اﻟﺴـﺎﺑﻘﺔ ل‪ count‬ﻓـﻲ اﻟﺘﻌﺒﻴـﺮ
...
sum‬‬
‫ﻓﻲ ﺣﺎﻟﺔ اﺳﺘﺨﺪام ﻣﻌﺎﻣﻞ اﻻﻧﻘﺎص ﻓﺎﺳﺘﺨﺪاﻣﻪ ﺗﻤﺎﻣﺎ ﻣﺜﻞ ﻣﻌﺎﻣﻞ اﻟﺰﻳﺎدة وﻟﻜﻦ ﻳﺘﻢ هﻨـﺎ اﺳـﺘﺨﺪام )--( ﻋﻮﺿـﺎ ﻋـﻦ‬
‫)++( وﻳﺘﻢ اﻻﻧﻘﺎص ﺑﻤﻘﺪار 1
...

‫31
...
أﻣـﺎ ﻋﻤﻠﻴـﺔ‬
‫اﻟﺘﺤﻮﻳﻞ اﻟﺘﻲ ﻧﻘﻮم ﺑﻬﺎ ﻧﺤﻦ ﻓﺘﺴـﻤﻰ ‪
...
double‬إن ﻣﻌﺎﻣﻞ اﻟﺘﺤﻮﻳـﻞ ﺗﻤﺎﻣـﺎ ﻣﺜـﻞ ﺑـﺎﻗﻲ اﻟﻤﻌـﺎﻣﻼت‬
‫أي ﻟﻪ أوﻟﻮﻳﺔ وآﻴﻔﻴﺔ ﻓﻲ اﻟﺘﻨﻔﻴﺬ وهﺬا ﻣﺎﺳﻮف ﺗﺮاﻩ ﻓﻲ ﺁﺧﺮ اﻟﺪرس
...
أﻣﺎ‬
‫اﻟﻄﺮﻳﻘﺔ اﻷﺧﺮى ﻓﻲ آﺘﺎﺑﺔ اﻟﺘﺤﻮﻳﻞ هﻲ اﻟﺘﺎﻟﻴﺔ :‬
‫‪(type-specifier) expression‬‬
‫أي ﻳﺘﻢ آﺘﺎﺑﺔ اﻟﻨﻮع داﺧﻞ أﻗﻮاس ﺛﻢ ﻳﻠﻴﻬﺎ اﻟﺘﻌﺒﻴﺮ اﻟﻤﺮاد ﺗﺤﻮﻳﻠﻪ
...
وآﺄﻣﺜﻠﺔ ﻋﻠﻰ هﺬﻩ ﻟﺪﻳﻨﺎ :‬
‫‪(double) date‬‬
‫‪(char) x‬‬
‫2‪(int) d1 + d‬‬
‫)2‪(int) (d1 + d‬‬
‫ﻓﻲ اﻟﻤﺜﺎل ﻗﺒﻞ اﻷﺧﻴﺮ ﺳﻮف ﻳﺘﻢ ﺗﺤﻮﻳﻞ 1‪ d‬وﺟﻤﻊ اﻟﻘﻴﻤﺔ اﻟﺠﺪﻳﺪة ﻣﻊ 2‪
...
هﺬا ﺑﺴﺒﺐ أن ﻣﻌﺎﻣﻼت اﻟﺘﺤﻮﻳﻞ ﻟﻬﺎ أوﻟﻮﻳﺔ أﻋﻠﻰ ﻣـﻦ اﻟﺠﻤـﻊ وهـﺬا ﻣـﺎ ﺳـﻮف‬
‫ﺗﺮاﻩ ﻓﻲ ﺟﺪول اﻷوﻟﻮﻳﺎت ﻓﻲ ﺁﺧﺮ اﻟﺪرس
...
arabteam2000
...
2 ﻣﻌﺎﻣﻞ اﻟﻔﺎﺻﻠﺔ – ‪The comma operator‬‬

‫ﺁﺧﺮ اﻟﻤﻌﺎﻣﻼت اﻟﺘﻲ ﺳﻮف ﻧﺸﺮﺣﻬﺎ ﻓﻲ هﺬا اﻟﺪرس هﻮ ﻣﻌﺎﻣـﻞ اﻟﻔﺎﺻـﻠﺔ اﻟﺘـﻲ ﺗﺠـﺪ ﻟﻬـﺎ اﺳـﺘﺨﺪاﻣﺎت ﻓـﻲ ﺷـﺘﻰ‬
‫اﻟﺘﻄﺒﻴﻘﺎت
...
وﺑﺎﻟﺘﺎﻟﻲ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻓﺈن 1‪ expression‬ﻳﺘﻢ ﺣﺴﺎﺑﻬﺎ ﺑﺸﻜﻞ آﺎﻣﻞ وﻣـﻦ ﺛـﻢ 2‪
...
expression‬ﻣﺜﺎل ﻋﻠﻰ هﺬا :‬
‫) 3 + ‪s = ( t = 2, t‬‬
‫أوﻻ ﻳﺘﻢ ﺗﻨﻔﻴﺬ اﻟﺘﻌﺒﻴـﺮ 2 = ‪ t‬وﺑﻌـﺪهﺎ اﻟﺘﻌﺒﻴـﺮ 3 + ‪ t‬اﻟـﺬي ﺗﻜـﻮن ﻧﺘﻴﺠﺘـﻪ 5 وﻧﺘﻴﺠـﺔ ﺗﻌﺒﻴـﺮ اﻟﻔﺎﺻـﻠﺔ اﻟﺴـﺎﺑﻖ ﻳﻜـﻮن 5‬
‫وﺑﺎﻟﺘﺎﻟﻲ ﻳﺘﻢ اﺳﻨﺎد 5 إﻟﻰ اﻟﻤﺘﺤﻮل ‪
...


‫أوﻟﻮﻳﺎت اﻟﻤﻌﺎﻣﻼت اﻟﻤﺬآﻮرة ﻓﻲ هﺬا اﻟﺪرس :‬
‫)اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﻣﺄﺧﻮذ ﻣﻦ ‪(MSDN‬‬
‫‪Associativity‬‬

‫‪Name or Meaning‬‬

‫‪Symbol‬‬

‫‪Left to right‬‬

‫‪Post-increment‬‬
‫‪Post-decrement‬‬
‫‪Pre-increment‬‬
‫‪Pre-decrement‬‬
‫‪Unary minus‬‬
‫‪Unary plus‬‬
‫]‪Type cast [for example, (float) i‬‬
‫‪Multiply‬‬
‫‪Divide‬‬
‫‪Remainder‬‬
‫‪Add‬‬
‫‪Subtract‬‬
‫‪Assignment‬‬
‫‪Compound assignment‬‬
‫‪Comma‬‬

‫++‬
‫-‬‫++‬
‫-‬‫‬‫+‬
‫)‪(type‬‬
‫*‬
‫/‬
‫%‬
‫+‬
‫‬‫=‬
‫=- ,=+ ,=% ,=/ ,=*‬
‫,‬

‫‪Right to left‬‬
‫‪Right to left‬‬
‫‪Right to left‬‬
‫‪Left to right‬‬

‫‪Left to right‬‬
‫‪Right to left‬‬
‫‪Right to left‬‬
‫‪Left to right‬‬

‫‪Highest Precedence‬‬

‫‪Lowest Precedence‬‬

‫ﺣﻘﻮق اﻟﻨﺸﺮ ﻣﺤﻔﻮﻇﺔ ﻟﻠﻔﺮﻳﻖ اﻟﻌﺮﺑﻲ ﻟﻠﺒﺮﻣﺠﺔ 1002 )‪(http://www
...
com‬‬

‫32‬


Title: البرمجة
Description: كيف تقوم بالبرمجة عن طريق اللغة C++