Professional Documents
Culture Documents
ﻓﻲ
اﻵن ﻣﻦ أﺟﻞ آﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ اﻷول ﻳﺠﺐ ﻋﻠﻴﻨﺎ ﻣﻦ اﻧﺸﺎء ﻣﻠﻒ آﻮد ﺟﺪﻳﺪ وهﺬا ﻣﻦ اﻷﻣﺮ Newﻣﻦ اﻟﻘﺎﺋﻤﺔ . Fileﺳـﻮف
ﺗﺤﺼﻞ ﻋﻠﻰ ﻧﻔﺲ اﻟﻨﺎﻓﺬة ﻓﻲ اﻟﺸﻜﻞ 1-1وﻟﻜﻦ هﻨﺎ اﻟﺼﻔﺤﺔ Filesهﻲ اﻟﻈﺎهﺮة ﻋﻮﺿﺎ ﻋﻦ . Projectsﻃﺒﻌـﺎ ﻳﻤﻜﻨـﻚ أن
ﺗﺨﻤﻦ ﻣﺎهﻮ اﻟﺬي ﺳﻮف ﻧﺨﺘﺎرﻩ .ﻃﺒﻌﺎ هﻮ . C++ Source Fileﺑﻌﺪ أن ﺗﺨﺘـﺎرﻩ اآﺘـﺐ اﺳـﻢ اﻟﻤﻠـﻒ وﻟـﻴﻜﻦ testوﻣـﻦ ﺛـﻢ
اﺿﻐﻂ ﻣﻮاﻓﻖ .
ﺳﻮف ﺗﺠﺪ أﻧﻪ ﺗـﻢ اﺿـﺎﻓﺔ اﻟﻤﻠـﻒ test.cppإﻟـﻰ اﻟـﺪﻟﻴﻞ اﻟـﻮهﻤﻲ Source Filesوذﻟـﻚ ﺑﺴـﺒﺐ أن هـﺬا اﻟﻤﻠـﻒ ﺳـﻮف
ﻳﺤﺘﻮي ﻋﻠﻰ آﻮد ﻟﻠﻤﺸﺮوع .اﻵن ﻗﻢ ﺑﻜﺘﺎﺑﺔ اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﻓﻲ اﻟﻤﻠﻒ اﻟﻔﺎرغ اﻟﺬي أﻧﺸﺌﺘﻪ .
>#include <iostream.h
)(int main
{
;"cout << "My first program.
;)return (0
}
PROGRAM 1
ﻳﺠﺐ أن ﺗﻨﺘﺒﻪ أن ﻟﻐﺔ اﻟﺴﻲ ++ﺗﻔﺮق ﺑﻴﻦ اﻷﺣﺮف اﻟﻜﺒﻴﺮة واﻷﺣﺮف اﻟﺼﻐﻴﺮة .ﻋﻠـﻰ ﺳـﺒﻴﻞ اﻟﻤﺜـﺎل ﻓـﺈن اﺳـﻢ اﻟﺘـﺎﺑﻊ
mainﻳﺠﺐ أن ﻳﻜﺘﺐ آﻤﺎ هﻮ وﻻ ﻳﻤﻜﻦ آﺘﺎﺑﺘﻪ ك Mainأو MAINوهﻲ آﻠﻬﺎ ﺗﻌﺘﺒﺮ آﺄﺳﻤﺎء ﻣﺨﺘﻠﻔﺔ ﻋﻦ اﻟﺘﺎﺑﻊ . main
)(int main
{
;int sum
;sum = 10 + 20
;cout << sum << endl
;)return (0
}
*/
** This program calculates the sum of 10 and 20 and prints it on screen
** Programmed by : Anonymous
** Date : 1/1/3000
*/
)(int main
{
;int sum // This will hold the sum of the numbers
ﻃﺒﻌﺎ ﺳﻮف ﺗﻘﻮل أن اﻟﺒﺮﻧﺎﻣﺞ اﻟﺜﺎﻧﻲ أﺳﻬﻞ ﻟﻠﻘﺮاﺋﺔ واﻟﻔﻬﻢ ﻣﻦ اﻷول ﻟﻌﺪة أﺳﺒﺎب .
• اﺳﺘﺨﺪام اﻟﺘﻌﻠﻴﻘﺎت أﻳﻨﻤﺎ دﻋﺖ اﻟﺤﺎﺟﺔ ﻟﻬﺎ .
• وﺿﻊ أﺳﻄﺮ ﻓﺎرﻏﺔ ﺑﻴﻦ ﻗﺴﻢ وﺁﺧﺮ ﻓﻲ اﻟﻜﻮد ،اﻷﻗﺴﺎم ﺗﻜﻮن ﻣﺘﺮاﺑﻄﺔ ﻣﻨﻄﻘﻴﺎ ﻓﻴﻤﺎ ﺑﻴﻨﻬﺎ .
• ﺗﺮك ﻣﺴﺎﻓﺎت ﺑﺎدﺋﺔ ﻣﻦ أﺟﻞ ﺳﻬﻮﻟﺔ اﻟﻘﺮاﺋﺔ وﺗﺘﺒﻊ اﻟﺒﺮﻧﺎﻣﺞ .
ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ اﻟﺘﻌﻠﻴﻘﺎت ﻓﻴﻤﻜﻦ آﺘﺎﺑﺘﻬﺎ ﺑﺸﻜﻠﻴﻦ آﻤﺎ هﻮ ﻣﻮﺿﺢ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻷﺧﻴﺮ .اﻷوﻟﻰ ﺑﺎﺳﺘﺨﺪام //وهﻲ ﺗﻘـﻮم
ﺑﺎﻋﺘﺒﺎر آﻞ اﻟﺬي ﺑﻌﺪهﺎ ﺣﺘﻰ ﻧﻬﺎﻳﺔ اﻟﺴﻄﺮ آﺘﻌﻠﻴﻖ .أﻣﺎ اﻟﺸﻜﻞ اﻵﺧﺮ ﺑﺎﺳﺘﺨﺪام * /و */اﻟﺮﻣﺰ اﻷول ﻳﻔـﺘﺢ ﻓﻘـﺮة ﺗﻌﻠﻴـﻖ
واﻟﺮﻣﺰ اﻟﺜﺎﻧﻲ ﻳﻐﻠﻖ هﺬﻩ اﻟﻔﻘﺮة ،ذآﺮت ﻓﻘﺮة ﻷن هﺬا اﻟﻨﻮع ﻣﻦ اﻟﺘﻌﻠﻴﻖ ﻣﻤﻜـﻦ أن ﻳﻤﺘـﺪ ﻋﻠـﻰ ﻋـﺪة أﺳـﻄﺮ أو ﻳﻤﻜـﻦ أن
ﻳﻜﻮن ﻓﻲ ﺳﻄﺮ واﺣﺪ .
1.4ﻣﻠﺨﺺ اﻟﺪرس
• ﻣﻦ أﺟﻞ اﻟﺒﺪأ ﺑﻤﺸﺮوع ﺑﺮﻣﺠﻲ ﻳﺠﺐ اﻧﺸﺎء ﻣﺸﺮوع ﺟﺪﻳﺪ ﻓﻲ اﻟﻔﻴﺠﻮال ﺳﻲ ++ﻋﻦ ﻃﺮﻳـﻖ اﺧﺘﻴـﺎر Newﻣـﻦ
اﻟﻘﺎﺋﻤﺔ . File
• ﻳﺘﻢ اﻧﺸﺎء ﻣﻠﻔﺎت آﻮد ﺟﺪﻳﺪة واﺿﺎﻓﺘﻬﺎ ﻟﻠﻤﺸﺮوع أﻳﻀﺎ ﻣﻦ ﺧﻼل اﻷﻣﺮ Newﻣﻦ اﻟﻘﺎﺋﻤﺔ . File
• ﻗﻤﻨﺎ ﺑﻜﺘﺎﺑﺔ أول ﺑﺮﻧﺎﻣﺞ ﻓﻲ اﻟﺴﻲ ++وﺗﻨﻔﻴﺬﻩ .
• ﺗﻌﻠﻤﻨﺎ آﻴﻔﻴﺔ آﺘﺎﺑﺔ ﺗﻌﻠﻴﻘﺎت ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ .
ﻣﻦ أﺟﻞ ﺗﻨﺰﻳﻞ ﻣﻠﻔﺎت ﻣﺸﺮوع هﺬا اﻟﺪرس اﻧﻘﺮ هﻨﺎ .
اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ اﻟﺴﻲ ++ﻳﺼﻒ اﻟﻌﻤﻠﻴﺎت واﻟﻤﻬـﺎم اﻟﺘـﻲ ﺳـﻮف ﺗﻄﺒـﻖ ﻋﻠـﻰ اﻟﻌﻨﺎﺻـﺮ اﻟﺘـﻲ ﺗﺤﻤـﻞ اﻟﺒﻴﺎﻧـﺎت .ﻣـﻦ اﻷﻣـﻮر
اﻟﻤﻬﻤﺔ ﺟﺪا آﻤﺎ هﻮ اﻟﺤﺎل ﻓﻲ ﺑﺎﻗﻲ اﻟﻠﻐﺎت هﻮ ﻋﻤﻠﻴﺔ ﺗﺤﺪﻳﺪ ﻣﺎ هﻮ ﻧﻮع هﺬﻩ اﻟﻌﻨﺎﺻﺮ أو ﺑﻜﻠﻤـﺔ أﺧـﺮى أﻧـﻮاع اﻟﻤﻌﻄﻴـﺎت.
ﻳﻤﻜﻦ ﺗﺼﻨﻴﻒ هﺬﻩ اﻷﻧﻮاع ﻓﻲ اﻟﺴﻲ ++آﺄﻧﻮاع أﺳﺎﺳﻴﺔ وأﻧﻮاع ﻣﺸﺘﻘﺔ .ﻋﻠـﻰ ﺳـﺒﻴﻞ اﻟﻤﺜـﺎل اﻷﻧـﻮاع اﻟﻤﺸـﺘﻘﺔ هـﻲ
ﺗﻠﻚ اﻷﻧﻮاع اﻟﺘﻲ ﺗﻌﺘﻤﺪ ﻋﻠﻰ اﻷﻧﻮاع اﻷﺳﺎﺳﻴﺔ ﻣﺜﻞ اﻟﻤﺼﻔﻮﻓﺎت .
إن اﻟﺒﻴﺎﻧﺎت اﻟﺘﻲ ﻳﺘﻢ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻤﻜﻦ ﺗﺼﻨﻴﻔﻬﺎ إﻟﻰ ﻗﺴﻤﻴﻦ .اﻷوﻟﻰ هﻲ اﻟﺘـﻲ ﺗﺒﻘـﻰ ﺛﺎﺑﺘـﺔ ﻃـﻮل
ﻓﺘﺮة ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ،أﻣﺎ اﻟﺜﺎﻧﻴﺔ هﻲ اﻟﺘﻲ ﺗﺘﻐﻴﺮ ﻗﻴﻤﺘﻬﺎ .اﻻﺳﻢ اﻟﺬي ﻳﻄﻠﻖ ﻋﻠﻰ اﻷوﻟﻰ هﻲ اﻟﺜﻮاﺑﺖ أو Constantsأﻣﺎ
اﻟﺜﺎﻧﻴﺔ ﻓﺴﻮف ﻧﻄﻠﻖ ﻋﻠﻴﻬﺎ اﺳﻢ اﻟﻤﺘﺤﻮﻻت أو . Variablesﻃﺒﻌﺎ آﻼ اﻟﺼﻨﻔﻴﻦ اﻟﺴﺎﺑﻘﻴﻦ ﻳﺠﺐ أن ﺗﻨﻄﺒﻖ ﻋﻠﻴـﻪ ﻣﺎذآﺮﻧـﺎﻩ
ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ اﻷﻧﻮاع ؛ ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل اﻟﻤﺘﺤﻮﻻت ﻳﺠﺐ ﺗﺤﺪﻳﺪ ﻧﻮﻋﻬﺎ ﺣﺘﻰ ﻧﺴﺘﻄﻴﻊ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ .
أﻣﺎ اﻟﺘﻌﺒﻴﺮ expressionﻓﻬﻮ ﻋﺒﺎرة ﻋﻦ اﻟﺨﻄﻮات واﻟﻘﻮاﻧﻴﻦ اﻟﺘﻲ ﺳﻮف ﻳﺘﻢ ﻣﻦ ﺧﻼﻟﻬﺎ ﺣﺴﺎب ﻗﻴﻤﺔ ﻣﻌﻴﻨـﺔ .اﻟﺘﻌﺒﻴـﺮ
ﻳﺘﻜﻮن ﻣﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺤـﺪود operandsأو اﻟﻘـﻴﻢ و اﻟﻌﻮاﻣـﻞ . operatorsﻟﻐـﺔ اﻟﺴـﻲ ++ﻏﻨﻴـﺔ ﺟـﺪا ﺑﺎﻟﻌﻮاﻣـﻞ اﻟﺘـﻲ
ﺗﻌﻜﺲ اﻟﻌﻤﻠﻴﺎت اﻟﺘﻲ ﺗﺘﻢ ﻓﻲ اﻟﻤﻌﺎﻟﺞ ﻣﺜﻞ ﻋﻤﻠﻴﺎت اﻟﺠﻤﻊ واﻟﻀﺮب واﻻزاﺣﺔ .اﻟﻌﻮاﻣﻞ ﻳﻤﻜﻦ ﺗﺼﻨﻴﻔﻬﺎ إﻟـﻰ ﻋـﺪة أﺻـﻨﺎف
أﻳﻀﺎ ﻓﻤﻨﻬﺎ ﻋﻮاﻣﻞ ﻣﻦ أﺟﻞ اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ آﺎﻟﺠﻤﻊ واﻟﻀﺮب وﻣﻨﻬـﺎ ﻋﻮاﻣـﻞ اﻟﻤﻘﺎرﻧـﺔ آﺎﻷﺻـﻐﺮ واﻷآﺒـﺮ .ﺳـﻮف ﻧﻘـﻮم
ﺑﺸﺮح ﺑﻌﺾ اﻟﻌﻮاﻣﻞ ﻓﻲ هﺬا اﻟﺪرس ﻣﻊ ﺗﻜﻤﻴﻠﻬﺎ ﻓﻲ ﺑﺎﻗﻲ اﻟﺪروس .
هﺬا اﻟﺪرس ﻳﻮﺟﺪ ﻓﻴﻪ ﻋﺪد هﺎﺋﻞ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت ﻣـﻊ ﻗﻠﻴـﻞ ﻣـﻦ اﻟﺘﻄﺒﻴـﻖ ،ﻟـﺬا ﻟـﻴﺲ ﻣـﻦ اﻟﻀـﺮوري ﻓﻬﻤـﻪ ½
ﺑﺸﻜﻞ آﺎﻣﻞ وﻟﻜﻦ ﻳﺠﺐ ﻗﺮاﺋﺘﻪ ﺑﺸﻜﻞ آﺎﻣﻞ واﻟﺮﺟﻮع إﻟﻴﻪ إذا دﻋﺖ اﻟﺤﺎﺟﺔ ﻓﻲ اﻟﺪروس اﻟﻼﺣﻘﺔ .
وﻟﻜﻦ ﻳﻔﻀﻞ ،ﻋﻠﻰ آﻞ اﻷﺣﻮل ،اﺳﺘﺨﺪام اﻟﺼﻴﻐﺔ اﻟﺘﻲ ﺗﺠﻌﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻗﺎﺑﻞ ﻟﻠﻘﺮاﺋﺔ ﺑﺸﻜﻞ واﺿﺢ .
اﻟﺼﻴﻐﺔ اﻟﺜﺎﻧﻴﺔ أو ﻣﺎﻳﺴﻤﻰ ﺑﺎﻟﺘﻤﺜﻴﻞ اﻟﻌﻠﻤﻲ وهﻮ ﻋﺒﺎرة ﻋﻦ رﻗﻢ ﻣﺜﻞ اﻟﺴﺎﺑﻖ وﻟﻜﻦ ﻣﻀﺮوب ﺑﺮﻗﻢ ﻣﺮﻓﻮع إﻟﻰ اﻟﻌـﺪد
10هﺬا اﻷس ﻳﻤﺜﻠﻪ اﻟﺤﺮف eأو Eأﻣﺜﻠﺔ ﻋﻠﻰ هﺬﻩ اﻟﺼﻴﻐﺔ هﻲ :
)12.34e-3 (= 0.01234 )1.0e2 (= 100
اﻵن ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل إذا أردت اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻤﺤـﺮف \ ﻓﻴﺠـﺐ أن ﺗﻜﺘـﺐ ’\\‘ ﻋﻮﺿـﺎ ﻋـﻦ ’\‘ .أﻳﻀـﺎ ﺑﺎﻹﺿـﺎﻓﺔ إﻟـﻰ
ﻣﺤﺎرف اﻟﻬﺮوب اﻟﺴﺎﺑﻘﺔ ﻳﻤﻜﻦ أن أن ﺗﺘﻜﻮن ﺳﻠﺴﻠﺔ اﻟﻬﺮوب ﻣﻦ اﻟﻤﺤﺮف \ ﻳﺘﺒﻌﻬﺎ xوﻣـﻦ ﺛـﻢ واﺣـﺪ أو أآﺜـﺮ ﻣـﻦ اﻷرﻗـﺎم
اﻟﺴﺖ اﻟﻌﺸﺮﻳﺔ .اﻟﻨﺎﺗﺞ هﻮ ﻋﺒﺎرة ﻋﻦ رﻗﻢ ﺳﺖ ﻋﺸﺮي ﻳﻤﺜﻞ دﻟﻴﻞ ﻓﻲ ﺟﺪول اﻟﻤﺤﺎرف ﻓﻲ اﻟﺠﻬﺎز ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜـﺎل
ﻓﺈن اﻟﻤﺤﺮف ’ ‘Xﻗﻴﻤﺘﻪ 0x58ﻓﻲ ﺟﺪول ASCIIوﺑﺎﻟﺘﺎﻟﻲ ﻳﻤﻜﻦ ﺗﻤﺜﻴﻠﻪ أﻳﻀـﺎ ﺑﺎﻟﺼـﻴﻐﺔ ’ . ‘\x58ﺣﺘـﻰ ﻧﻜـﻮن دﻗﻴﻘـﻴﻦ أآﺜـﺮ
اﻟﺼﻴﻐﺔ اﻷﺧﻴـﺮة ﺗﺴـﺘﺨﺪم ﻟﻄﺒﺎﻋـﺔ اﻟﻤﺤـﺎرف اﻟﻤﻮﺟـﻮدة ﻓـﻲ ﺟـﺪول ASCIIاﻟﺘـﻲ ﻻ ﻳﻤﻜـﻦ ادﺧﺎﻟﻬـﺎ ﻣـﻦ ﻟﻮﺣـﺔ اﻟﻤﻔـﺎﺗﻴﺢ
آﺎﻟﻤﺤﺎرف اﻟﻼﺗﻴﻨﻴﺔ وﻏﻴﺮهﺎ .
اﻟﻤﺤﺮف اﻷﺧﻴﺮ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﻘﺎﺋﻤﺔ اﻟﺴﺎﺑﻘﺔ ﻳﻌﺘﺒﺮ اﻟﻤﺤﺮف اﻷول ﻓﻲ ﺟﺪول ASCIIوﻳﺴﻤﻰ ﺑﻤﺤﺮف اﻟﺼـﻔﺮ أو ال
. ‘\0’ NULL Characterهﺬا اﻟﻤﺤﺮف ﻟﻪ اﺳﺘﺨﺪاﻣﺎت ﺧﺎﺻﺔ ﻓﻲ اﻟﺴﻲ وهﺬا ﻣﺎﺳﻮف ﻧﺮاﻩ ﻻﺣﻘﺎ ﻓﻲ هﺬا اﻟﺪرس .
2.5اﻟﻤﻌﺮﻓﺎت – Identifiers
ﻟﻐﺔ اﻟﺴﻲ ++ﻣﺜﻞ ﺑﺎﻗﻲ اﻟﻠﻐﺎت ﺗﺘﻄﻠﺐ ﻣﻨﻚ اﻋﻄﺎء أﺳﻤﺎء ﻣﻌﻴﻨﺔ ﻟﻠﻤﻌﻄﻴﺎت اﻟﺘﻲ ﺗﺴﺘﺨﺪﻣﻬﺎ ﻓﻲ ﺑﺮﻧﺎﻣﺠـﻚ .هـﺬﻩ
اﻷﺳﻤﺎء ﺗﺪﻋﻰ ﺑﺎﻟﻤﻌﺮﻓﺎت أو Identifiersوﻳﺘﻢ وﺿﻌﻬﺎ أو ﺗﻜﻮﻳﻨﻬﺎ ﻣﻦ ﻗﺒـﻞ اﻟﻤﺒـﺮﻣﺞ .وﻳﺠـﺐ أن ﻳﺼـﻨﻊ اﻟﻤﻌـﺮف ﺑﺎﻻﻋﺘﻤـﺎد
ﻋﻠﻰ اﻟﻘﺎﻋﺪة اﻟﺘﺎﻟﻴﺔ :
اﻟﻤﻌﺮف هﻮ ﻋﺒﺎرة ﻋﻦ ﺧﻠﻴﻂ ﻣـﻦ اﻟﻤﺤـﺎرف واﻷرﻗـﺎم واﻟﺘـﻲ ﻳﺠـﺐ أن ﺗﺒـﺪأ ﺑﻤﺤـﺮف .اﻟﺮﻣـﺰ )_( أو Underscore
ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻪ ﺑﺎﻟﻤﻌﺮف وهﻮ ﻳﻌﺘﺒﺮ آﺤﺮف ﻋﺎدي .
ﻣﻦ اﻟﻘﺎﻋﺪة اﻟﺴﺎﺑﻘﺔ ﻳﻤﻜﻦ أن ﻧﻀﻊ ﺑﻌﺾ اﻷﻣﺜﻠﺔ ﻟﻤﻌﺮﻓﺎت ﺗﻌﺘﺒﺮ ﺻﺤﻴﺤﺔ ﻟﻤﺘﺮﺟﻢ اﻟﺴﻲ: ++
time counter BUFFER
x unit_cost h2o
_MAX programName AVeryLongIdentifier
ﻳﻌﺘﺒﺮ أي ﻣﻌﺮﻓﻴﻦ هﻤﺎ واﺣﺪ ﻓﻲ ﺣﺎﻟﺔ آﺎن ﻟﻬﻤﺎ ﻧﻔﺲ اﻻﻣﻼء وﻧﻔﺲ ﺣﺎﻟﺔ اﻷﺣـﺮف )اﻟﺼـﻐﻴﺮة أم اﻟﻜﺒﻴـﺮة( .وﺑﺎﻟﺘـﺎﻟﻲ
اﻟﻤﻌﺮﻓﻴﻦ abcdو abcDﻻ ﻳﻌﺘﺒﺮا واﺣﺪ.
ﻳﻔﻀﻞ أن ﻳﻌﻄﻲ اﻟﻤﺒﺮﻣﺞ اﺳﻤﺎء ﻟﻠﻤﻌﺮﻓﺎت ﺗﺪل ﻋﻠﻰ اﺳﺘﺨﺪاﻣﻬﺎ .ﻋﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل إذا آﺎن اﻟﻤﺒﺮﻣﺞ ﻳﺘﻌﺎﻣـﻞ ﻣـﻊ
اﻟﻮﻗﺖ ﻓﻲ ﺑﺮﻧﺎﻣﺠﻪ ﻓﻴﻔﻀﻞ أن ﻳﺴﻤﻲ ﻣﻌﺮﻓﺎﺗﻪ ب hoursو minutesو secondsوهﺬا ﻃﺒﻌﺎ أﻓﻀﻞ ﺑﻜﺜﻴﺮ ﻣﻦ ﺗﺴـﻤﻴﺘﻬﺎ h
وmو.s
ﺑﻌﺾ اﻟﻤﻌﺮﻓﺎت ﺗﻜﻮن ﻣﺤﺠﻮزة ﻻﺳﺘﺨﺪام ﻟﻐﺔ اﻟﺴﻲ ++وهﻲ ﻣﺎﺗﺴﻤﻰ ب . language keywordsاﻟﺴﺮد اﻟﻜﺎﻣـﻞ
ﻟﻬﺬﻩ اﻟﻤﻌﺮﻓﺎت ﻣﻌﻄﻰ ﻓﻲ اﻷﺳﻔﻞ وﻟﻜﻦ ﺷﺮﺣﻬﺎ ﺳﻮف ﻳﺎﺗﻲ ﻻﺣﻘﺎ آﻞ ﻓﻲ ﻗﺴﻤﻪ .
Memory
2.7اﻟﻮاﺻﻔﺎت – Qualifiers
اﻟﻮاﺻﻔﺎت ﻓﻲ ﻟﻐﺔ اﻟﺴﻲ ++اﻟﺘﻲ ﺳﻮف ﻧﺸﺮﺣﻬﺎ ﻓﻲ هﺬﻩ اﻟﻔﻘﺮة هﻲ :
longو . short •
signedو . unsigned •
. const •
اﻟﻮاﺻﻔﻴﻦ longو shortﻳﺴﺘﺨﺪان ﻗﺒﻞ اﻟﻨﻮع intﻣﻦ أﺟﻞ اﻟﺘﻌﺪﻳﻞ ﻓـﻲ ﻃـﻮل اﻟﻤﺘﺤـﻮل .إن اﺳـﺘﺨﺪام longﻳﻌﻄـﻲ
اﻟﻤﺘﺤﻮل أآﺒﺮ ﻣﺠﺎل ﻣﻤﻜﻦ ﻟﻸﻋﺪاد اﻟﺘﻲ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ .وآﻤﺜﺎل ﻋﻠﻰ اﺳﺘﺨﺪام : long
long int ;memory_address
ﻓﻲ ﻣﻌﻈﻢ اﻷﺟﻬﺰة اﻟﻘﺪﻳﻤﺔ آﺎﻧﺖ ال intﺗﺄﺧﺬ ﻣﺎﻣﻘﺪارﻩ 16ﺑﺖ وال longﻣﺎﻣﻘﺪارﻩ 32ﺑـﺖ .أﻣـﺎ ﺣﺎﻟﻴـﺎ ﺗﺤـﺖ اﻟﻮﻧـﺪوز
وﺑﺎﺳﺘﺨﺪام اﻷﺟﻬﺰة اﻟﺤﺪﻳﺜﺔ ﻓﺈن ال intوال longآﻼهﻤﺎ ﺗﺄﺧﺬ ﻣﺴـﺎﺣﺔ ﻣﻘـﺪارهﺎ 32ﺑـﺖ .أي ﻻ ﻳﻮﺟـﺪ أي اﺧـﺘﻼف ﺑـﻴﻦ
اﺳــﺘﺨﺪام intأو . longوﻟﻜــﻦ ﻣــﻦ أﺟــﻞ اﻟﺘﻮاﻓﻘﻴــﺔ ﺑــﻴﻦ اﻟﻤﺘﺮﺟﻤــﺎت اﻟﻤﺨﺘﻠﻔــﺔ ﻳﺠــﺐ أن ﺗﻌﻠــﻢ أن intﺗﺘﻌﻠــﻖ ﺑﺎﻟﺤﺎﺳــﺐ
اﻟﻤﺴﺘﺨﺪم واﻟﻤﺘﺮﺟﻢ اﻟﻤﺴﺘﺨﺪم أﻣﺎ longﻓﻬﻲ دوﻣﺎ ﺗﺤﺠﺰ أآﺒﺮ ﻣﺴﺎﺣﺔ ﻣﻤﻜﻨﺔ ﻣﻦ أﺟﻞ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻷﻋﺪاد وﻗـﺪ ﺗﻜـﻮن
64ﺑﺖ ﻓﻲ ﻋﻠﻰ ﻣﻌﺎﻟﺠﺎت 64ﺑﺖ اﻟﺠﺪﻳﺪة .
أﻣﺎ اﻟﻮاﺻﻒ shortاﻟﺬي ﻳﻮﺿﻊ ﻗﺒﻞ . intﻓﻴﺪل ﻋﻠﻰ أن اﻟﻤﺘﺤﻮل ﺳـﻮف ﻳﺴـﺘﺨﺪم ﻣـﻦ أﺟـﻞ ﻣﺠـﺎل ﺻـﻐﻴﺮ ﻟﻸﻋـﺪاد .
وﻋﻠﻰ اﻷﻏﻠﺐ ﻓﺈن shortﺗﻘﻮم ﺑﺤﺠﺰ 16ﺑﺖ ﻟﻠﻤﺘﺤﻮل .وﻳﻜﻤﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ ﺣﺎﻟﺔ أردﻧﺎ اﻟﺘﻘﻠﻴﻞ ﻣﻦ اﺳﺘﻬﻼك اﻟﺬاآﺮة .
وﻣﺜﺎل ﻋﻠﻰ ﺗﻌﺮﻳﻒ اﻟﻤﺘﺤﻮﻻ ﺑﺎﺳﺘﺨﺪام اﻟﻮاﺻﻒ : short
short int ;day_of_week
ﻓﻲ اﻟﻤﺜﺎﻟﻴﻦ اﻟﺴﺎﺑﻘﻴﻦ ﻳﻤﻜﻦ ﺗﺠﺎهﻞ اﻟﻨﻮع ، intأي ﻳﻤﻜﻦ اﻟﺘﻌﺮﻳﻒ آﺎﻟﺘﺎﻟﻲ :
long ;memory_address
short ;day_of_week
أﻳﻀﺎ اﺳﺘﺨﺪام longﻗﺒﻞ doubleﻳﻌﻄﻲ اﻟﻤﺘﺤﻮل ﻣﺠﺎل أآﺒﺮ ﻣﻦ اﻟﻤﺠﺎل اﻟﻤﺴﺘﺨﺪم ﻓﻲ . double
إن ﺟﻤﻴﻊ ﻣﺎذآﺮﻧﺎﻩ ﻣﻦ ﻣﺘﺤﻮﻻت آﺎﻧﺖ ﻣﺘﺤﻮﻻت ﻣﺆﺷﺮة أي ﻳﻤﻜﻦ أن ﺗﺤﻤﻞ ﻗﻴﻢ ﻣﻮﺟﺒﺔ وﺳﺎﻟﺒﺔ .أﻣﺎ ﻓﻲ ﺣﺎﻟﺔ أردﻧﺎ
أن ﻳﻜﻮن ﻣﺠﺎل اﻷﻋﺪاد اﻟﻤﺴﺘﺨﺪﻣﺔ هﻲ ﻓﻘﻂ ﻣﻮﺟﺒﺔ ﻓﻴﺠﺐ أن ﻧﺴـﺒﻖ intأو charﺑﺎﻟﻮاﺻـﻒ . unsignedهـﺬا ﻳﻌﻨـﻲ أن
اﻟﻤﺘﺤﻮل ﻓﻲ هﺬﻩ اﻟﺤﺎﻟﺔ ﻳﻌﺘﺒﺮ ﻣﻮﺟﺐ ﻓﻘﻂ ﺿﻤﻦ اﻟﻤﺠﺎل 0إﻟﻰ 65535ﻓﻲ ﺣﺎﻟﺔ intذات 16ﺑﺖ و ﻣﻦ 0إﻟـﻰ 255ﻓـﻲ
ﺣﺎﻟﺔ . charوآﻤﺜﺎل ﻋﻠﻰ اﺳﺘﺨﺪام هﺬا اﻟﻮاﺻﻒ :
unsigned int ;natural
unsigned ;record_number
unsigned char ;i_am_byte
إن اﺳﺘﺨﺪام intﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ آﺎن اﺧﺘﻴـﺎري وﻳﻤﻜـﻦ ﺗﺠﺎهﻠﻬـﺎ .واﻟﻮاﺻـﻒ signedﺗﻌﻨـﻲ أن اﻟﻤﺘﺤـﻮﻻت هـﻲ
ﻣﺆﺷﺮة وﻟﻜﻦ آﻤﺎ ذآﺮﻧﺎ ﻓﺈﻧﻪ ﺑﺸﻜﻞ اﻓﺘﺮاﺿﻲ اﻟﻤﺘﺤﻮﻻت ﺣﻴﻦ ﺣﺠﺰهﺎ ﺗﻜﻮن ﻣﺆﺷﺮة ﻓـﺈن اﺳـﺘﺨﺪام signedهـﻮ ﺗﺤﺼـﻴﻞ
ﺣﺎﺻﻞ .
أﺧﻴﺮا ،إن اﻟﻮاﺻﻒ constﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻪ ﻣﻊ ﺗﻌﺮﻳﻒ أي ﻣﺘﺤﻮل وذﻟﻚ ﻟﺘﺤﺪﻳﺪ أن ﻗﻴﻤﺔ هﺬا اﻟﻤﺘﺤﻮل ﻟﻦ ﺗﺘﻐﻴـﺮ أﺑـﺪا
أﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ .ﻣﺜﻞ هﺬﻩ اﻟﻤﺘﺤـﻮﻻت ﻻ ﻳﻤﻜـﻦ اﺳـﺘﺨﺪاﻣﻬﺎ ﻋﻠـﻰ اﻟﻄـﺮف اﻷﻳﺴـﺮ ﻟﻌﻼﻣـﺔ اﻻﻟﺤـﺎق )=( أو ﻻ ﻳﻤﻜـﻦ
اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ أي ﺷﻜﻞ ﻣﻦ اﻷﺷـﻜﺎل ﻳـﺆدي إﻟـﻰ ﺗﻐﻴﻴـﺮ ﻗﻴﻤﺘﻬـﺎ .اﻟﻤﺘـﺮﺟﻢ ﻓـﻲ هـﺬﻩ اﻟﺤﺎﻟـﺔ ﻳﺴـﺘﻄﻴﻊ أن ﻳﻀـﻊ هـﺬا
اﻟﻤﺘﺤﻮل ﻓﻲ ذاآﺮة ﻗﺎﺑﻠﺔ ﻟﻠﻘﺮاﺋﺔ ﻓﻘﻂ أو ﻳﻘﻮم ﺑﺎﻟﺘﻌﺪﻳﻞ ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﺸـﻜﻞ اﻟـﺬي ﻳﺮﻳـﺪ ) . (Optimizationﻃﺒﻌـﺎ ﻓـﻲ
ﺣﺎﻟﺔ اﺳﺘﺨﺪﻣﻨﺎ اﻟﻮاﺻﻒ constﻳﺠﺐ ﻋﻠﻴﻨﺎ اﻋﻄﺎء ﻗﻴﻤﺔ ﻟﻠﻤﺘﺤﻮل وﻗﺖ ﺗﻌﺮﻳﻔﻪ آﺎﻟﺘﺎﻟﻲ :
const double ;pi = 3.1415926
const int ;student_number = 10
ﻣﻦ ﻏﻴﺮ أي ﻋﻤﻠﻴﺔ ﺗﻬﻴﺌﺔ ﻓﺈن هﺬا ﻳﻌﺘﺒﺮ ﺧﻄﺄ أن ﺗﻜﺘﺐ :
const double ;pi
هﻨﺎ ﻟﻢ ﻧﻌﻄﻲ اﻟﻤﺘﺤﻮل piأي ﻗﻴﻤﺔ وﺑﻤﺎ أﻧﻪ ﻻ ﻳﻤﻜﻦ اﻋﻄﺎء piأي ﻗﻴﻤﺔ أﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻓﺈن piﺗﺒﻘﻰ ذات ﻗﻴﻤـﺔ
ﻏﻴﺮ ﻣﻌﺮﻓﺔ وﺑﺎﻟﺘﺎﻟﻲ ﻓﺈن ﻣﺜﻞ هﺬا اﻟﻨﻮع ﻣﻦ اﻟﺘﻌﺮﻳﻔﺎت ﻳﻌﻄﻴﻨﺎ ﺧﻄﺄ أﺛﻨﺎء اﻟﺘﺮﺟﻤﺔ .
ﺑﻤﺎ أﻧﻪ اﻧﺘﻬﻴﻨﺎ ﻣﻦ ذآـﺮ أﻧـﻮاع اﻟﻤﺘﺤـﻮﻻت وﺟﻤﻴـﻊ اﻟﻮاﺻـﻔﺎت ﻓـﺈن اﻟﺠـﺪول اﻟﺘـﺎﻟﻲ )ﺟـﺪول (1-2ﻳـﺬآﺮ ﺟﻤﻴـﻊ اﻷﻧـﻮاع
اﻷﺳﺎﺳﻴﺔ اﻟﺘﻲ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ اﻟﺴﻲ) ++وأﺧﺺ ﺑﺎﻟﺬآﺮ ﻓﻴﺠﻮال ﺳﻲ) . (++اﻟﺠﺪول ﻣﺄﺧﻮذ ﻣﻦ . ( MSDN
ﻓﻲ أﻧﻈﻤﺔ وﻧﺪوز 95وﻣﺎﺑﻌﺪهﺎ )أي اﻷﻧﻈﻤﺔ اﻟﻤﻌﺘﻤﺪة ﻋﻠﻰ 32ﺑﺖ( ﻓﺈن intﺳﻮف ﺗﻜـﻮن 4ﺑﺎﻳﺘـﺎت أي أﻧﻬـﺎ ½
ﻣﺜﻞ ال longﺗﻤﺎﻣﺎ .وﻻﺣﻆ ﻓﻲ اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﻓﺈن اﻷﻧﻮاع اﻟﻤﺴـﺒﻮﻗﺔ ب ﻋﻼﻣﺘـﻴﻦ )_( هـﻲ اﺿـﺎﻓﺔ ﻣـﻦ
اﻟﻔﻴﺠﻮال ﺳﻲ ++أي أن اﺳﺘﺨﺪاﻣﻬﺎ ﻳﻌﻨﻲ أن ﺑﺮﻧﺎﻣﺠﻚ ﺳﻮف ﻳﺘﺮﺟﻢ ﻓﻘﻂ ﻓﻲ ﺑﻴﺌﺔ اﻟﻔﻴﺠـﻮال ﺳـﻲ. ++
ﻟﺬﻟﻚ ﻻ ﻳﻨﺼﺢ ﺑﺎﺳﺘﺨﺪاﻣﻬﺎ ﺑﻜﺜﺮة وﺑﺎﻟﺘﺎﻟﻲ ﻳﻔﻘﺪ ﺑﺮﻧﺎﻣﺠﻚ ﺧﺎﺻـﻴﺔ اﻟﺘﻮاﻓـﻖ ﻣـﻊ ﺑـﺎﻗﻲ اﻟﻤﺘﺮﺟﻤـﺎت .اﻟﺸـﺊ
اﻟﻮﺣﻴﺪ اﻟﺬي ﻗﺪ ﻳﻔﻴﺪك هﻮ __int64اﻟﺘﻲ ﺗﻌﻄﻴﻚ ﻣﺠﺎل ﺿﺨﻢ ﺟﺪا ﻟﻼﻋـﺪاد وﻟﻜـﻦ ﻳﺠـﺐ أن ﺗﻨﺘﺒـﻪ ﻋﻠـﻰ أن
اﺳﺘﺨﺪام __int64هﻮ أﺑﻄﺄ ﻣﻦ اﺳﺘﺨﺪام longأو intوﺧﺎﺻﺔ ﻓﻲ ﺣﺴﺎب اﻟﺘﻌﺎﺑﻴﺮ اﻟﺮﻳﺎﺿﻴﺔ .
ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ ﻋﻤﻠﻴﺔ اﻟﻘﺴﻤﺔ ) (/ﻓﺈن وﻇﻴﻔﺘﻬﺎ هـﻲ اﻟﻘﺴـﻤﺔ ﻃﺒﻌـﺎ وﻟﻜـﻦ ﻳﺠـﺐ اﻻﻧﺘﺒـﺎﻩ أﻧـﻪ ﻋﻨـﺪ ﻗﺴـﻤﺔ ﻋـﺪدﻳﻦ
ﺻﺤﻴﺤﻴﻦ integerﻓﺈن اﻟﺠﻮاب ﻳﻜﻮن ﻋﺪد ﺻﺤﻴﺢ .أﻣﺎ ﻓﻲ ﺣﺎﻟﺔ آـﺎن أﺣـﺪ اﻟﺤـﺪﻳﻦ ﻋﻠـﻰ اﻷﻗـﻞ ﻋـﺪد ﺣﻘﻴﻘـﻲ floatﻓـﺈن
اﻟﺠﻮاب ﻳﻜﻮن ﻋﺪد ﺣﻘﻴﻘﻲ .وإﻟﻴﻚ ﺑﺎﻷﻣﺜﻠﺔ اﻟﺘﺎﻟﻴﺔ :
2 ﺗﺴﺎوي 13 / 5
2.6 ﺗﺴﺎوي 13.0 / 5
2.6 ﺗﺴﺎوي 13 / 5.0
ﻳﻌﻨﻲ ﻓﻲ ﺣﺎﻟﺔ اﻟﻘﺴﻤﺔ اﻟﺼﺤﻴﺤﺔ ﻓﺈن اﻟﻌﺪد اﻟﻨﺎﺗﺞ هﻮ اﻟﻘﺴﻢ اﻟﺼﺤﻴﺢ ﻣـﻦ اﻟﻌـﺪد وﻳـﺰال ﻣﺎﺑﻌـﺪ اﻟﻔﺎﺻـﻠﺔ .وآﻤﺜـﺎل
ﻋﻠﻰ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ ﻟﺪﻳﻨﺎ :
3 ﺗﺴﺎوي 13 % 5
0 ﺗﺴﺎوي 15 % 5
-3 ﺗﺴﺎوي -13 % 5
3 ﺗﺴﻮاي 13 % -5
ﻓﻲ ﺣﺎﻟﺔ أﺣﺪ اﻟﺤﺪﻳﻦ آﺎن ﺳﺎﻟﺒﺎ ﻓﺈن اﺷﺎرة ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ ﺗﻜﻮن ﻣﺸﺎﺑﻬﺔ ﻷﺷﺎرة اﻟﻤﻘﺴﻮم ﻋﻠﻴﻪ آﻤـﺎ ﻓـﻲ اﻟﻤﺜـﺎل
اﻟﺴﺎﺑﻖ .وﺣﺘﻰ ﻧﻜﻮن دﻗﻴﻘﻴﻦ أآﺜﺮ ﻓﺈن ﻋﻤﻠﻴﺔ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ داﺋﻤﺎ ﺗﺴﺎوي إﻟﻰ اﻟﺘﻌﺒﻴﺮ اﻟﺘﺎﻟﻲ :
a%b == a – (a / b) * b
ﺣﻴﺚ aو bهﻲ أﻋﺪاد ﺻﺤﻴﺤﺔ وﻗﻴﻤﺔ bﻻﺗﺴﺎوي اﻟﺼﻔﺮ ،أي أن اﻟﻘﺴﻤﺔ اﻟﻤﺴﺘﺨﺪﻣﺔ هﻲ ﻗﺴﻤﺔ ﺻﺤﻴﺤﺔ .
ﻗﻤﺖ ﺑﺎﻻﺳﺘﻔﺎﺿﺔ ﻓﻲ اﻟﺸﺮح ﻋﻠﻰ هﺬﻩ اﻟﻤﻌﺎﻣﻼت اﻟﺴﻬﻠﺔ ﻷﻧﻪ ﻓﻲ اﻟﺴﻲ ++وآﻤـﺎ ﺳـﻮف ﻧـﺮى ﻻﺣﻘـﺎ ½
ﻓﻲ ﻗﺴﻢ اﻟﺒﺮﻣﺠﺔ ﻏﺮﺿﻴﺔ اﻟﺘﻮﺟﻪ Object Oriented Programmingأﻧﻪ ﻳﻤﻜﻦ اﻋﺎدة ﺑﺮﻣﺠـﺔ اﻟﻌﻮاﻣـﻞ ﻣـﻦ
أﺟﻞ اﻋﻄﺎﺋﻬﺎ ﺧﻮاص ﺟﺪﻳﺪة .
) (unsigned intﻓﺈﻧﻨــﺎ ﻧﺤﺼــﻞ ﻋﻠــﻰ اﻟﻘﻴﻤــﺔ . 65529وإذا ﺟﻤﻌﻨﺎهــﺎ ﻣــﻊ اﻟﻘﻴﻤــﺔ 10ﻧﺤﺼــﻞ ﻋﻠــﻰ 65539أو 0x10003
ﺑﺎﻟﻨﻈﺎم اﻟﺴﺖ ﻋﺸﺮي وﺑﺎﻟﺘﺎﻟﻲ ﻳﻜﻮن اﻟﺠﻮاب 3ﻷﻧﻨﺎ ﻧﺘﻌﺎﻣﻞ ﻣﻊ أﻋﺪاد 16ﺑﺖ .
ﻓﻲ اﻷﻧﻈﻤﺔ اﻟﺤﺪﻳﺜﺔ ﻧﺠﺪ أن intهﻮ 32ﺑﺖ وأﻳﻀﺎ longهـﻮ 32ﺑـﺖ .ﻓﻌﻤﻠﻴـﺔ اﻟﺘﺤﻮﻳـﻞ ﺗﺼـﺒﺢ أﺳـﻬﻞ .وأﻳﻀـﺎ ﺗﺠﻨـﺐ
اﺳﺘﺨﺪام اﻷﻋﺪاد اﻟﻐﻴﺮ ﻣﺆﺷﺮة ﻗﺪر اﻟﻤﺴﺘﻄﺎع وآﻦ ﺣﺬرا ﻓﻲ ﺣﺎﻟﺔ ﺗﻢ اﺳﺘﺨﺪاﻣﻬﺎ .
ﻓﻲ آﻼ اﻟﺤﺎﻟﺘﻴﻦ اﻟﺴﺎﺑﻘﺘﻴﻦ ﻓﺈﻧﻪ ﻳﺘﻢ اﻟﺰﻳﺎدة ﺑﻤﻘﺪار واﺣﺪ إﻟﻰ اﻟﻤﺘﺤﻮل . variableوأﻳﻀـﺎ آـﻼ اﻟﺤـﺎﻟﺘﻴﻦ اﻟﺴـﺎﺑﻘﺘﻴﻦ
ﻓﺈﻧﻬــﺎ ﻳﺮﺟﻌــﺎ ﻗﻴﻤــﺔ .ﻓــﻲ اﻷوﻟــﻰ ) (preincrementﻓﺈﻧــﻪ ﻳــﺘﻢ ارﺟــﺎع اﻟﻘﻴﻤــﺔ اﻟﺠﺪﻳــﺪة ﺑﻌــﺪ اﻟﺰﻳــﺎدة .أﻣــﺎ اﻟﺜﺎﻧﻴــﺔ
) (postincrementﻓﺈﻧﻪ ﻳﺘﻢ ارﺟﺎع ﻗﻴﻤﺔ اﻟﻤﺘﺤﻮل ﻗﺒﻞ اﻟﺰﻳﺎدة .ﻟﻮ اﻋﺘﺒﺮﻧﺎ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ :
sum += ++count
ﻓﺈن اﻟﻤﺘﺤﻮل countﺳﻮف ﻳﺰاد ﺑﻘﻴﻤﺔ 1وﻣﻦ ﺛﻢ ﻳﺘﻢ اﺳـﺘﺨﺪام اﻟﻘﻴﻤـﺔ اﻟﺠﺪﻳـﺪة ﻓـﻲ اﻟﺘﻌﺒﻴـﺮ أي ﻳـﺘﻢ اﺿـﺎﻓﺘﻬﺎ ﻣـﻊ
sumوﺗﺨﺰﻳﻦ اﻟﻨﺘﻴﺠﺔ ﻓﻲ . sumوﻟﻮ اﻋﺘﺒﺮﻧﺎ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ :
sum += count++
ﻳﺘﻢ اﺿﺎﻓﺔ ﻗﻴﻤﺔ اﻟﻤﺘﺤﻮل countأﻳﻀﺎ ﺑﻤﻘﺪار 1وﻟﻜﻦ ﻳﺘﻢ اﺳـﺘﺨﺪام اﻟﻘﻴﻤـﺔ اﻟﺴـﺎﺑﻘﺔ ل countﻓـﻲ اﻟﺘﻌﺒﻴـﺮ .ﻋﻠـﻰ
ﺳﺒﻴﻞ اﻟﻤﺜﺎل إذا آﺎﻧﺖ ﻗﻴﻤﺔ sumو countهﻲ 10و 20ﻋﻠﻰ اﻟﺘﺮﺗﻴﺐ ﻓﺈن countﺳـﻮف ﺗﺼـﺒﺢ 21وﻳـﺘﻢ ﺟﻤـﻊ اﻟﻘﻴﻤـﺔ
) 20اﻟﻘﺪﻳﻤﺔ( ﻣﻊ 10ﻣﻦ أﺟﻞ أن ﻧﺤﺼﻞ ﻋﻠﻰ 30وﺗﺨﺰﻳﻨﻬﺎ ﻓﻲ . sum
ﻓﻲ ﺣﺎﻟﺔ اﺳﺘﺨﺪام ﻣﻌﺎﻣﻞ اﻻﻧﻘﺎص ﻓﺎﺳﺘﺨﺪاﻣﻪ ﺗﻤﺎﻣﺎ ﻣﺜﻞ ﻣﻌﺎﻣﻞ اﻟﺰﻳﺎدة وﻟﻜﻦ ﻳﺘﻢ هﻨـﺎ اﺳـﺘﺨﺪام ) (--ﻋﻮﺿـﺎ ﻋـﻦ
) (++وﻳﺘﻢ اﻻﻧﻘﺎص ﺑﻤﻘﺪار . 1
-- variable
variable --
ﺑﺎﻟﻨﺴﺒﺔ إﻟﻰ أوﻟﻮﻳﺔ وآﻴﻔﻴـﺔ ﺗﻨﻔﻴـﺬ هـﺬﻳﻦ اﻟﻤﻌـﺎﻣﻠﻴﻦ ﻓﺴـﻮف ﺗﺠـﺪهﻞ ﻓـﻲ ﺟـﺪول ﻓـﻲ ﺁﺧـﺮ اﻟـﺪرس ﻳﺠﻤـﻊ ﺟﻤﻴـﻊ
اﻟﻤﻌﺎﻣﻼت اﻟﺘﻲ ﺗﻢ ﺷﺮﺣﻬﺎ ﻓﻲ هﺬا اﻟﺪرس .
ﻣﻦ أهﻢ اﻷﻣﻮر ﻓﻲ اﻟﺒﺮاﻣﺞ اﻟﺤﻘﻴﻘﺔ هﻲ أن ﻳﺴﺘﻄﻴﻊ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﻮﺳﻂ اﻟﻤﺤﻴﻂ ﺑﻪ .ﻓﻲ هﺬا اﻟﺪرس ﺳﻮف
أﻗﺪم ﻗﺴﻢ ﺻـﻐﻴﺮ ﻣـﻦ ﻣﻜﺘﺒـﺔ ﺳـﻲ ++اﻟﻘﻴﺎﺳـﻴﺔ ﻓـﻲ اﻻدﺧـﺎل واﻻﺧـﺮاج .ﻟـﻦ أﻗـﻮم ﺑﺸـﺮح آـﻞ اﻟﺘﻌﻠﻴﻤـﺎت واﻟﻌﻤﻠﻴـﺎت
اﻟﻤﻮﺟﻮدة ﻓﻲ هﺬﻩ اﻟﻤﻜﺘﺒﺔ وﺳﻮف أﺗﺮك هﺬا إﻟﻰ دروس ﻻﺣﻘﺔ .اﻵن ﺳﻮف أﻗﻮم ﺑﺸﺮح اﻟﻌﻤﻠﻴـﺎت اﻟﻼزﻣـﺔ ﻟﻠﺘﻌﺎﻣـﻞ ﻣـﻊ
ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ واﻟﺸﺎﺷﺔ ﻓﻘﻂ .هﺬا ﺳﻮف ﻳﻌﻄﻴﻨﺎ ﺧﻄﻮة أوﻟﻴﺔ ﻓﻲ ﺑﻨﺎء ﺑﺮﻣﺠﻴﺎت ﺗﺘﻌﺎﻣﻞ ﻣﻊ اﻷﺟﻬـﺰة اﻟﻄﺮﻓﻴـﺔ اﻟﺴـﺎﺑﻘﺔ.
ﻓﻲ دروس ﻗﺎدﻣﺔ ﺑﺎذن اﷲ ﺳﻮف ﻧﻜﻤـﻞ ﻋﻤﻠﻴـﺎت اﻻدﺧـﺎل واﻻﺧـﺮاج ﺣﺘـﻰ ﺗﻀـﻢ اﻟﺘﻌﺎﻣـﻞ ﻣـﻊ اﻟﻤﻠﻔـﺎت ﻋﻠـﻰ اﻟﻘـﺮص أو
اﻟﻌﻤﻠﻴﺎت ﻋﻠﻰ اﻟﺴﻼﺳﻞ .
3.1اﻟﻮﺻﻮل إﻟﻰ ﻣﻜﺘﺒﺔ ﺳﻲ ++اﻟﻘﻴﺎﺳﻴﺔ – Access to the standard C++ library
ﻓﻲ أي ﺑﺮﻧﺎﻣﺞ ﺳﻲ ++ﻳـﺘﻢ ﺗﻨﻔﻴـﺬﻩ ﻓـﺈن أرﺑـﻊ ﻣﺘﺤـﻮﻻت ﻳـﺘﻢ ﺣﺠﺰهـﺎ هـﺬﻩ اﻟﻤﺘﺤـﻮﻻت هـﻲ ﻋﺒـﺎرة ﻋـﻦ ﻣﺴـﺎرات
) (streamsﻟﻠﻤﻌﻠﻮﻣﺎت ﻣﻦ وإﻟﻰ اﻷﺟﻬﺰة اﻟﻄﺮﻓﻴﺔ .اﺛﻨﺎن ﻣﻦ هﺬﻩ اﻟﻤﺴـﺎرات ﻳﺴـﻤﻴﺎن ب standard inputو standard
. outputﻟﻤﺎذا ﺳﻤﻴﻨﺎ اﻟﻤﺘﺤﻮﻻت اﻟﺴﺎﺑﻘﺔ ﻣﺴﺎرات هﺬا ﺑﺴﺒﺐ أﻧﻬﺎ ﺗﻤﺜﻞ آﻤﺴﺎر ﻟﻠﺒﻴﺎﻧﺎت ﺑﻴﻦ اﻟﺒﺮﻧﺎﻣﺞ وﻣﺼﺪر اﻟﺒﻴﺎﻧـﺎت
أو وﺟﻬﺘﻬﺎ .اﻟﻤﺼﺪر أو اﻟﻮﺟﻬﺔ ﻗﺪ ﺗﻜﻮﻧﺎ أﺣﺪ اﻟﻤﻠﻔﺎت أو ﺣﺘﻰ اﻟﺬاآﺮة .وﻳﻤﻜﻦ أﻳﻀﺎ ﺗﺤﻮﻳﻞ هﺬا اﻟﻤﺴﺎر ﻓﻲ أي وﻗﺖ آـﺎن
ﻣﻦ ﻣﺼﺪر إﻟﻰ ﺁﺧﺮ أو ﻣﻦ وﺟﻬﺔ إﻟﻰ أﺧﺮى .اﻻﻓﺘﺮاﺿﻲ ﻓﻲ اﻟﺴﻲ ++أن ﻳﻜﻮﻧﺎ اﻟﻤﺴﺎرﻳﻦ اﻻﻓﺘﺮاﺿﻴﻴﻦ هﻤﺎ ﻣﻦ اﻟﻜﻴﺒﻮرد
) (standard inputأو إﻟــﻰ اﻟﺸﺎﺷــﺔ ) . (standard outputوﻟﻜــﻦ ﻋﻠــﻰ ﺣﺴــﺐ ﺿــﻮء اﻟﺒﺮﻧــﺎﻣﺞ ﻓــﻴﻤﻜﻦ ﺗﺤﻮﻳــﻞ هــﺬﻩ
اﻟﻤﺴﺎرات ﻷن ﻳﻜﻮن اﻟﺪﺧﻞ اﻻﻓﺘﺮاﺿﻲ ﻣﻦ ﻣﻠﻒ ﻣﻌﻴﻦ ؛ وهﺬا ﻣﺎ ﻧﻼﺣﻈﻪ إذا ﻓﻜﺮﻧﺎ ﻓﻲ ﺑﺮﻣﺠﺔ ﻣﺘﺮﺟﻢ ﻓﺎﻟﺒﺪﻳﻬﻲ أن ﻳﻜـﻮن
ﻣﺴﺎر اﻟﺪﺧﻞ اﻻﻓﺘﺮاﺿﻲ ﻣﻦ اﻟﻤﻠﻒ ﺑﺪﻻ ﻣﻦ اﻟﻜﻴﺒﻮرد .
ﺟﻤﻴﻊ ﻣﻠﻔﺎت ﺑﺮاﻣﺠﻚ اﻟﺘﻲ ﺗﺴﺘﺨﺪم ﻣﻜﺘﺒﺔ اﻟﺪﺧﻞ واﻟﺨﺮج ﻳﺠﺐ أن ﺗﺤﺘﻮي ﻋﻠﻰ هﺬا اﻟﺴﻄﺮ ﻓﻲ ﺑﺪاﻳﺔ اﻟﻤﻠﻒ :
>#include <iostream.h
ﺳــﻮف ﻧﻘــﻮم ﺑﺸــﺮح ﻋﺒــﺎرة #includeﻓــﻲ اﻟــﺪرس اﻟﻘــﺎدم .اﻵن أرﻳــﺪك أن ﺗﺘﻘﺒــﻞ أن ﻣﻠــﻒ اﻟﺘﻌﺮﻳــﻒ iostream.h
) (header fileﻳﺤﺘﻮي ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت وﺗﻌﺮﻳﻔﺎت ﺿﺮورﻳﺔ ﻣﻦ أﺟﻞ اﺳﺘﺨﺪام ﻣﻜﺘﺒﺔ اﻟﺪﺧﻞ واﻟﺨﺮج وهﻮ اﻟﺬي ﻳﻘـﻮم ﺑﺘﻌﺮﻳـﻒ
اﻟﻤﺴـﺎرات اﻟﺘـﻲ ﺗﺤــﺪﺛﻨﺎ ﻋﻨﻬـﺎ ﺳــﺎﺑﻘﺎ .هـﺬا اﻟﻤﻌﻠﻮﻣــﺎت ﺟﻤﻴﻌﻬـﺎ ﺳـﻮف ﺗﻀــﻤﻦ ﻓـﻲ اﻟﻤﻠــﻒ اﻟﺤـﺎﻟﻲ ﻷﻧﻨــﺎ آﺘﺒﻨـﺎ ﻋﺒــﺎرة
#includeﻓﻲ أﻋﻠﻰ اﻟﻤﻠﻒ .
ﻻﺣﻆ آﻴﻒ أﻧﻪ ﺗﻢ ﺗﻘﺮﻳﺐ اﻟﻌﺪد ﻗﺒﻞ اﻻﺧﺮاج .ﻳﺠﺐ أن ﻧﻨﺘﺒﻪ إﻟﻰ أﻣﺮ هﺎم وهﻮ ﻣﻦ أﺟﻞ اﺳﺘﺨﺪام هـﺬﻩ اﻟﻤﻌـﺪﻻت أو
ﻏﻴﺮهﺎ ﻳﺠﺐ ﺗﻀﻤﻴﻦ اﻟﻤﻠﻒ iomanip.hﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ :
>#include <iostream.h
>#include <iomanip.h
3.6اﺳﺘﺨﺪام ﻣﻜﺘﺒﺔ اﻟﺪﺧﻞ واﻟﺨﺮج اﻟﺠﺪﻳﺪة – Using the new standard I/O stream library
ﻻ ﻳﻮﺟﺪ ﻟﻐﺔ ﻣﻦ اﻟﻠﻐﺎت ﺗﺘﻄﻮر أو ﻳﻀﺎف ﻟﻬﺎ ﺗﻮاﺑﻊ داﻋﻤﺔ ﺟﺪﻳﺪة ،وآﺬﻟﻚ اﻟﻤﻜﺘﺒﺔ اﻟﻘﻴﺎﺳﻴﺔ ﻓﻲ اﻻدﺧﺎل واﻻﺧﺮاج ﻓﻲ
اﻟﺴﻲ . ++وﻣﻦ أﺟﻞ اﺳﺘﺨﺪام ﺁﺧﺮ اﻟﻨﺴﺦ ﻣﻦ هﺬﻩ اﻟﻤﻜﺘﺒﺔ ﻓﻲ ﺑﺮﻧﺎﻣﺠﻚ ﻓﻴﺠﺐ أن ﻳﺘﻢ اﻟﺘﻀﻤﻴﻦ ﺑﺎﻟﻄﺮﻳﻘﺔ اﻟﺘﺎﻟﻴﺔ :
>#include <iostream
;using namespace std
ﻻﺣﻆ أﻧﻨﺎ ﻟﻢ ﻧﺴﺘﺨﺪم اﻻﻣﺘﺪاد hﻟﻠﻤﻠﻒ iostreamوهﺬا ﻣﺎﻳﺨﺒﺮ اﻟﻤﺘﺮﺟﻢ أﻧﻨﺎ ﻧﺮﻳﺪ اﺳـﺘﺨﺪام اﻟﻨﺴـﺨﺔ اﻟﺤﺪﻳﺜـﺔ ﻣـﻦ
اﻟﻤﻜﺘﺒﺔ .أﻣﺎ اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ ﻓﻬﻮ ﺿﺮوري وﺳﻮف ﻧﺘﻘﺒﻠﻪ ﺣﺎﻟﻴﺎ ﻣﺜﻞ ﻣﺎهﻮ ﺣﺘﻰ ﻧﺄﺗﻲ ﻟﺸﺮﺣﻪ ﻻﺣﻘﺎ ﻓﻲ دروس أﺧﺮى .إذا
ﻳﺠﺐ أن ﺗﻨﺘﺒﻪ أﻧﻪ إذا أردت أن ﺗﺴﺘﺨﺪم ﻣﻜﺘﺒﺎت اﻟﺴﻲ ++اﻟﺠﺪﻳﺪة ﻗﻢ ﺑﺘﻀﻤﻴﻦ ﻣﻠﻔﺎت اﻟﺘﻌﺮﻳﻒ ﺑﺪون اﺳﺘﺨﺪام اﻻﻣﺘـﺪاد
hﺣﺘﻰ ﻳﻌﺮف اﻟﻤﺘﺮﺟﻢ أي ﻣﻦ اﻟﻤﻜﺘﺒﺎت ﺳﻮف ﻳﺮﺑﻄﻬﺎ ﻣﻊ ﺑﺮﻧﺎﻣﺠﻚ .ﻣﺜﻼ إذا أردت اﺳﺘﺨﺪام اﻟﻤﻌﺪﻻت ﻓﻲ اﻟﺨﺮج ﺳﻮف
ﺗﻜﺘﺐ اﻟﺘﺎﻟﻲ :
>#include <iostream
>#include <iomanip
;using namespace std
ﻓﻲ اﻟﺪروس اﻟﻘﺎدﻣﺔ ﺳﻮف ﻧﺴﺘﺨﺪم هﺬﻩ اﻟﺼﻴﻐﺔ ﻓﻲ ﺗﻀﻤﻴﻦ ﻣﻜﺘﺒﺔ اﻟﺪﺧﻞ واﻟﺨﺮج .
3.6ﻣﻠﺨﺺ اﻟﺪرس
ﻣﻴﺰات اﻟﺪﺧﻞ واﻟﺨﺮج ﻓﻲ ﺳﻲ ++ﻳﺘﻢ اﻟﺤﺼﻮل ﻋﻠﻴﻬﺎ ﻣﻦ ﻣﻜﺘﺒﺔ اﻟﺪﺧﻞ واﻟﺨﺮج اﻟﻘﻴﺎﺳﻴﺔ Standard I/O •
. stream library
ﻋﻨــﺪ اﺳــﺘﺨﺪام اﻟﻤﻜﺘﺒــﺔ اﻟﺴــﺎﺑﻘﺔ ﻳﺠــﺐ ﺗﻀــﻤﻴﻦ اﻟﻤﻠــﻒ iostream.hﻣــﻊ اﻟﺒﺮﻧــﺎﻣﺞ ﺑﺎﺳــﺘﺨﺪام اﻟﻌﺒــﺎرة •
>#include<iostream.h
ﻳﻤﻜﻦ ﺗﻨﺴﻴﻖ اﻟﺨﺮج ﺑﺎﺳﺘﺨﺪام اﻟﻤﻌﺪﻻت . manipulators •
ﻳﻔﻀﻞ اﺳﺘﺨﺪام اﻟﺘﺎﺑﻌﻴﻦ getو putﻣﻦ أﺟﻞ ﺗﺒﺎدل ﻣﺤﺮف وﺣﻴﺪ ﻣﻊ اﻟﻤﺴﺎر ). (stream •
ﻳﻤﻜﻨﻜﻢ ﻣﺮاﺳﻠﺘﻲ إذا ﻛﺎن ﻫﻨﺎك آي ﻣﺸﺎﻛﻞ ﻣﺘﻌﻠﻘﺔ ﺑﻌﺪم اﻟﺘﻮﺿﻴﺢ أو ﻧﺤﻮه ﻣﻤﺎ ﻳﻮﺟﺪ ﻓﻲ ﻫﺬا اﻟﻜﺘﺎب ...
ﻣﻤﻨﻮع ﻣﻨﻌﺎ ﺑﺎﺗﺎ ﻃﺒﺎﻋﺔ أو اﻗﺘﺒﺎس أي ﺟﺰء ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب ﺑﺪون أذن ﺧﻄﻲ ﻣﻦ اﻟﻤﺆﻟﻒ
* اﻟ ﺒﺮاﻣﺞ اﻟﻤﺬﻛ ﻮرة ﻓ ﻲ ﻫ ﺬا اﻟﻜ ﺘﺎب ﻣ ﺜﻞ " "visual c++" "Windowsوﻏ ﻴﺮﻫﺎ ﻋﻼﻣ ﺎت ﺗﺠﺎرﻳﺔ أو ﻋﻼﻣﺎت
ﻣﺴ ﺠﻠﺔ ﻻﺻ ﺤﺎﺑﻬﺎ ،واﻟﻤﺆﻟ ﻒ ﻳﺤ ﺘﺮم ﻫ ﺬه اﻟﻌﻼﻣ ﺎت وﻳﻘ ﺮ ﺑﻬ ﺎ ﻻﺻ ﺤﺎﺑﻬﺎ ،وﻟ ﻢ ﻳﺬﻛ ﺮﻫﺎ ﺗﺼ ﺮﻳﺤﺎ ﻓ ﻲ اﻟﻜ ﺘﺎب ﻃﻠ ﺒﺎ
ﻟﻼﺧﺘﺼﺎر.
* اﻟﻤﺆﻟ ﻒ ﻻ ﻳﻌ ﺪ ﻣﺴ ﺆوﻻ ﺑ ﺄي ﺷ ﻜﻞ ﺻ ﺮﻳﺤﺎ أو ﺿ ﻤﻨﻴﺎ ﻋ ﻦ أي ﻧ ﺘﺎﺋﺞ ﺗﺘﺮﺗ ﺐ ﻋ ﻦ اﺳ ﺘﺨﺪام اﻟﻤﻌﻠﻮﻣ ﺎت اﻟﺘ ﻲ
ﻳﺤﺘﻮﻳﻬﺎ اﻟﻜﺘﺎب أو آي ﺗﻌﺪﻳﻼت ﻳﺠﺮﻳﻬﺎ اﻟﻘﺎرئ ﻋﻠﻴﻬﺎ.
* ﺟﻤﻴﻊ اﻵراء وﻣﺎ ﻛﺘﺐ ﻓﻲ ﻫﺬا اﻟﻜﺘﺐ ﺗﻌﺒﺮ ﻋﻦ رأي اﻟﻤﺆﻟﻒ ﺷﺨﺼﻴﺎ.
* اﻟﻜﺘﺎب ﻣﺠﺎﻧﻲ % 100وﻻ ﻳﺤﻖ ﻻﺣﺪ ﺑﻴﻌﻪ أو اﺳﺘﻐﻼﻟﻪ ﺗﺠﺎرﻳﺎ.
ﻋﻨﻮان اﻟﻜﺘﺎب............................................................................أ
اﻫﺪأ.......................................................................................ب
ﻣﻘﺪﻣﺔ ....................................................................................د
اﻟﺒﺎب اﻷول
اﻷﺳﺎﺳﻴﺎت ﻣﻜﻮﻧﺎت c++وادواﺗﻬﺎ
رﻣﻮز ﻟﻐﺔ ٧......................................................................... c++
اﻟﻤﺘﻐﻴﺮات١٣................................................................................
اﻷدوات اﻟﻤﺴﺘﻌﻤﻠﺔ ﻓﻲ ﻟﻐﺔ ١٥.................................................... c++
اﻷدوات اﻟﺤﺴﺎﺑﻴﺔ ١٥......................................................................
اﻷدوات اﻷﺣﺎدﻳﺔ واﻟﺜﻨﺎﺋﻴﺔ١٧............................................................
اﻟﺰﻳﺎدة واﻟﻨﻘﺼﺎن١٧.......................................................................
أوﻟﻴﺎت اﻟﻌﻤﻠﻴﺎت ﻟﻸدوات اﻟﺤﺴﺎﺑﻴﺔ١٩..................................................
اﻷدوات اﻟﻌﻼﻗﻴﺔ واﻟﻤﻨﻘﻄﻴﺔ ٢٠..........................................................
اﻷدوات اﻟﺪﻗﻴﻘﺔ٢٢.........................................................................
أداة اﻟﻨﻔﻲ٢٣.................................................................................
أداة اﻟﺠﻤﻊ٢٤...............................................................................
أداة اﻻﺧﺘﻴﺎر٢٤............................................................................
أداة اﻻﺧﺘﻴﺎر اﻻﺳﺘﺜﻨﺎﺋﻲ٢٥...............................................................
أداة اﻹزاﺣﺔ٢٦.............................................................................
اﻷداة اﻟﺸﺮﻃﻴﺔ ٢٨.........................................................................
أداة اﻟﻌﻨﻮان٢٩..............................................................................
أداة ﺗﻌﻴﻴﻦ اﻟﻄﻮل٣٠.......................................................................
اﻟﻔﺎﺻﻠﺔ ﻛﺄداة٣١...........................................................................
ﺟﻤﻞ اﻟﺘﻌﺮﻳﻒ٣٢..........................................................................
اﻟﺜﻮاﺑﺖ اﻟﺮﻣﺰﻳﺔ ذات اﻟﺸﺮط اﻟﻤﻌﻜﻮﺳﺔ٣٣...........................................
اﻟﻤﻼﺣﻈﺎت واﻟﺘﻌﻠﻴﻘﺎت ﻓﻲ ٣٤...................................................c++
اﻟﺒﺎب اﻟﺜﺎﻧﻲ
ﺗﺸﻐﻴﻞ Visual C++6.0
ﺧﻄﻮات ﺗﺸﻐﻴﻞ ﺑﺮﻧﺎﻣﺞ ٣٥.......................................... Visual C++
اﻟﺒﺎب اﻟﺜﺎﻟﺚ
أﺳﺎﻟﻴﺐ اﻹدﺧﺎل واﻹﺧﺮاج
ﻣﻘﺪﻣﺔ٤٠..................................................................................
اﻟﺒﺎب اﻟﺮاﺑﻊ
ﺟﻤﻞ اﻟﺘﺤﻜﻢ واﻟﺸﺮط واﻟﺘﻜﺮار
ﻣﻘﺪﻣﺔ ٥٣..................................................................................
اﻟﺠﻤﻞ اﻟﺸﺮﻃﻴﺔ٥٣.......................................................................
ﺟﻤﻠﺔ اﻟﺸﺮط إذا وأﺧﻮاﺗﻬﺎ ٥٤......................................if statements
ﺟﻤﻠﺔ اﻟﺘﻮزﻳﻊ ٥٩............................................. switch statement
ﺟﻤﻠﺔ أداة اﻟﺸﺮط ؟٦٠...................................................................
اﻟﺘﻜﺮار وﺣﻠﻘﺎت اﻟﺘﻜﺮار٦١............................................................
أﺳﻠﻮب اﻟﺘﻜﺮار ﺑﺎﺳﺘﻌﻤﺎل ﺣﻠﻘﺔ ٦١............................................. For
ﺣﻠﻘﺎت اﻟﺘﻜﺮار اﻟﻤﺘﺪاﺧﻠﺔ ٦٦.......................................... for Loops
أﺳﻠﻮب اﻟﺘﻜﺮار ﺑﺎﺳﺘﻌﻤﺎل ﺣﻠﻘﺔ ٦٩................................While & Do
ﺣﻠﻘﺎت Whileاﻟﻤﺘﺪاﺧﻠﺔ٧٢...........................................................
ﺟﻤﻠﺔ اﻹﻳﻘﺎف ٧٣...............................................................Break
ﺟﻤﻠﺔ اﻻﺳﺘﻤﺮار ٧٥...................................................... continue
ﺟﻤﻠﺔ اﻟﺨﺮوج )(٧٧.............................................................. exit
ﺟﻤﻠﺔ اﻻﻧﺘﻘﺎل ٧٨................................................................ goto
اﻟﺒﺎب اﻟﺨﺎﻣﺲ
اﻟﻤﺘﻐﻴﺮات اﻟﻤﺮﻗﻤﺔ واﻟﻤﺼﻔﻮﻓﺎت
ﻣﻘﺪﻣﺔ٧٩..................................................................................
إﻋﻄﺎء ﻗﻴﻤﺔ أوﻟﻴﺔ ﻟﻠﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ٨٣..................................
ﻋﻨﻮان ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻲ اﻟﺬاﻛﺮة٨٥............................................
اﻟﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪﻳﻦ٨٦.............................................................
اﻟﺒﺎب اﻟﺴﺎدس
اﻟﺪوال
ﻣﻘﺪﻣﺔ٨٨.................................................................................
ﺗﻄﺒﻴﻘﺎت ﻋﻠﻰ اﻟﺪوال٩٠...............................................................
اﻟﺒﺎب اﻟﺴﺎﺑﻊ
ﺗﻘﻨﻴﺔ اﻷﻗﺮاص و دوال اﻟﻤﻠﻔﺎت اﻻﻧﺘﻘﺎﻟﻴﺔ
ﻣﻘﺪﻣﺔ٩٤................................................................................
داﻟﺔ ﻓﺘﺢ اﻟﻤﻠﻒ )(٩٥....................................................... fopen
داﻟﺔ اﻟﻜﺘﺎﺑﺔ داﺧﻞ اﻟﻤﻠﻒ )(٩٧............................................ fprintf
داﻟﺔ إﻏﻼق اﻟﻤﻠﻒ )(٩٨.................................................... fclose
اﻟﺪاﻟﺘﺎن )(٩٩.......................................................putw() getw
اﻟﻨﻬﺎﻳﺔ١٠١...............................................................................
وﻣ ﻦ اﻟﺠﺪﻳ ﺮ ﺑﺎﻟﺬﻛ ﺮ ،أن ﻟﻐ ﺔ C++ﺗﻔ ﺮق ﺑﻴ ﻦ اﻟﺤ ﺮوف اﻷﺑﺠﺪﻳﺔ اﻟﺼﻐﻴﺮة واﻟﻜﺒﻴﺮة ،
ﻓﻤ ﺜﻼ اﻷﺳ ﻤﺎء SYSTEM , system, System :ﺗﻌ ﺎﻣﻞ ﻛﺄﺳ ﻤﺎء ﻣﺨ ﺘﻠﻔﺔ ﻋ ﻦ
ﺑﻌﻀﻬﺎ اﻟﺒﻌﺾ ﺑﺴﺒﺐ اﺧﺘﻼف ﻣﻌﺎﻣﻠﺔ اﻟﻤﺘﺮﺟﻢ ﻟﻠﺤﺮوف اﻟﺼﻐﻴﺮة واﻟﻜﺒﻴﺮة.
، C++ﺣﺴ ﺐ ﻃﻮﻟﻬ ﺎ ،واﻟﺴ ﻌﺔ ﻛﻤ ﺎ ﻳﻤﻜ ﻦ ﺗﺼ ﻨﻴﻒ اﻷﻋ ﺪاد اﻟﺼ ﺤﻴﺤﺔ ﻓ ﻲ ﻟﻐ ﺔ
اﻟﺘﺨﺰﻳﻨﻴﺔ ﻟﻬﺎ ﻓﻲ اﻟﺬاﻛﺮة ﻣﺜﻼ-:
اﻟﺜﻮاﺑﺖ اﻟﺼﺤﻴﺤﺔ 40000 , 19897ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﻃﻮﻳﻠﺔ .long int
اﻟﺜﻮاﺑﺖ 45 , 80 , -16ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﻗﺼﻴﺮة .short int
اﻟﺜﻮاﺑﺖ 967 , 20000ﺗﺴﻤﻰ ﺛﻮاﺑﺖ ﺻﺤﻴﺤﺔ ﺑﺪون إﺷﺎرة .unsigned int
أﻣﺜﻠﺔ ﻋﻠﻰ ﺛﻮاﺑﺖ ﻋﺪد ﺣﻘﻴﻘﻲ ﺗﺴﺘﻌﻤﻞ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺸﺮﻳﺔ ﺑﺸﻜﻞ ﺻﺤﻴﺢ -:
421.5
10.6
0.0
0
01
-68.0
ﻣﻼﺣﻈﺔ/
ﻛ ﻞ اﻟﺜﻮاﺑ ﺖ اﻟﺮﻣ ﺰﻳﺔ اﻟ ﻮاردة أﻋ ﻼه ،وان اﺳ ﺘﺨﺪﻣﺖ ارﻗﺎﻣ ﺎ ﺣﺴ ﺎﺑﻴﺔ داﺧﻠﻬ ﺎ ،أﻻ أﻧﺎ ﻻ
ﺗﺤﻤ ﻞ أي ﻗ ﻴﻤﺔ ﺣﺴ ﺎﺑﻴﺔ ،وﻟ ﻴﺲ ﻟﻬ ﺎ ﻣﻌ ﻨﻰ ﺣﺴ ﺎﺑﻲ ،وﺗﺴ ﺘﺨﺪم ﻣ ﺜﻞ ﻫ ﺬه اﻟﺜﻮاﺑ ﺖ ﻋ ﺎدة
ﻛﻤﻌﻠﻮﻣﺎت ﺗﻮﺿﻴﺤﻴﺔ ﻣﻊ ﻧﺘﺎﺋﺞ اﻟﺒﺮﻧﺎﻣﺞ.
وﺑﻤ ﺎ أن أﻧ ﻮاع اﻟﻤﻌﻠﻮﻣ ﺎت اﻟﻤ ﺮاد ﺗﺨﺰﻳ ﻨﻬﺎ ﺗﻜ ﻮن ﻋ ﺎدة ﻣﺨ ﺘﻠﻔﺔ ﻣ ﺜﻞ اﻟﻘ ﻴﻢ اﻟﺼ ﺤﻴﺤﺔ أو
اﻟﺤﻘﻴﻘ ﻴﺔ أو اﻟﺮﻣ ﺰﻳﺔ ...اﻟـ ـﺦ ﻓ ﺎﻧﻚ ﺗﺤﺘﺎج أن ﺗﻌﻠﻢ اﻟﻤﺘﺮﺟﻢ ﻓﻲ ﺑﺪاﻳﺔ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻦ أﻧﻮاع
اﻟﻤﺘﻐ ﻴﺮات اﻟﺘ ﻲ ﺗ ﺮﻳﺪ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ﻓ ﻲ اﻟ ﺒﺮﻧﺎﻣﺞ ،ﻓﻤ ﺜﻼ ﻓ ﻲ اﻟﺴ ﻄﻮر اﻟﺘﺎﻟ ﻴﺔ ﺗﺒﻴ ﻦ أن
اﻟﻤﺘﻐﻴﺮﻳﻦ xو yﺣﻘﻴﻘﻴﺎن ،واﻟﻤﺘﻐﻴﺮ kﺻﺤﻴﺢ ،واﻟﻤﺘﻐﻴﺮ c,b,aرﻣﺰﻳﺔ.
;X=2.0
;Y=10.6*x
;K=100
;A=t
;B=f
;C=4
-٢ﻣﺘﻐﻴﺮات رﻣﺰﻳﺔ
وﻫﻲ ﻣﻮاﻗﻊ ﻓﻲ اﻟﺬاﻛﺮة ﺗﺨﺰن ﺑﻬﺎ رﻣﻮز.
-٣ﻣﺘﻐﻴﺮات ﻣﻨﻄﻘﻴﺔ
وﺗﺨﺰن ﺑﻬﺎ ﻗﻴﻤﺔ ﻣﻨﻄﻘﻴﺔ أﻣﺎ FALSE =0أو TRUE=1
وﻇﻴﻔﺘﻬﺎ اﻷداة
ﻟﻠﻄﺮح أو ﻛﺄﺷﺎره ﺳﺎﻟﺒﺔ -
ﻟﻠﺠﻤﻊ +
ﻟﻠﻀﺮب *
ﻟﻠﻘﺴﻤﺔ /
ﻟﺒﺎﻗﻲ اﻟﻘﺴﻤﺔ اﻟﺼﺤﻴﺤﺔ %
ﻟﻠﻨﻘﺼﺎن --
ﻟﻠﺰﻳﺎدة ++
اﻟﺠﺪول١-٣
) (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++
ﻓﺘﺴﺘﻌﻤﻞ اﻷداة %ﻟﺘﻘﻮم ﺑﻬﺬا اﻟﻌﻤﻞ.
;++a
ﻣﻌﻨﺎه إﺿﺎﻓﺔ ﻗﻴﻤﺔ 1إﻟﻰ aوﻳﻤﻜﻦ ﻛﺘﺎﺑﺘﻬﺎ ﺑﺼﻮره ﻣﻜﺎﻓﺌﺔ ﻋﻠﻰ اﻟﻨﺤﻮ اﻟﺘﺎﻟﻲ-:
;A=a+1
;--a
أو
;a--
;A=a-1
وﻫﻮ ﻳﻜﺎﻓﺊ اﻟﺼﻮرة
ﻟﻜ ﻦ ﻫ ﻨﺎك ﻓ ﺮﻗﺎ ﻓ ﻲ ﺳ ﺮﻋﺔ اﻟﺘﻨﻔ ﻴﺬ ،ﻓﺎﻟﺘﻌﺒ ﻴﺮ ;++aأﺳ ﺮع ﻣ ﻦ اﻟﺘﻌﺒ ﻴﺮ ; a=a+1وﻫ ﺬه
ﻫﻲ اﻟﻔﺎﺋﺪة ﻣﻦ ﺟﺮاء اﺳﺘﺨﺪام ﻣﺜﻞ ﻫﺬه اﻷدوات .
وﻣﻤ ﺎ ﻳﻨﺒﻐ ﻲ اﻟﺘﻨﺒ ﻴﻪ إﻟ ﻴﻪ ﻫ ﻨﺎ أن ﻫ ﻨﺎك ﻓ ﺮﻗﺎ ﺑﻴ ﻦ a++و ، ++aﺻ ﺤﻴﺢ أن ﻛ ﻼ ﻣ ﻦ
اﻟﺘﻌﺒﻴﺮﻳ ﻦ ﻳﺠﻤ ﻊ 1إﻟ ﻰ ، aﻟﻜ ﻦ ﻋ ﻨﺪ اﺳ ﺘﻌﻤﺎل ++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
اﻟﺰﻳﺎدة أو اﻟﻨﻘﺼﺎن
رﻗﻢ اﻷوﻟﻮﻳﺔ اﻷداة
1 ++أو --
2 - اﻹﺷﺎرة اﻟﺴﺎﻟﺒﺔ
3 * أو /أو %
4 +أو - اﻟﻀﺮب أو اﻟﻘﺴﻤﺔ أو اﻟﺒﺎﻗﻲ
5 =
6 ++أو ) --اﻟﻤﺘﺄﺧﺮة ﺑﻌﺪ اﻟﻌﺪد(
اﻟﺠﺪول١-٤ اﻟﺠﻤﻊ أو اﻟﻄﺮح
اﻟﻤﺴﺎواة
زﻳﺎدة أو ﻧﻘﺼﺎن ﺑﻤﻘﺪار 1
ﻣﻠﺤﻮﻇﺔ:
إذا ﺗﺴ ﺎوت أوﻟﻴ ﺘﺎن ﻣ ﺜﻞ اﻟﺠﻤ ﻊ واﻟﻄ ﺮح ﻓ ﻲ ﺗﻌﺒ ﻴﺮ ،ﻓ ﺘﻘﺪم اﻟﻌﻤﻠ ﻴﺔ اﻷﻗ ﺮب إﻟ ﻰ ﻳﺴ ﺎر
اﻟﺘﻌﺒ ﻴﺮ ،وﻋ ﻨﺪ اﺳ ﺘﻌﻤﺎل اﻷﻗ ﻮاس ﻷي ﺗﻌﺒ ﻴﺮ ﻓ ﺎن اﻷﻗ ﻮاس ﺗ ﺄﺧﺬ اﻷوﻟﻮﻳ ﺔ اﻷوﻟ ﻰ ﻓ ﻲ
اﻟﺘﻨﻔ ﻴﺬ ﻗ ﺒﻞ ) اﻟ ﺰﻳﺎدة أو اﻟﻨﻘﺼ ﺎن ( ،ﻛﻤ ﺎ ﻓ ﻲ ﻟﻐ ﺎت اﻟ ﺒﺮﻣﺠﺔ اﻷﺧ ﺮى ،واﻷﻣﺜﻠﺔ اﻵﺗﻴﺔ
ﺗﺒﻴﻦ ﻣﻔﻬﻮم اﻷوﻟﻮﻳﺔ ) اﻷﺳﺒﻘﻴﺔ (-:
ﻻﺣ ﻆ أﻧ ﻨﺎ ﺑﺪأﻧ ﺎ ﺑﺈﺟ ﺮاء اﻟﻌﻠﻤ ﻴﺎت اﻟﺤﺴ ﺎﺑﻴﺔ ﻣ ﻦ اﻟﻴﺴ ﺎر إﻟ ﻰ اﻟﻴﻤﻴ ﻦ ،وﺗﻌﻄ ﻰ أﻻ وﻟﻮﻳ ﻪ
ﻷﻳ ﺔ ﻋﻤﻠ ﻴﺔ ﺣﺴ ﺐ ﻗ ﺎﻋﺪة اﻷوﻟﻮﻳ ﺔ ،ﻓﺠ ﺎءت اﻟﻘﺴ ﻤﺔ ،ﻓ ﻲ اﻟﻤ ﺜﺎل ﻗ ﺒﻞ اﻟﺠﻤﻊ ،ﻛﻤﺎ ﺟﺎء
اﻟﻀﺮب ﺑﻌﺪ اﻟﻘﺴﻤﺔ وﺗﻼ ذﻟﻚ اﻟﺠﻤﻊ ﻛﺄﺧﺮ ﻋﻤﻠﻴﺔ.
وﻓ ﻲ ﻟﻐ ﺔ C++ﺗﻌ ﺎﻣﻞ اﻟﻨﺘ ﻴﺠﺔ ﻻ ) (falseﻋﻠ ﻰ أﻧﻬ ﺎ ﺻ ﻔﺮ ) (0وﺗ ﺄﺧﺬ اﻟﻨﺘ ﻴﺠﺔ ﻧﻌ ﻢ
) (trueأﻳﺔ ﻗﻴﻤﺔ ﻏﻴﺮ اﻟﺼﻔﺮ واﻟﻤﺸﻬﻮر أﻧﻬﺎ ). (1
وﻳﺒﻴﻦ ﻟﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ اﻷدوات اﻟﻌﻼﻗﻴﺔ واﻟﻤﻨﻄﻘﻴﺔ:
اﻷدوات اﻟﻌﻼﻗﻴﺔ
ﻣﻌﻨﺎﻫﺎ اﻷداة
اﻛﺒﺮ ﻣﻦ >
اﺻﻐﺮ ﻣﻦ <
اﻛﺒﺮ ﻣﻦ أو ﻳﺴﺎوي =>
اﺻﻐﺮ ﻣﻦ أو ﻳﺴﺎوي =<
ﻳﺴﺎوي ==
ﻻ ﻳﺴﺎوي =!
اﻟﺠﺪول١-٥
اﻷدوات اﻟﻤﻨﻄﻘﻴﺔ
ﻣﻌﻨﺎﻫﺎ اﻷداة
) Andﺣﺮف اﻟﻌﻄﻒ واو( &&
) Orﺣﺮف اﻟﻌﻄﻒ أو ( ||
) Notﻟﻠﻨﻔﻲ( أداة أﺣﺎدﻳﺔ unary !
اﻟﺠﺪول١-٦
ﺳ ﻤﻴﺖ ﻫ ﺬه اﻷدوات ﺑﺎﻟﺪﻗ ﻴﻘﺔ أو أدوات )اﻟﺒ ﺖ( ﻷﻧﻬ ﺎ ﺗ ﺘﻌﺎﻣﻞ ﻣﻊ ] ) [bitوﺣﺪة اﻟﺘﺨﺰﻳﻦ
اﻷوﻟ ﻴﺔ( ﻣﺒﺎﺷ ﺮة ،ﻓﺤﺼ ﺎ ،وﺿ ﺒﻄﺎ ،وإزاﺣ ﺔ ،وﺗﺴ ﺘﻌﻤﻞ ﻫ ﺬه اﻷدوات ﻣﻊ اﻟﻤﻌﻄﻴﺎت
اﻟﺼﺤﻴﺤﺔ intواﻟﺮﻣﺰﻳﺔ charﻓﻘﻂ ،وﻻ ﺗﺴﺘﻌﻤﻞ ﻣﻊ ﻏﻴﺮﻫﺎ ﻣﻦ أﻧﻮاع اﻟﻤﻌﻄﻴﺎت..
0 0 0 1 1 0 1 0 ﻗﻴﻤﺔ x
وﻣﻌ ﻨﻰ ~ اﻟﻨﻔ ﻲ ) (notوﻣﻌ ﻨﻰ اﻟﻨﻔ ﻲ ﻫ ﻨﺎ اﻟﺘﻀﺎد ﺑﻴﻦ 0و 1ﻓﻲ اﻟﻨﻈﺎم اﻟﻌﺪدي اﻟﺜﻨﺎﺋﻲ
،ﻓﻌ ﻨﺪﻣﺎ ﺗ ﻨﻔﻰ 0ﺗﺜﺒ ﺖ ﺑ ﺪﻻ ﻣ ﻨﻪ 1واﻟﻌﻜ ﺲ ﺻ ﺤﻴﺢ ،وﻫ ﺬا ﻳﻮﺿ ﺤﻪ ﻟﻚ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ
إذ ﺗﻢ )ﻧﻔﻲ( ﻗﻴﻤﺔ xﺑﺎﻟﺒﺖ ﻟﻴﺼﺒﺢ ~xﻓﻲ ﺟﻤﻴﻊ ﻣﻜﻮﻧﺎت ﻣﻦ اﻟﺒﺖ.
0 0 0 1 1 0 1 0 ﻗﻴﻤﺔ xﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ
أداة اﻻﺧﺘﻴﺎر|
إذا أردﻧﺎ اﺳﺘﻌﻤﺎل أداة اﻻﺧﺘﻴﺎر ﻣﻊ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻟﻘﻴﻤﺘﻲ Xو yﻋﻠﻰ اﻟﻨﺤﻮ ;x|y
ﺣﻴﺚ اﻻﺧﺘﻴﺎر ﺑﻴﻦ 0و 1ﻫﻮ ، 1واﻻﺧﺘﻴﺎر ﺑﻴﻦ 1و 1ﻫﻮ ، 1وﺑﻴﻦ 0و 0ﻫﻮ . 0
) T Ù T|F T Ù T|T T Ù F|Tاﻧﻈﺮ ﺟﺪاول اﻟﺼﺪق اﻟﺴﺎﺑﻘﺔ (
ﻻﺣ ﻆ أن اﻻﺧﺘ ﻴﺎر ﺑﻴ ﻦ 0و 0ﻧﺘﻴﺠ ﺘﻪ ، 0واﻻﺧﺘ ﻴﺎر ﺑﻴﻦ 1و 0ﻧﺘﻴﺠﺘﻪ ، 1وﺑﻴﻦ 1و1
ﻧﺘﻴﺠ ﺘﻪ ، 0أن أداة اﻻﺧﺘ ﻴﺎر اﻻﺳ ﺘﺜﻨﺎﺋﻲ ^ ) (XORﺗﺨ ﺘﻠﻒ ﻋ ﻦ أداة اﻻﺧﺘ ﻴﺎر )| (OR
ﻓ ﻲ أن اﻷوﻟ ﻰ ﺣﺎﻟ ﺔ ﺧﺎﺻ ﺔ ﻣ ﻦ اﻟﺜﺎﻧ ﻴﺔ إذ ﺗﻜ ﻮن ﻧﺘﻴﺠ ﺘﻬﺎ (1) trueﻋ ﻨﺪﻣﺎ ﻳﻜ ﻮن أﺣ ﺪ
ﻃﺮﻓ ﻲ اﻻﺧﺘ ﻴﺎر xأو yﻧﺘﻴﺠ ﺘﻪ ، trueوﻣ ﺎ ﻋ ﺪا ذﻟ ﻚ ﻓﻨﺘﻴﺠ ﺘﻬﺎ داﺋﻤ ﺎ ، (0) falseﻛﻤ ﺎ
ﻻﺣﻈﺖ ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ،أﻣﺎ ﻓﻲ ﺣﺎﻟﺔ اﻻﺧﺘﻴﺎر اﻟﻌﺎم ) (ORﻓﺎن ﻧﺘﻴﺠﺔ 1|1ﻫﻲ .1
ﻣﻌ ﻨﺎﻫﺎ :اﻧ ﻪ إذا ﺗﺤﻘ ﻖ اﻟﺸ ﺮط ) (b<cﻓﻴ ﻨﻔﺬ اﻟﺴ ﻄﺮ ، a=bوإﻻ ﻓ ﺎن a=cوﺑﺎﺳ ﺘﻌﻤﺎل
اﻷداة اﻟﺸ ﺮﻃﻴﺔ ؟ ﻳﻤﻜﻨ ﻨﺎ أن ﻧﻜﺘ ﺐ ﺑ ﺪﻻ ﻣ ﻦ اﻟﺠﻤﻠ ﺔ اﻟﺸ ﺮﻃﻴﺔ ﻛﻠﻬ ﺎ اﻟﺠﻤﻠ ﺔ اﻟﻤﺨﺘﺼ ﺮة
اﻟﺘﺎﻟﻴﺔ:
A=(b<c) ? b:c إذا ﺗﺤﻘﻖ اﻟﺸﺮط ﻓﺎن
A=b
A=c
إذا ﻟﻢ ﻳﺘﺤﻘﻖ اﻟﺸﺮط
ﻓﺎن
ﺗﻌﻄ ﻲ ﻋ ﻨﻮان 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دﻗ ﻴﻘﺔ ،وﻟ ﺬا ﻻ ﻳﻠﺘ ﺒﺲ ﻋﻠ ﻴﻚ اﻷﻣ ﺮ ﺑﻴ ﻦ اﻻﺳ ﺘﻌﻤﺎﻟﻴﻦ
اﻟﻤﺨﺘﻠﻔﻴﻦ.
ﺣﻴ ﺚ ﺳ ﺘﻜﻮن ﻧﺘ ﻴﺠﺔ nﻫ ﻨﺎ ﺗﺴ ﺎوي 2ﺑﺎﻳ ﺖ ،ﻫ ﻲ ﻃ ﻮل اﻟﻤﺘﻐﻴﺮ nاﻟﺼﺤﻴﺢ ) (intﻻن
ﻃﻮل اﻟﺼﺤﻴﺢ ﻋﺎدة ﻫﻮ 2ﺑﺎﻳﺖ ،وﻃﻮل اﻟﺤﻘﻴﻘﻲ 4ﺑﺎﻳﺖ ،ﻛﻤﺎ ﻓﻲ اﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ:
;Float x
;)Z=sizeof (x
ﺣﻴ ﺚ ﻳﻌﻄ ﻰ اﻟﻤﺘﻐ ﻴﺮ 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
ﻣﺜﺎل:
;Int a
وﺗﻘﻮم ﺑﺤﺠﺰ ﻣﻜﺎن ﻓﻲ اﻟﺬاﻛﺮة اﻟﻤﺸﺎر إﻟﻴﻪ ،ﺑﺎﻻﺳﻢ aﻟﺘﺨﺰﻳﻦ ﻗﻴﻤﺔ ﻋﺪدﻳﺔ ﺻﺤﻴﺤﺔ.
أن ﻣﻌ ﺮﻓﺔ أﻧ ﻮاع اﻟﺒ ﻴﺎﻧﺎت ،وﻛﻴﻔ ﻴﺔ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ،ﺗﻌ ﺪ ﺿ ﺮورﻳﺔ ﻟﻔﻬ ﻢ ﻟﻐ ﺔ c++
ﻓﻼﺳ ﺘﻌﻤﺎل اﻟﻤﺘﻐ ﻴﺮات ،ﻣ ﺜﻼ ،ﻧﺤ ﺘﺎج أن ﻧﻌﻠ ﻦ ﻓ ﻲ ﺑﺪاﻳ ﺔ ﻛ ﻞ ﺑ ﺮﻧﺎﻣﺞ ،أو ﺑﺪاﻳﺔ اﻟﺪوال
ﻋ ﻦ أﻧ ﻮاع ﻫ ﺬه اﻟﻤﺘﻐ ﻴﺮات ،وﻳ ﺘﻢ اﻟ ﺘﻌﺎﻣﻞ ﻣﻌﻬ ﺎ ،ﺧ ﻼل اﻟ ﺒﺮﻧﺎﻣﺞ ،ﻓ ﻲ ﺿ ﻮء أﻧ ﻮاع
ﻣﻌﻄﻴﺎﺗﻬﺎ ﻓﻤﺜﻼ اﻹﻋﻼن ﻋﻦ اﻟﺘﺎﻟﻴﺔ:
;Int a,b,x
ﺗﺨ ﺒﺮ ﻣ ﺘﺮﺟﻢ c++أن ﻳ ﺘﻌﺎﻣﻞ ﻣ ﻊ ﻫ ﺬه اﻟﻤﺘﻐ ﻴﺮات ،ﻋﻠ ﻰ أﻧﻬ ﺎ ﻣﺘﻐ ﻴﺮات ﺻ ﺤﻴﺤﺔ
وﻛﺬﻟﻚ ﺟﻤﻠﺔ اﻹﻋﻼن اﻟﺘﺎﻟﻴﺔ:
;Float m,y
وﻣ ﻦ اﻟﺠﺪﻳ ﺮ ﺑﺎﻟﺬﻛ ﺮ ،أن أﻫ ﻢ ﺗﻄﺒ ﻴﻘﺎت اﻟﻤﻌﻄ ﻴﺎت اﻟﺮﻣ ﺰﻳﺔ واﺳ ﺘﻌﻤﺎﻻﺗﻬﺎ ،ﻫ ﻮ ﻣﻌﺎﻟﺠ ﺔ
اﻟﻨﺼ ﻮص ،وﻣ ﺎ ﻳﺴ ﺘﺤﻖ اﻟﺘﺴ ﺠﻴﻞ واﻻﻫ ﺘﻤﺎم ،اﻧ ﻪ ﻳﻤﻜ ﻦ إﺟ ﺮاء ﻋﻤﻠ ﻴﺎت ﻋﻠ ﻰ
اﻟﻤﻌﻄﻴﺎت اﻟﺮﻣﺰﻳﺔ.
ﻫﻲ ﺟﻤﻠﺔ ﻣﻼﺣﻆ ﻓﻲ ﻟﻐﺔ ﺑﻴﺴﻚ ،ﺗﻘﺎﺑﻠﻬﺎ ﺟﻤﻠﺔ ﺗﻌﻠﻴﻖ اﻟﺘﺎﻟﻴﺔ ﻓﻲ ﻟﻐﺔ :C++
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
}
ﻧﺨﺘﺎر ﻫﻨﺎ
اﻟﺘﺴﻤﻴﺔ اﻟﺨﺎﺻﺔ ﺑﺎﻟﻤﺸﺮوع
ﺑﻌ ﺪ ذﻟ ﻚ ﻧﺨ ﺘﺎر ﻣ ﻦ اﻟﻘﺎﺋﻤ ﺔ Buildﺛ ﻢ ﻧﺨ ﺘﺎر Execute .exeﻟﻴﻄ ﺒﻖ ﻟ ﻨﺎ اﻟﻤﺸ ﺮوع ..
أو ﺑﺎﻟﻨﻘﺮ ﻣﻦ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ ﻋﻠﻰ اﻟﺰر . F5
ﻃ ﺒﻌﺎ أﻋﺰاﺋ ﻲ ﻫ ﺬا اﻟ ﺒﺮﻧﺎﻣﺞ اﻟﺼ ﻐﻴﺮ ﻫ ﻮ ﺑ ﺮﻧﺎﻣﺞ ﺗﻼﺣﻈ ﻮن أن اﻟﻜ ﻮد ﺗ ﺒﻌﻪ ﺧ ﺎص ﺑﻠﻐﺔ
Cاﻻم وﻟ ﻴﺲ c++ﻟﻜ ﻦ ﻣ ﺎ ﻧﻌﻤ ﻞ ﻋﻠ ﻴﻪ ﻫ ﻮ ﻣ ﺘﺮﺟﻢ ﻳﻘ ﺒﻞ اﻟﻠﻐﺘﻴ ﻦ ﻣﻌ ﺎ واﻟﻤ ﺘﺮﺟﻢ ﻫ ﻮ
، Visual C++وﻧﻼﺣ ﻆ اﻧ ﻪ ﺗ ﻢ ﻃ ﺒﺎﻋﺔ ﻋ ﺒﺎرة ! Hello Worldوﻫ ﻲ ﻧﺘ ﻴﺠﺔ ﺗﻨﻔ ﻴﺬ
اﻟﺪاﻟﺔ )( printfاﻟﻤﻮﺟﻮدة ﻓﻲ ﺳﻄﻮر اﻟﺒﺮﻧﺎﻣﺞ.
ﻣﻘﺪﻣﺔ introduction
ﻳﺘ ﻨﺎول ﻫ ﺬا اﻟﺠ ﺰء أﺳ ﺎﻟﻴﺐ إدﺧ ﺎل اﻟﻘ ﻴﻢ اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﺮﻣ ﺰﻳﺔ ،وأﺳ ﺎﻟﻴﺐ إﺧ ﺮاج وﻃﺒﺎﻋﺔ
ﻧ ﺘﺎﺋﺞ اﻟ ﺒﺮاﻣﺞ واﻟﺘﻌﺎﺑ ﻴﺮ اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﺮﻣ ﺰﻳﺔ ،وﻃ ﺒﺎﻋﺔ اﻟﻤﻌﻄ ﻴﺎت اﻟﻤﺨ ﺘﻠﻔﺔ ﺣﺴ ﺐ
اﻟﺤﺎﺟﺔ.
ﻟﻘ ﺪ ﺗﻌﻮدﻧ ﺎ ﻓ ﻲ ﻟﻐ ﺔ ﺑﻴﺴ ﻚ ،أن ﻧﺴ ﺘﻌﻤﻞ دوال ﻣﺒﻨ ﻴﺔ وﺟﺎﻫ ﺰة ﻋﻨﺪ اﻟﻄﻠﺐ ﻟﻠﻘﻴﺎم ﺑﺎﻹدﺧﺎل
ﻣ ﺜﻞ ) inputأو (readأو ﺑﺎﻹﺧ ﺮاج ﻣ ﺜﻞ ) ، (printوﻓ ﻲ ﻫ ﺬا اﻟﺼ ﺪد ،ﻓ ﺎن ﻟﻐ ﺔ
، C++ﺗ ﺘﻌﺎﻣﻞ ﻣ ﻊ اﻹدﺧ ﺎل واﻹﺧ ﺮاج ،ﺑﻄ ﺮﻳﻘﺔ ﻣﺨ ﺘﻠﻔﺔ ،ﺣﻴ ﺚ ﺗﻮﻓ ﺮ اﻟﻠﻐ ﺔ ،ﻋ ﺪدا
ﻛﺒ ﻴﺮا ﻣ ﻦ دوال اﻹﺧ ﺮاج واﻹدﺧ ﺎل ،ﺣﻴ ﺚ ﻳﻤﻜﻦ ﻟﻠﻤﺒﺮﻣﺞ أن ﻳﺴﺘﺪﻋﻴﻬﺎ ،وﻳﺴﺘﻔﻴﺪ ﻣﻨﻬﺎ
،ﺣﺴ ﺐ ﻧ ﻮع اﻟﻤﻌﻄ ﻴﺎت واﻟﻤﺘﻐ ﻴﺮات ،ﻛ ﻴﻔﻤﺎ ﻳﻨﺎﺳﺒﻪ ،وﺳﻮف ﻧﻮرد أن ﺷﺎء اﷲ ﻓﻲ ﻫﺬا
اﻟﻔﺼﻞ أﻫﻢ ﻫﺬه اﻟﺪوال واﺷﻬﺮﻫﺎ ﻟـ . C++
اﻟﻤﻠﻒ Iostream.hﻳﻌﻨﻲ:
: ioﻣﺨﺘﺼﺮ ﻟـ input/outputآي اﻹدﺧﺎل واﻹﺧﺮاج.
: Streamﻣﻜﺘﺒﺔ ﻗﻴﺎﺳﻴﺔ ﺧﺎﺻﺔ ﺑﺎﻹﺧﺮاج واﻹدﺧﺎل اﻟــﺦ..
header file : Hآي اﻟﻤﻠﻒ اﻟﺪﻟﻴﻞ.
ﻣﺜﺎل:١
إذا أردت ﻃﺒﺎﻋﺔ اﻟﻌﺪد 100ﻓﻲ ﻟﻐﺔ ﺑﻴﺴﻚ ﻓﺎﻟﺠﻤﻠﺔ:
Print 100
ﺗﺆدي ﻋﻤﻠﻴﺔ اﻟﻄﺒﺎﻋﺔ ،أﻣﺎ ﻓﻲ ﻟﻐﺔ C++ﻓﺎن اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻌﻤﻞ ذﻟﻚ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;cout<<100
;return0
}
ﺑﺪﻻendl وﻗﺪ ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﺪاﻟﺔ، \ إﻳﻌﺎز ﻟﻼﻧﺘﻘﺎل إﻟﻰ ﺳﻄﺮ ﺟﺪﻳﺪn ﺑﻌﺒﺎرة أﺧﺮى
:\ وﻛﻤﺎ ﻳﻠﻲn ﻣﻦ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
cout<<“ smoking is dangerous”<<endl;
return0;
}
ﻣﺜﺎل:٥
ﺑﺮﻧﺎﻣﺞ ، C++اﻟﺘﺎﻟﻲ ﻳﻄﺒﻊ اﻟﻘﻴﻤﺔ اﻟﺤﻘﻴﻘﺔ :10.5
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;cout<<10.5
;return0
}
:٧ﻣﺜﺎل
:اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﻳﻘﻮم ﺑﻄﺒﺎﻋﺔ ﻗﻴﻤﺔ ﻣﺘﻐﻴﺮ ﺣﻘﻴﻘﻲ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
float x;
x=4.25
cout<<x;
return0;
}
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int=100
float x=4.25
;cout<<a<<x
;return0
}
وﺳﺘﻈﻬﺮ ﻧﺘﺎﺋﺞ ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻛﻤﺎ ﻃﻠﺒﻨﺎ )اﻟﺼﺤﻴﺢ ﻳﺴﺒﻖ اﻟﺤﻘﻴﻘﻲ( ،ﻫﻜﺬا:
100 4.25
ﻣﺜﺎل:١٠
ﻣﺎذا إذا أردﻧﺎ ﻃﺒﺎﻋﺔ ﻋﺪد ﺻﺤﻴﺢ وﺣﻘﻴﻘﻲ ﻣﻊ ﻧﺼﻮص ﺑﻨﻔﺲ اﻟﻮﻗﺖ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int=100
float x=4.25
;cout<<“a=”<<a<<“x=”<<x
;return0
}
وﻧﺸﺎﻫﺪ أﻧﻬﺎ ﻋﻜﺲ ﻋﻤﻠﻴﺔ اﻹﺧﺮاج ﺣﻴﺚ اﻹﺧﺮاج << أﻣﺎ اﻹدﺧﺎل >> .
وﺗﺴ ﺘﺨﺪم ﻫ ﺬه اﻟﺠﻤﻠ ﺔ ﻹدﺧ ﺎل ﻗ ﻴﻢ ﻋ ﺒﺮ ﻟﻮﺣ ﺔ اﻟﻤﻔﺎﺗ ﻴﺢ ﻟﻠﻤﺘﻐ ﻴﺮات ﻓ ﻲ اﻟﺬاﻛ ﺮة ،وﻳ ﺘﻢ
ﺗﻌﻴﻴﻦ ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ ﻓﻲ اﻟﺬاﻛﺮة ﺑﺎﺳﺘﺨﺪام ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﻴﺢ .
ﻣﻼﺣﻈﺔ/
ﻻ ﻳﺠﻮز أن ﻧﺴﺘﺨﺪم اﻟﻤﺘﻐﻴﺮ ﻗﺒﻞ ﺗﻌﺮﻳﻔﺔ.
ﻣﺜﺎل ﺻﺤﻴﺢ:
;Int x
;Cin>>x
ﻣﺜﺎل ﺧﺎﻃﺊ:
;Cin>>x
ﻣﺜﺎل:١٢
ﺳﻮف ﻧﻘﻮم ﺑﺈدﺧﺎل ﻋﺪد ﺻﺤﻴﺢ ﻓﻲ ﻫﺬا اﻟﺘﻄﺒﻴﻖ ﺛﻢ ﻧﻘﻮم ﺑﻄﺒﺎﻋﺘﻪ ﻛﺎﻟﺘﺎﻟﻲ:
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int=a
;cin>>a
;cout<<a
;return0
}
ﻧﻼﺣ ﻆ ﻓ ﻲ ﻫ ﺬا اﻟﻤ ﺜﺎل أﻧ ﻨﺎ ﻗﻤ ﻨﺎ ﺑ ﺘﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ aﺑﺄﻧﻪ ﻋﺪد ﺻﺤﻴﺢ ﺑﻌﺪ ذﻟﻚ ﻋﻨﺪ ﺗﻨﻔﻴﺬ
اﻟ ﺒﺮﻧﺎﻣﺞ ﺳ ﻴﻄﻠﺐ ﻣ ﻨﺎ إدﺧ ﺎل ﻋ ﺪد ﺳ ﻨﺪﺧﻞ اﻟﻌ ﺪد 10ﻣ ﺜﻼ ﻋ ﻨﺪ ذﻟ ﻚ ﺳ ﻴﻜﻮن اﻟ ﻨﺎﺗﺞ
ﻛﺎﻟﺘﺎﻟﻲ:
10
”#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
}
ﻣﺜﺎل:١٥
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹدﺧﺎل ﺛﻼث ﻋﻼﻣﺎت ﻟﻄﺎﻟﺐ 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
#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
.. ﻟﻨﻮﺿﺢ ﻟﻠﻤﺴﺘﺨﺪم أﻳﻦ اﻹدﺧﺎل واﻹﺧﺮاج
ﻣﻘﺪﻣﺔ introduction
ﻗ ﺪ ﻧﺤ ﺘﺎج أن ﻧﻨ ﺘﻘﻞ ﻣ ﻦ ﺳ ﻄﺮ إﻟ ﻰ آﺧ ﺮ ﻓ ﻲ ﺑ ﺮﻧﺎﻣﺞ ، C++وﻗ ﺪ ﻧﺤﺘﺎج أن ﻧﻘﻮم ﺑﺘﻨﻔﻴﺬ
ﺑﻌ ﺾ اﻟﺠﻤ ﻞ ﻋ ﻨﺪ ﺗﺤﻘ ﻖ ﺑﻌ ﺾ اﻟﺸ ﺮوط ،وﻗ ﺪ ﻧﺤ ﺘﺎج أن ﻧﻜ ﺮر ﻋﻤﻠ ﻴﺔ ﻣ ﻦ ﻋﻤﻠ ﻴﺎت
اﻹدﺧ ﺎل أو اﻹﺧ ﺮاج أو اﻟﺤﺴ ﺎب ﻋ ﺪدا ﻣ ﻦ اﻟﻤ ﺮات ،وﻗ ﺪ ﻧﺤ ﺘﺎج أن ﻧﺒﻨ ﻲ ﺷ ﺒﻜﺔ ﻣ ﻦ
ﺗﻮزﻳ ﻊ اﻷواﻣ ﺮ ﻋﻠ ﻰ ﻋ ﺪد ﻣ ﻦ ﺳ ﻄﻮر اﻟ ﺒﺮﻧﺎﻣﺞ ،ﺣﺴ ﺐ ﻣﻘﺘﻀ ﻴﺎت ﺑﻌ ﺾ اﻷﺣ ﻮال ،
وﺣﺴ ﺒﻤﺎ ﺗﻘﺘﻀ ﻴﻪ ﻃﺒ ﻴﻌﺔ اﻟﻤﺴ ﺄﻟﺔ ،ﻓ ﻲ ﻫ ﺬه اﻟﺤ ﺎﻻت :ﻧﺤ ﺘﺎج أن ﻧ ﺘﻌﻠﻢ أﺳ ﺎﻟﻴﺐ اﻟﺸﺮط ،
وأﺳ ﺎﻟﻴﺐ اﻟ ﺘﻜﺮار ،وﻛﻴﻔ ﻴﺔ اﻟ ﺘﺤﻜﻢ ﻓ ﻲ ﻣﺴ ﺎر اﻟ ﺒﺮﻧﺎﻣﺞ ،وﺗﻌ ﺪ أﺳ ﺎﻟﻴﺐ اﻟﺸ ﺮط واﻟﺘﺤﻜﻢ
واﻟﺘﻜﺮار ﺑﻤﺜﺎﺑﺔ اﻟﻘﻠﺐ ﻓﻲ ﺟﺴﻢ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ،وﺑﺪوﻧﻬﺎ ﻻ ﻳﻤﻜﻦ ﺗﻨﻈﻴﻢ آي ﺑﺮﻧﺎﻣﺞ.
وﺗﻮﻓ ﺮ ﻟﻐ ﺔ C++ﻟﻠﻤ ﺒﺮﻣﺞ ﻋ ﺪدا ﻣ ﻦ اﻷﺳ ﺎﻟﻴﺐ واﻟ ﺪوال اﻟﻔﻌﺎﻟ ﺔ ،اﻟﻤ ﺘﻌﻠﻘﺔ ﺑﻬﺬا اﻟﺸﺄن ،
وﺗﻤ ﺘﺎز ﻫ ﺬه اﻷﺳ ﺎﻟﻴﺐ ﺑﺄﻧﻬ ﺎ أﺳ ﺎﻟﻴﺐ ﺑﻨﺎﺋ ﻴﺔ أو ﺑﻨ ﻴﻮﻳﺔ structuredآي ﻳﻤﻜ ﻦ ﺗﻨﻈ ﻴﻢ
ﻋﻤﻠ ﻴﺎت اﻟ ﺘﺤﻜﻢ واﻟ ﺘﻜﺮار ﻓ ﻴﻬﺎ ،ﺑﺄﺳ ﻠﻮب ذاﺗ ﻲ ﻣ ﻦ ﺑﺪاﻳ ﺔ اﻟﻌﻤﻠ ﻴﺎت وﺣ ﺘﻰ ﻧﻬﺎﻳ ﺘﻬﺎ دون
ﺗﺪﺧ ﻞ ﻣ ﻦ اﻟﻤ ﺒﺮﻣﺞ أﺛ ﻨﺎء ﻫ ﺬه ا ﻟﻌﻤﻠ ﻴﺎت ،ﻟﻸﺷ ﺮاف ﻋﻠ ﻰ اﻟﺘﻮﺟ ﻴﻪ واﻟﺘﺨﻄ ﻴﻂ ﻟﻜ ﻞ
ﺧﻄ ﻮه ﻣ ﻦ ﺧﻄ ﻮات اﻟ ﺒﺮﻧﺎﻣﺞ ،وﻳﻌ ﺮف ﺑﻌ ﺾ اﻟﺨ ﺒﺮاء واﻟﻤﺨﺘﺼﻴﻦ اﻟﺒﺮﻣﺠﺔ اﻟﺒﻨﻴﻮﻳﺔ:
أﻧﻬ ﺎ اﻟ ﺒﺮﻣﺠﺔ اﻟﺘ ﻲ ﻻ ﺗﺴ ﺘﻌﻤﻞ ﺟﻤﻠ ﺔ اﻻﻧﺘﻘﺎل ، GOTOﻟﺘﻮﺟﻴﻪ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﻛﻞ ﺧﻄﻮة
،وﻣ ﻊ ذﻟ ﻚ ﻓ ﺎن ﻟﻐ ﺔ ، C++ﺗﻮﻓ ﺮ ﺟﻤﻠ ﺔ اﻻﻧ ﺘﻘﺎل ﻫ ﺬه ،ﻟﻜ ﻨﻬﺎ ﻻ ﺗﺴ ﺘﻌﻤﻞ إﻻ
ﻟﻠﻀﺮورة.
وﺣﻴ ﺚ أن ﺟ ﻮاب اﻟﺸ ﺮط أﻣ ﺎ أن ﻳﻜ ﻮن ﺻ ﻮاﺑﺎ trueأو زاﺋﻔ ﺎ falseﻓ ﺎن ﻟﻐ ﺔ ، C++
ﺗﻌﻄ ﻲ اﻟﺤﺎﻟ ﺔ اﻟﺼ ﺎﺋﺒﺔ ﻗ ﻴﻤﺔ ﻋﺪدﻳ ﺔ ﺗﺨ ﺘﻠﻒ ﻋ ﻦ اﻟﺼ ﻔﺮ ،وﺗﻌﻄ ﻲ ﻗ ﻴﻤﺔ ﺻ ﻔﺮ ﻟﻠﺤﺎﻟ ﺔ
اﻟ ﺰاﺋﻔﺔ ) ﻋ ﻨﺪ ﻋ ﺪم ﺗﺤﻘ ﻖ اﻟﺸ ﺮط أو اﻟﺸ ﺮوط ( وﻟ ﺬا ﻓﺎن ﻟﻐﺔ C++ﺗﻮﻓﺮ ﻣﺮوﻧﺔ ﻛﺒﻴﺮة
ﻓﻲ اﺳﺘﺨﺪام ﻋﺪد ﻛﺒﻴﺮ ﻣﻦ اﻟﺪوال ،وﻓﻲ ﺗﻮﺟﻴﻪ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺮﻳﻘﺔ ﻓﻌﺎﻟﺔ وﻓﺎﺋﻘﺔ.
اﻟﺼﻴﻐﺔ اﻷوﻟﻰ
ﻣﺜﺎل:٢
اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ 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
}
”#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
}
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; ﻟﻄﺒﺎﻋﺔ اﻟﺘﻘﺪﻳﺮ
}
:٦ﻣﺜﺎل
#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
وﻣﻌ ﻨﺎﻫﺎ :اﻧ ﻪ ﻳ ﺘﻢ ﺗﻨﻔ ﻴﺬ اﻟﻨﺘ ﻴﺠﺔ اﻷوﻟ ﻰ 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
ﺗﻘ ﻮم ﺟﻤﻠ ﺔ 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
}
واﻟﻨﺘﻴﺠﺔ ﻛﺎﻟﺘﺎﻟﻲ:
:٩ﻣﺜﺎل
؟10 إﻟﻰ1 اﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻟﻄﺒﺎﻋﺔ ﻗﻴﻤﺔ اﻟﻌﺪاد ﻣﻦ
#include “ stdafx.h”
#include “ iostream.h”
main ()
{
int a;
for (a=1;a<=10;++a)
cout<<a<<endl;
return0;
}
”#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
:١١ﻣﺜﺎل
#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;
}
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
ﻓﻠﻮ أﺧﺬﻧﺎ ﺣﺎﻟﺔ ﺣﻠﻘﺘﻴﻦ ﻣﺘﺪاﺧﻠﺘﻴﻦ ﻓﺎﻧﻬﻤﺎ ﺗﻜﺘﺒﺎن ﻋﻠﻰ اﻟﺼﻮرة اﻟﺘﺎﻟﻴﺔ:
)For(...
)For (...
;Statements
وﺗﻜ ﻮن ﻓ ﻲ ﻫ ﺬه اﻟﺤﺎﻟ ﺔ اﻟﺠﻤﻠ ﺔ )أو اﻟﺠﻤ ﻞ( ﺟ ﺰءا ﻣﻜ ﺮرا ﻣﺮﺗ ﺒﻄﺎ ﺑﺎﻟﺤﻠﻘ ﺔ اﻟﺪاﺧﻠ ﻴﺔ ،
واﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ ﺗﺘﻜﺮر ﺣﺴﺐ أواﻣﺮ اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ وﻫﻜﺬا ...
اﻟﺤﻠﻘﺔ اﻟﺨﺎرﺟﻴﺔ
اﻟﺤﻠﻘﺔ
اﻟﻮﺳﻄﻲ
اﻟﺤﻠﻘﺔ
اﻟﺪاﺧﻠﻴﺔ
ﻣﺜﺎل:١٤
”#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
واﻟ ﻨﺎﺗﺞ ﺳ ﻴﻜﻮن ﻛﺒ ﻴﺮ ﻟﺬﻟ ﻚ ﺳ ﺄﻋﻄﻴﻜﻢ ﺟ ﻮاب اﻟﺤ ﻞ ﻟﻠﺴ ﻄﺮ اﻷول واﻟﺴ ﻄﺮ اﻷﺧ ﻴﺮ وﻣ ﺎ
ﺑﻴﻨﻬﻤﺎ ﻟﻜﻢ.
اﻟﺴﻄﺮ اﻷول1612 :
اﻟﺴﻄﺮ اﻷﺧﻴﺮ 203 :
ﻣﺜﺎل:١٦
”#include “ stdafx.h
”#include “ iostream.h
)( main
;{ int a
;a=1
)while (a<3 ﻃﺎﻟﻤﺎ اﻟﺸﺮط
;cout<<a++
;return0
} اﻟﺰﻳﺎدة ﺑﻤﻘﺪار 1
ﺑﻌﺪ ﻃﺒﺎﻋﺔ
اﻟﻨﺘﻴﺠﺔ
واﻟﻨﺎﺗﺞ
ﺳﻮف ﻳﻜﻮن:
12
واﻟﻨﺎﺗﺞ
****
:١٨ﻣﺜﺎل
#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
”#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
ﻣﺜﺎل:٢١
”#include “ stdafx.h
”#include “ iostream.h
)( main
{
;int i
)for (i=1;i<100;++i
{
;cout<<i ﻳﻮﻗﻒ ﺗﻨﻔﻴﺬ ﻫﺬه اﻟﺠﻤﻠﺔ
;if (i= =10) break ﺣﻠﻘﺎت اﻟﺘﻜﺮار ﻋﻨﺪﻣﺎ
} ﻳﺼﺒﺢ i=10
;return0
}
ﻣﺜﺎل:٢٣
”#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
}
:اﻟﻨﺎﺗﺞ
12
24
36
48
60
72
84
96
ﻣﺜﺎل:٢٦
”#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ﻓﺎﻧ ﻪ ﻳﻄ ﺒﻊ اﻟﻌ ﺪد ﻣﺒﺎﺷ ﺮة ﻣ ﻦ دون اﻟﺬﻫ ﺎب ﻟﻠﺴ ﻄﺮ
اﻷﺧﻴﺮ ﻟﺘﺤﻘﻖ اﻟﺸﺮط .
ﻣﻘﺪﻣﺔ introduction
أن ﻃ ﺮق اﻟ ﺘﻌﺎﻣﻞ ﻣ ﻊ أﺳ ﻤﺎء اﻟﻤﺘﻐ ﻴﺮات واﻟﺜﻮاﺑ ﺖ اﻟﻌﺪدﻳ ﺔ واﻟﺮﻣ ﺰﻳﺔ ،اﻟﺘ ﻲ وردت ﻓ ﻲ
اﻟﻔﺼ ﻮل اﻟﺴ ﺎﺑﻘﺔ ،ﺗﻌ ﺪ ﺻ ﺎﻟﺤﺔ ﻟﻠ ﺘﻌﺎﻣﻞ ﻣ ﻊ ﻋ ﺪد ﻣﺤ ﺪود ﻣﻦ ﻫﺬه اﻟﺜﻮاﺑﺖ واﻟﻤﺘﻐﻴﺮات ،
ﺳ ﻮاء ﻓ ﻲ ﻋﻤﻠ ﻴﺎت اﻹدﺧ ﺎل واﻹﺧ ﺮاج أو ﻓ ﻲ اﻟﻌﻤﻠ ﻴﺎت اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﻤﻨﻄﻘ ﻴﺔ ،وﻋ ﻨﺪﻣﺎ
ﻳﺼ ﺒﺢ ﻋ ﺪد اﻟﻤﺘﻐ ﻴﺮات ﻛﺒ ﻴﺮا ﺟ ﺪا ،ﺗﺼ ﺒﺢ ﺗﻠ ﻚ اﻟﻄ ﺮق ﻏ ﻴﺮ ﻋﻤﻠ ﻴﺔ ،ﻓﻤ ﺜﻼ ﻟ ﻮ أردﻧ ﺎ
إدﺧ ﺎل ﻣﺎﺋ ﺔ ﻗ ﻴﻤﺔ ﻟﻠﻤﺘﻐ ﻴﺮات .... x2,x1-إﻟ ﻲ ، x100ﻓﻜ ﻢ اﻟﺤ ﻴﺰ اﻟﻤﻄﻠ ﻮب ﻣ ﻦ
اﻟ ﺒﺮﻧﺎﻣﺞ ﻟﻌﻤﻠ ﻴﺎت اﻹدﺧ ﺎل واﻹﺧ ﺮاج واﻟﻌﻤﻠ ﻴﺎت اﻟﺤﺴ ﺎﺑﻴﺔ واﻟﻤﻨﻄﻘ ﻴﺔ ﻟﻬ ﺬه اﻟﻤﺘﻐﻴﺮات ؟
ﻫ ﺬا ﻣ ﻦ ﺟﻬ ﺔ ،وﻣ ﻦ ﺟﻬ ﺔ أﺧ ﺮى :ﻓﺄﻧ ﻨﺎ ﻧﻮﻓ ﺮ ﻣﺨ ﺰﻧﺎ ﺧﺎﺻ ﺎ ﻟﻜ ﻞ ﻣﺘﻐﻴﺮ ﻧﺘﻌﺎﻣﻞ ﻣﻌﻪ ،
أﺛ ﻨﺎء ﺗﻨﻔ ﻴﺬ اﻟ ﺒﺮﻧﺎﻣﺞ ،وﻟﺬﻟ ﻚ ﻟﺤﻔ ﻆ ﻗﻴﻤ ﺘﻪ ﻓ ﻲ ﻣﺨ ﻮن ،وﻣ ﻦ ﺛ ﻢ ﻻﺳ ﺘﻌﻤﺎل ﻗﻴﻤ ﺘﻪ ﻓ ﻲ
ﻋﻤﻠ ﻴﺎت أﺧ ﺮى ﺗﺎﻟ ﻴﺔ ،وﻣ ﻦ ﻧﺎﺣ ﻴﺔ ﺛﺎﻟ ﺜﺔ ،ﻓ ﺎن ﻣ ﻦ اﻟﺼﻌﻮﺑﺔ ﺑﻤﻜﺎن ،ﺑﻞ ﻣﻦ اﻟﻤﺴﺘﺤﻴﻞ
اﺳﺘﻌﻤﺎل اﺳﻢ اﻟﻤﺘﻐﻴﺮ اﻟﻌﺪدي أو اﻟﺮﻣﺰي ﻛﻤﺼﻔﻮﻓﺔ ذات ﺑﻌﺪﻳﻦ ،وﺛﻼﺛﺔ أﺑﻌﺎد ...اﻟـﺦ
ﻟﻸﺳ ﺒﺎب اﻟ ﺜﻼﺛﺔ اﻟ ﻮاردة أﻋ ﻼه ،ﺟ ﺎءت ﻓﻜ ﺮة اﺳﺘﻌﻤﺎل ﻣﺘﻐﻴﺮ ﺟﻤﺎﻋﻲ ﻳﻀﻢ ﺗﺤﺖ اﺳﻤﻪ
ﻋ ﺪدا ﻣ ﻦ اﻟﻌﻨﺎﺻ ﺮ ﻳﺴ ﻤﻰ ﺑﺎﻟﻤﺘﻐ ﻴﺮ اﻟﺮﻗﻤ ﻲ ، subscripted variableوﻳ ﺘﻢ ﺗﺮﻗﻤ ﻴﻪ
ﺑﻴ ﻦ ﻗﻮﺳ ﻴﻦ ﻣﺮﺑﻌﻴ ﻦ ] [ ﻳﻮﺿ ﻊ ﺑﻴ ﻨﻬﻤﺎ ﻗ ﻴﻤﺔ اﻟﻌ ﺪاد اﻟﻤ ﺮﻗﻢ ، subscriptوﻗ ﺪ ﻧﺴ ﻤﻴﺔ
اﻟﺪﻟ ﻴﻞ indexأﺣ ﻴﺎﻧﺎ ،وﻳﻤﻜﻨ ﻨﺎ ﺗﺸ ﺒﻴﻪ اﻟﻤﺘﻐ ﻴﺮ اﻟﻤ ﺮﻗﻢ ﺑﻘﺴ ﻢ اﻟﻬ ﺎﺗﻒ ﻟﻤﺆﺳﺴ ﺔ ﻣ ﺎ ،ﻓﻬ ﻮ
ﻣﻘﺴ ﻢ واﺣ ﺪ ،ﺗ ﻨﻈﻢ ﺗﺤ ﺘﻪ ﻋ ﺪد ﻣ ﻦ اﻷرﻗ ﺎم اﻟﻔﺮﻋﻴﺔ ﻟﻠﻤﻮﻇﻔﻴﻦ وﻛﻞ رﻗﻢ ﻣﻦ ﻫﺬه اﻷرﻗﺎم
ﻣﺴ ﺘﻘﻞ وﻣﺘﻤ ﻴﺰ ﻋ ﻦ اﻷرﻗ ﺎم اﻟﻔﺮﻋ ﻴﺔ اﻷﺧ ﺮى ،و ﻟﻪ ﻣﺨ ﺰن ﺧ ﺎص ﻓ ﻲ اﻟﺬاﻛ ﺮة ،اﻵن
اﻧ ﻪ ﻛﻐ ﻴﺮه ﻣ ﻦ اﻷرﻗ ﺎم اﻟﻔﺮﻋ ﻴﺔ ﺗ ﺎﺑﻊ ﻟﻠ ﺮﻗﻢ اﻟﻌ ﺎم ﻟﻤﻘﺴ ﻢ اﻟﻤﺆﺳﺴ ﺔ ،ﻛﻤ ﺎ ﻳﻤﻜ ﻦ ﺗﺸ ﺒﻴﻪ
اﻟﻤﺘﻐ ﻴﺮ اﻟﻤ ﺮﻗﻢ ﺑﺎﻟﺠ ﻴﺶ اﻟ ﺬي ﻳﻌ ﺎﻣﻞ ﻛﺎﺳ ﻢ ﻣﺘﻐ ﻴﺮ واﺣ ﺪ ،ﻟﻜ ﻦ ﻳﻀ ﻢ ﻋ ﺪدا ﻛﺒ ﻴﺮا ﻣ ﻦ
اﻟﻌﻨﺎﺻﺮ ،ﻓﻤﺜﻼ اﻟﻌﻨﺎﺻﺮ اﻟﺘﺎﻟﻴﺔ ):ﻣﻦ اﻟﻴﻤﻴﻦ إﻟﻰ اﻟﻴﺴﺎر(:
]A[n] ...a[2], a[1], a[0
ﺗﺎﺑﻊ ﻟﻠﻤﺘﻐﻴﺮ اﻟﺠﻤﺎﻋﻲ ] [a
وﻛ ﻞ ﻋﻨﺼ ﺮ ﻣ ﻦ ﻫ ﺬه اﻟﻌﻨﺎﺻ ﺮ ﻟﻪ ﻋ ﻨﻮان ﻓ ﻲ اﻟﺬاﻛﺮ ، addressﻓﺎﻟﻌﻨﻮان اﻷول ﻳﻜﻮن
ﻟﻠﻌﻨﺼﺮ اﻷول واﻟﺜﺎﻧﻲ ﻟﻠﺜﺎﻧﻲ واﻟﺜﺎﻟﺚ ﻟﻠﺜﺎﻟﺚ ...وﻫﻜﺬا.
وﻳﺴ ﺘﻌﻤﻞ اﻟﻤﺘﻐ ﻴﺮ اﻟﺠﻤﺎﻋ ﻲ ]اﻟﻤ ﺮﻗﻢ[ أو اﻟﻤﺼ ﻔﻮﻓﺔ ،ﻓ ﻲ ﻟﻐ ﺔ c++وﻏ ﻴﺮﻫﺎ ،ﺣﺠ ﺰ
ﺟﻤﺎﻋ ﻲ ﻣﺴ ﺒﻖ ﻓ ﻲ اﻟﺬاﻛ ﺮة ﻟﺠﻤ ﻴﻊ ﻋﻨﺎﺻ ﺮه ،ﻓﻠ ﻮ ﻛ ﺎن ﻳﺘ ﺒﻌﻪ ﺧﻤﺴ ﻮن ﻋﻨﺼ ﺮا ،ﻓﺎﻧ ﻪ
ﻳﺤﺠﺰ ﻟﻪ 50ﻣﺨﺰﻧﺎ ،ﻋﻠﻰ اﻷﻗﻞ ﻓﻲ اﻟﺬاﻛﺮة .
ﻣ ﻦ اﻟﻔﻮاﺋ ﺪ اﻟﻤﻬﻤ ﺔ ﻟﻠﻤﺘﻐ ﻴﺮات اﻟﻤ ﺮﻗﻤﺔ واﻟﻤﺼ ﻔﻮﻓﺎت :ﻫ ﻮ اﺳ ﺘﻌﻤﺎﻟﻬﺎ ﻓ ﻲ اﻟﺘﺮﺗﻴ ﺐ
اﻟﺘﺼ ﺎﻋﺪي واﻟﺘﻨﺎزﻟ ﻲ ﻟﻠﻌﻨﺎﺻ ﺮ واﻟﻘ ﻴﻢ اﻟﻤﺨ ﺘﻠﻔﺔ ،وﻋﻤﻠ ﻴﺎت ﺗﺮﺗﻴ ﺐ اﻷﺳ ﻤﺎء اﻷﺑﺠ ﺪي
اﻟﻌﺪد ﻣﻦ
اﻻﺳﻢ اﻟﺠﻤﺎﻋﻲ
ﻣﺜﻞ double -– int اﻟﻌﻨﺎﺻﺮ
char
وﻳ ﺒﺪأ اﻟﻌ ﺪاد اﻟﻤ ﺮﻗﻢ ﻋ ﺎدة ﻣ ﻦ اﻟﺼ ﻔﺮ ،آي أن اﻟﻌﻨﺼ ﺮ اﻷول ﻣ ﻦ اﻟﻤﺼ ﻔﻮﻓﺔ ][ aﻫ ﻮ
] a[0واﻟﺜﺎﻧﻲ ] ... a[1وﻫﻜﺬا ﻓﻤﺜﻼ اﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﺎﻟﻴﺔ:
;]Int a[20
اﺳﻤﻬﺎ ، aوﻗﺪ ﺣﺠﺰ ﻟﻬﺎ 20ﻣﻮﻗﻌﺎ ﻟﻌﺸﺮﻳﻦ ﻋﻨﺼﺮا ﻣﻦ اﻟﻨﻮع اﻟﺼﺤﻴﺢ .
واﻟﻤﺼﻔﻮﻓﺔ اﻟﺘﺎﻟﻴﺔ:
;]Char name[15
ﻣﺼﻔﻮﻓﺔ رﻣﺰﻳﺔ ،اﺳﻤﻬﺎ nameﻳﺤﺠﺰ ﻟﻬﺎ ﺧﻤﺴﺔ ﻋﺸﺮ ﻋﻨﺼﺮا ﻣﻦ اﻟﻨﻮع اﻟﺮﻣﺰي
ﻟﻬﺎ .
وﻫﻜـﺬا...
ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﻳﺘﻢ إدﺧﺎل ﻋﺸﺮﻳﻦ ﻋﻨﺼﺮا ﻣﻦ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ a
A[0]=1ﻋﻨﺪﻣﺎ ﻳﻜﻮن I=0
A[1]=2ﻋﻨﺪﻣﺎ ﻳﻜﻮن I=1
…
…
…
a[19]=20ﻋﻨﺪﻣﺎ ﻳﻜﻮن I=19
#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;
}
ﻣﺜﺎل:٣
”#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
}
#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 واﻟﻤﺠﻤﻮع
اﻟﻌﻨﺼﺮ
إذا ﻓﺮﺿ ﻨﺎ أن ﻋ ﻨﻮان ﻣﻮﻗ ﻊ اﻟﻌﻨﺼ ﺮ اﻷول ] x[0ﻓ ﻲ اﻟﺬاﻛ ﺮة ﻫ ﻮ ، 100ﻓﺎن ﻋﻨﺎوﻳﻦ
اﻟﻌﻨﺎﺻﺮ اﻷﺧﺮى ﺗﻜﻮن ﻋﻠﻰ اﻟﺘﻮاﻟﻲ 104 103 102 101
ﻳﻤﻜ ﻦ ﺗﺸ ﺒﻴﻪ اﻟﻌﻼﻗ ﺔ ﺑﻴ ﻦ ﻗ ﻴﻤﺔ اﻟﻌﻨﺼﺮ ،وﻋﻨﻮاﻧﻪ ،ﺑﺎﻟﻌﻼﻗﺔ ﺑﻴﻦ ﻋﻼﻣﺔ ﻃﺎﻟﺐ ،ورﻗﻤﻪ
اﻟﺠﺎﻣﻌﻲ ،إذ ﻋﻼﻣﺘﻪ ﻫﻲ ﻗﻴﻤﺔ ﻧﺸﻄﻪ ﻛﻌﻨﺼﺮ ،ﻟﻴﺲ ﻟﻬﺎ ﻋﻼﻗﺔ ﺑﺮﻗﻢ ﻣﻘﻌﺪه اﻟﺠﺎﻣﻌﻲ.
وﺑﺎﻟﻨﺴ ﺒﺔ ﻟﻌﻨﺎوﻳ ﻦ اﻟﻌﻨﺎﺻ ﺮ اﻟﻤﺼ ﻔﻮﻓﺔ ﻣ ﺘﻌﺪدة اﻷﺑﻌ ﺎد ﻓ ﻲ اﻟﺬاﻛ ﺮة ،ﻻ ﻳﺨ ﺘﻠﻒ ﻋﻤ ﺎ
ذﻛ ﺮﻧﺎ ﺑﺎﻟﻨﺴ ﺒﺔ ﻟﻠﻤﺼ ﻔﻮﻓﺎت ذات اﻟ ﺒﻌﺪ اﻟﻮاﺣ ﺪ ،وﻟﺬﻟﻚ ﻟﻮ ﻓﺮﺿﻨﺎ ،ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ أن
اﻟﻌﻨﺼ ﺮ ] x[0,0ﻛ ﺎن ﻋ ﻨﻮاﻧﻪ 100ﻣ ﺜﻼ ﻓ ﺎن ﻋﻨﺎوﻳ ﻦ اﻟﻌﻨﺎﺻ ﺮ اﻟﺘﺎﻟ ﻴﺔ :ﺣﺴﺐ ﺗﺮﺗﻴﺒﻬﺎ
اﻟﻤﺬﻛ ﻮر أﻋ ﻼه ﻫ ﻲ 102-101-100ﻟﻌﻨﺎﺻ ﺮ اﻟﺼ ﻒ اﻷول 105-104-103
ﻟﻌﻨﺎﺻﺮ اﻟﺼﻒ اﻟﺜﺎﻧﻲ.
ﻣﻘﺪﻣﺔ Introduction
ﺗﻌ ﺮف اﻟﺪاﻟ ﺔ ) اﻻﻗ ﺘﺮان ( ﻋﻠ ﻰ أﻧﻬ ﺎ :ﺟﻤﻠ ﺔ أو ﻣﺠﻤﻮﻋ ﺔ ﺟﻤ ﻞ أو ﺗﻌﻠﻴﻤﺎت ،ذات ﻛﻴﺎن
ﺧ ﺎص ،ﺗﻘ ﻮم ﺑﻌﻤﻠ ﻴﺔ أو ﻣﺠﻤﻮﻋ ﺔ ﻋﻤﻠ ﻴﺎت ،ﺳ ﻮاء ﻋﻤﻠ ﻴﺎت إدﺧ ﺎل أو إﺧ ﺮاج أو
ﻋﻤﻠ ﻴﺎت ﺣﺴ ﺎﺑﻴﺔ أو ﻣﻨﻄﻘ ﻴﺔ ،وﺗﺤ ﺘﻞ اﻟﺪاﻟ ﺔ ﻣﻮﻗﻌﺎ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ ،آي أﻧﻬﺎ ﺟﺰء ﻣﻨﻪ ،أو
ﻳﻤﻜﻦ اﻟﻘﻮل أن ﺑﺮﻧﺎﻣﺞ ، c++ﻳﺘﻜﻮن ﻣﻦ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪوال.
ﻣﺜﺎل:١
”#include “ stdafx.h
”#include “ iostream.h
)(max1
{
;”cout<<”hello
}
)(void main
{
;)( max1
;)(max1
;)(max1(); max1
}
واﻟﻨﺎﺗﺞ:
hello hello hello hello
ﻃ ﺒﻌﺎ ﻟﻠﻌﻠ ﻢ أﻋﺰاﺋ ﻲ أﻧ ﻨﺎ ﻓ ﻲ ﻫ ﺬا اﻟﻔﺼﻞ اﻟﺪوال ﻧﻼﺣﻆ أن ﺑﺪاﻳﺔ ﻗﺮاءة اﻟﻤﺘﺮﺟﻢ ﻟﻠﺒﺮﻧﺎﻣﺞ
ﻻ ﺗ ﺒﺪأ ﻣ ﻦ أول اﻟ ﺒﺮﻧﺎﻣﺞ ﻛﺎﻟﻤﻌ ﺘﺎد ﻓﺎﻟﻘ ﺮاءة ﺗ ﺒﺪأ ﻣ ﻦ اﻷﺳ ﻔﻞ آي أﻧﻬﺎ ﺗﺒﺪا ﺑﺎﻟﻤﺎﻳﻦ main
ﺳ ﻮاء ﻛ ﺎن ﻓ ﻲ اﻟﻮﺳ ﻂ أو اﻷﺳ ﻔﻞ ﻓﺄﻧﻬ ﺎ ﺗﻘ ﺮاء أوﻻ اﻟ ـ mainﺛ ﻢ ﺗﺒﺤ ﺚ ﻣ ﺎ داﺧﻠ ﻪ وﺗ ﺒﺪا
ﺑﺎﻟﺒﺤ ﺚ ﻋ ﻦ ﻣﻌ ﻨﻰ اﻟﻜﻠﻤ ﺔ )( max1ﻓ ﻲ اﻟﺪاﻟ ﺔ )( max1ﻓ ﻲ اﻷﻋﻠ ﻰ ﻟ ﺘﺠﺪ أن ﻫ ﻨﺎك
ﺟﻤﻠﺔ ﻃﺒﺎﻋﺔ وﻫﻜﺬا ﺗﺘﻜﺮر ﺣﺘﻰ ﻳﺘﻢ ﺗﻌﺮﻳﻒ ﻣﺎ ﺑﺪاﺧﻞ اﻟـ. main
ﻃﺒﻌﺎ واﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن ﺣﺴﺒﻤﺎ أدﺧﻠﺖ ﻟﻨﺪﺧﻞ ﻣﺜﻼ اﻟﻘﻴﻤﺔ ..9واﻟﻨﺎﺗﺞ ﺳﻴﻜﻮن:
ood
ﻻن اﻟﻘﻴﻤﺔ اﻟﻤﺪﺧﻠﺔ 9ﻋﺪد ﻓﺮدي وﻟﻴﺲ زوﺟﻲ .
ﻻن اﻟﻌﺪد اﻟﺬي أدﺧﻠﻨﺎ 20اﻛﺒﺮ ﻣﻦ اﻟﻌﺪد اﻟﺬي أدﺧﻠﻨﺎ 10ﻓﻘﺎم ﺑﻄﺒﺎﻋﺘﻪ ﺣﺴﺐ اﻟﺸﺮط .
ﻣﻘﺪﻣﺔ Introduction
ﺻ ﻤﻤﺖ ﻫ ﺬه اﻟ ﺪوال ﻟﻠ ﺘﻌﺎﻣﻞ ﻣ ﻊ اﻟﻤﻠﻔ ﺎت اﻻﻧﺘﻘﺎﻟ ﻴﺔ ﻟﻸﻗ ﺮاص Buffered filw
systemﻟﻤﻌﺎﻟﺠ ﺔ اﻟﻨﺼ ﻮص ،ﻛﻤ ﺎ ﻛ ﺎن ﻣ ﺘﻮﻓﺮا ﻓ ﻲ ﻟﻐ ﺔ C++اﻟ ﻨﻈﺎم اﻷﺧ ﺮ ﻏ ﻴﺮ
اﻻﻧﺘﻘﺎﻟ ﻲ unbufferedاﻟﻤﺸ ﺎﺑﻬﺔ ﻟ ﻨﻈﺎم ﻳﻮﻧ ﻴﻜﺲ ﻟﻺدﺧ ﺎل واﻹﺧ ﺮاج UNIX-like
، I/Oوﻛ ﺎن اﻟ ﻨﻈﺎم اﻷﺧ ﻴﺮ ﻳﺴ ﺘﻌﻤﻞ ﻟﻠ ﺘﻌﺎﻣﻞ ﻣ ﻊ اﻟﻤﻌﻄ ﻴﺎت ﺑﻨﺴ ﻖ اﻟ ﻨﻈﺎم اﻟﺜﻨﺎﺋ ﻲ
، binary systemأﻻ أن ﻟﺠ ﻨﺔ Cﻓ ﻲ ﻣﻌﻬ ﺪ اﻟﻤﻘﺎﻳ ﻴﺲ اﻷﻣﺮﻳﻜ ﻲ اﻟﻮﻃﻨ ﻲ ﻟﻠﻐ ﺎت
اﻟ ﺒﺮﻣﺠﺔ ANISI-C Committeeﻗ ﺮرت ﻣﺆﺧ ﺮا اﻻﺳ ﺘﻐﻨﺎء ﻋ ﻦ اﻟ ﻨﻈﺎم ﻏ ﻴﺮ
اﻻﻧﺘﻘﺎﻟ ﻲ ﻣ ﻦ أﻧﻈﻤ ﺔ اﻟ ﺘﻌﺎﻣﻞ ﻣ ﻊ اﻟﻤﻌﻄ ﻴﺎت اﻟﺜﻨﺎﺋ ﻴﺔ ،ﻓ ﺄوﺟﺪت اﻟ ﺒﺪﻳﻞ ،ﺑﺤﻴ ﺚ ﻳﺼ ﺒﺢ
ﺑﻤﻘ ﺪور دوال اﻟ ﻨﻈﺎم اﻻﻧﺘﻘﺎﻟ ﻲ اﻟ ﺘﻌﺎﻣﻞ ﻣ ﻊ ﻛ ﻞ ﻣ ﻦ اﻟﻨﺼ ﻮص textواﻟﻤﻌﻄ ﻴﺎت اﻟﺜﻨﺎﺋﻴﺔ
binary systemﻓ ﻲ وﻗ ﺖ واﺣ ﺪ .أي أن آﺧ ﺮ ﺻ ﻮرة ) (versionﻣ ﻦ ، Cﻳ ﺘﻌﺎﻣﻞ
ﺑﻨﻈﺎم واﺣﺪ ﻓﻘﻂ ﻫﻮ ﻧﻈﺎم اﻟﻤﻠﻔﺎت اﻻﻧﺘﻘﺎﻟﻴﺔ .
وﻧﺤ ﺘﺎج ﻋ ﻨﺪ اﻟ ﺘﻌﺎﻣﻞ ﻣ ﻊ دوال ﻫ ﺬا اﻟ ﻨﻈﺎم ،أن ﻧﺴﺘﻌﻤﻞ ﻣﻠﻒ اﻟﺪﻟﻴﻞ ﻟﻺدﺧﺎل واﻹﺧﺮاج
stdio.hوﻳﻠﺨﺺ ﻟﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ اﺷﻬﺮ ﻫﺬه اﻟﺪوال:
ﻫﺬا ﻫﻮ اﻟﻤﻠﻒ
اﻟﺠﺪﻳﺪ
ﻧﻼﺣﻆ أن ﻫﺬا اﻟﺠﺪول ﻳﻤﻜﻦ اﺳﺘﻌﻤﺎﻟﻪ ﻟﻜﻞ ﻣﻦ ﻣﻠﻔﺎت اﻟﻨﺺ واﻟﻤﻠﻔﺎت اﻟﺜﻨﺎﺋﻴﺔ.
ﻻﺣ ﻆ ﻋﺰﻳ ﺰي اﻟﻘ ﺎرئ أﻧ ﻨﺎ ﻗﻤ ﻨﺎ ﺑﻮﺿ ﻊ اﻟﺪاﻟ ﺔ ) (fprintfوﻫ ﻲ اﻟﺪاﻟ ﺔ اﻟﺨﺎﺻ ﺔ ﺑﺎﻟﻜ ﺘﺎﺑﺔ
داﺧ ﻞ اﻟﻤﻠﻔ ﺎت ﺑﺈﻣﻜ ﺎﻧﻚ اﻟ ﺮﺟﻮع ﻟﻠﺠ ﺪول ٥-١اﻵن ﻧﻔ ﺬ اﻟ ﺒﺮﻧﺎﻣﺞ وﺑﻌ ﺪ ﺗﻨﻔ ﻴﺬ ارﺟ ﻊ
ﻟﻠﻤﻠﻒ ﻓﻲ اﻟﻘﺮص cواﻓﺘﺤﻪ ﻟﺘﺸﺎﻫﺪ اﻟﻌﺒﺎرة welcome to c++ﻗﺪ ﻛﺘﺒﺔ ﺑﺪاﺧﻠﻪ.
ﻣﺜﺎل:٣
”#include “stdio.h
)(main
{
;FILE *f
;)”f=fopen(“C:\\matrix.txt”,”w
;)”fprintf (f,”welcome to c++
)fclose (f
ﻣﺜﺎل:٤
اﻟﺪاﻟﺔ اﻟﺘﺎﻟﻴﺔ ﺗﻘﻮم ﺑﻜﺘﺎﺑﺔ ) ﻃﺒﺎﻋﺔ( اﻟﻌﺪد اﻟﺼﺤﻴﺢ 1000ﻓﻲ ﻣﻠﻒ اﻟﻘﺮص اﻟﻤﺸﺎر إﻟﻴﻪ
ﺑﻤﺆﺷﺮ اﻟﻤﻠﻒ : f
;)Putw (1000,f
ﻣﺜﺎل:٥
اﻟﺪاﻟ ﺔ اﻟﺘﺎﻟ ﻴﺔ ﺗﻘ ﻮم ﺑﻜ ﺘﺎﺑﺔ ﻗ ﻴﻤﺔ اﻟﻤﺘﻐ ﻴﺮ اﻟﺼ ﺤﻴﺢ xﻓﻲ ﻣﻠﻒ اﻟﻘﺮص اﻟﻤﺸﺎر إﻟﻴﻪ ﺑﻤﺆﺷﺮ
اﻟﻤﻠﻒ : f
;)Putw (x,f
ﻧﺒﺪا ان ﺷﺎء اﷲ ﺗﻌﺎﻟﻰ ﺳﻠﺴﻠﻪ دروس ﻟﻐﺔ ﻣﻦ اهﻢ وأروع ﻟﻐﺎت اﻟﺒﺮﻣﺠﻪ اﻻ وهﻲ ﻟﻐﺔ , C++ﻓﻲ هﺬﻩ اﻟﺪورة ان
ﺷﺎء اﷲ ﺳﻨﺒﺪأ ﻓﻲ ﺷﺮح هﺬﻩ اﻟﺪورﻩ ﻣﻦ اﻟﺼﻔﺮ ﺣﺘﻰ ﻳﺘﺴﻨﻰ ﻟﻠﺠﻤﻴﻊ ان ﺷﺎء اﷲ ﻓﻬﻢ هﺬﻩ اﻟﻠﻐﻪ ﺑﻴﺴﺮ وﺳﻬﻮﻟﻪ
وﺳﻨﺮآﺰ ﻓﻲ ﺷﺮﺣﻨﺎ ﻋﻠﻰ اﻟﻸﻣﺜﻠﻪ اﻟﻌﻤﻠﻴﻪ ﻷن ﺧﻴﺮ ﻃﺮﻳﻘﺔ ﻟﺘﻌﻠﻢ هﺬﻩ اﻟﻠﻐﻪ ﻓﻲ وﺟﻬﺔ هﻮ ﺗﻌﻠﻤﻬﺎ ﻣﻦ ﺧﻼل اﻷﻣﺜﻠﺔ
اﻟﻌﻤﻠﻴﻪ وﻣﺤﺎوﻟﺔ ﺗﻄﺒﻴﻘﻬﺎ ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ وﺗﺠﺮﻳﺒﻬﺎ.وﺗﺴﺘﻄﻴﻊ اﺳﺘﺨﺪام ﺑﺮﻧﺎﻣﺞ Borland C++أو ﺑﺮﻧﺎﻣﺞ Visual
, C++ 6.0وﺳﻨﺘﻄﺮف ﺑﺄذن اﷲ اﻟﻰ ﺷﺮح آﻴﻔﻴﺔ اﺳﺘﺨﺪام هﺬﻳﻦ اﻟﺒﺮﻧﺎﻣﺠﻴﻦ ﻟﻴﺘﺴﻨﻰ ﻟﻚ اﻟﻌﻤﻞ ﻋﻠﻴﻬﻢ وﺳﻨﺘﻮﺳﻊ
ﻓﻲ ﺷﺮح ﺑﺮﻧﺎﻣﺞ Visual C++ 6.0ﺑﻤﺎ اﻧﻪ اﻷﻓﻀﻞ واﻷآﺜﺮ أﻧﺘﺸﺎرا.
واﻟﺬي ﻳﺠﻴﺪ ﻟﻐﺔ ال Cاو ﻟﺪﻳﻪ ﺧﻠﻔﻴﻪ ﻋﻨﻬﺎ ﺳﻴﺴﻬﻞ ﻋﻠﻴﻪ ﺟﺪا ﺗﻌﻠﻢ ﻟﻐﺔ C++ﻓﻬﻤﺎ ﻣﺘﺸﺎﺑﻬﺘﺎن ﺗﻘﺮﻳﺒﺎ .وﻓﻲ اﻟﺤﻘﻴﻘﺔ
هﻤﺎ ﻣﻦ اهﻢ اﻟﻠﻐﺎت وﺑﺎﻟﻨﺴﺒﺔ ﻟﻲ أﻋﺘﺒﺮهﻤﺎ اﻟﻤﺪﺧﻞ ﻟﺘﻌﻠﻢ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﻓﻌﻨﺪﻣﺎ ﺗﺘﻘﻦ ﺗﻌﻠﻢ هﺎﺗﻴﻦ اﻟﻠﻐﺘﻴﻦ او واﺣﺪﻩ
ﻣﻨﻬﻤﺎ ﺗﻜﻮن ﻗﺪ اآﺘﺴﺒﺖ أﺳﺎﺳﺎ ﻗﻮﻳﺎ ﻓﻲ اﻟﺒﺮﻣﺠﺔ وﻳﺴﻬﻞ ﻋﻠﻴﻚ اﻷﻧﻄﻼق ﺑﻌﺪهﺎ ﻓﻲ ﻋﺎﻟﻢ اﻟﺒﺮﻣﺠﻪ .وهﻤﺎ اول ﻟﻐﺘﻴﻦ
ﺗﻌﻠﻤﺘﻬﻤﺎ ﻣﻦ ﻟﻐﺎت اﻟﺒﺮﻣﺠﻪ,وﺳﻬﻞ ﻋﻠﻲ ﺑﻔﻀﻞ اﷲ ﺗﻌﻠﻢ ﻟﻐﺎت ﺑﺮﻣﺠﺔ اﺧﺮى.
اﻟﺪرس اﻷول:
ﺑﺴﻢ اﷲ ﻧﺒﺪا أول دروﺳﻨﺎ ﻋﻠﻰ ﺑﺮآﺔ اﷲ وآﻤﺎ اﺗﻔﻘﻨﺎ ﺳﻨﺮآﺰ ﻋﻠﻰ ﻓﻬﻢ هﺬﻩ اﻟﻠﻐﻪ ﻋﻦ ﻃﺮﻳﻖ اﻷﻣﺜﻠﺔ اﻟﻌﻤﻠﻴﻪ...
وﺳﻨﺒﺪا ﺑﺄول ﺑﺮﻧﺎﻣﺞ ﺗﺮاﻩ ﻓﻲ ﻋﺎﻟﻢ ال Cوال . C++
{ 3.
4. ;"std::cout << "Welcome to C++!\n
6. }
ﺷﺮح اﻟﺒﺮﻧﺎﻣﺞ:
اﻟﺴﻄﺮ اﻷول:
وهﺬا اﻟﺴﻄﺮ اﺳﺎﺳﻲ ﺟﺪا ﻓﻲ أﻏﻠﺐ اﻟﺒﺮاﻣﺞ وﻳﺠﺐ أن ﺗﻌﻮد ﻧﻔﺴﻚ ﻋﻠﻰ آﺘﺎﺑﺘﻪ ﻋﻨﺪ اﻟﺒﺪء ﻓﻲ آﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ ,وﻳﻌﻨﻲ
ان ﺑﺮﻧﺎﻣﺠﻚ ﻳﺴﺘﺨﺪم ﻣﻜﺘﺒﺔ .iostreamوﻓﻲ ﻟﻐﺔ C++اﻟﻌﺪﻳﺪ ﻣﻦ اﻟﻤﻜﺘﺒﺎت اﻟﻤﺴﺘﺨﺪﻣﻪ ﺳﻨﺘﻄﺮق اﻟﻴﻬﺎ ﻓﻲ
ﻣﺮﺣﻠﺔ ﻣﺘﻘﺪﻣﻪ ان ﺷﺎء اﷲ ﻧﺴﺘﺨﺪم آﻞ ﻣﻜﺘﺒﺔ ﻋﻠﻰ ﺣﺴﺐ اﺣﺘﻴﺎﺟﻨﺎ ﻟﻬﺎ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ وﻣﻜﺘﺒﺔ ال iostreamﻣﺴﺆﻟﺔ
ﻋﻦ ﻋﻤﻠﻴﺘﺎن اﻷدﺧﺎل واﻷﺧﺮاج ﻓﻲ ال . C++وهﻲ اﺧﺘﺼﺎر لinput output stream
وﻳﺘﻤﺜﻼن هﺘﻴﻦ اﻟﻌﻤﻠﻴﺘﻴﻦ ﻓﻲ cinﻟﻸدﺧﺎل)أي أدﺧﺎل اﻟﻤﻌﻠﻮﻣﻪ او ﺗﺨﺰﻳﻦ اﻟﻘﻴﻤﻪ ﻓﻲ ﻣﺘﻐﻴﺮ ﺑﺄﺳﻢ وﻧﻮع ﺗﻘﻮم
ﺑﺘﺤﺪﻳﺪﻩ ﻟﻠﺒﺮﻧﺎﻣﺞ( ,وال coutﻟﻸﺧﺮاج )أي اﺧﺮاج اﻟﻤﻌﻠﻮﻣﺔ أو ﻣﺎ ﻧﺮﻳﺪ آﺘﺎﺑﺘﻪ ﻋﻠﻰ اﻟﺸﺎﺷﻪ(.
ﺧﻼﺻﺔ هﺬا اﻟﺴﻄﺮ اﻧﻪ ﻳﻘﻮم ﺑﺘﻮﺟﻴﻪ اﻟﻤﺘﺮﺟﻢ ﻟﻴﻘﻮم ﺑﺠﻌﻞ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺗﻘﻮم ﺑﻜﺘﺎﺑﺘﻪ ﻳﺤﺘﻮي ﻋﻠﻰ ﻣﻜﺘﺒﺔ
.iostream
اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ:
ﻣﻼﺣﻈﻪ ﻣﻬﻤﻪ :ﺳﺘﻼﺣﻆ أﺣﺘﻮاء اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ ﻋﻠﻰ // function main begins program execution
هﺬﻩ اﻟﻌﺒﺎرﻩ ﻟﻴﺲ ﻟﻬﺎ ﻋﻼﻗﺔ ﺑﺎﻟﺒﺮﻧﺎﻣﺞ ,ﺗﺴﺘﺨﺪم آﻬﺎﻣﺶ ﻟﻠﺘﻨﻮﻳﻪ اي ان اي ﺷﻲء ﺑﻌﺪ //ﻳﺴﺘﺨﺪم آﺘﻮﺿﻴﺢ ﻳﻜﺘﺒﻪ
اﻟﻤﺒﺮﻣﺞ ﻓﻲ ﺑﺮﻧﺎﻣﺠﻪ وﻻ ﻳﻨﻈﺮ ﻟﻪ اﻟﻤﺘﺮﺟﻢ ﻋﻨﺪ ﺗﻨﻔﻴﺬ أواﻣﺮ اﻟﺒﺮﻧﺎﻣﺞ او ﻋﻨﺪ ﺗﻨﻔﻴﺬ أﺳﻄﺮ اﻟﺒﺮﻧﺎﻣﺞ ﻓﺠﻤﻴﻊ اﻟﻸﺳﻄﺮ
او اﻟﻌﺒﺎرات ﺑﻌﺪ //وﻗﺪ ﻟﻮﻧﺘﻬﺎ ﺑﺎﻟﻠﻮن اﻟﺤﻤﺮ ﻟﻴﺴﻬﻞ ﻋﻠﻴﻚ ﺗﻤﻴﺰهﺎ ﻻ ﻳﻀﻊ ﻟﻬﺎ اﻟﻤﺒﺮﻣﺞ اﻋﺘﺒﺎر وﻻ ﻳﺮاهﺎ أﺻﻼ ﻋﻨﺪ
ﺗﻨﻔﻴﺬ اﺳﻄﺮ اﻟﺒﺮﻧﺎﻣﺞ,هﻲ ﻓﻘﻂ ﻳﻜﺘﺒﻬﺎ اﻟﻤﺒﺮﻣﺞ ﻟﺘﻮﺿﻴﺢ ﻣﻌﻨﻲ اﻟﺴﻄﺮ او آﺘﺎﺑﺔ ﻣﻼﺣﻈﻪ ﺗﺬآﻴﺮﻳﻪ ﻟﻪ وﻟﻴﺲ
ﺑﺎﻟﻀﺮورة آﺘﺎﺑﺔ هﺬﻩ اﻟﻤﻼﺣﻈﺎت ﻓﻴﻤﻜﻨﻚ اﻷﺳﺘﻐﻨﺎء ﻋﻦ اﻟﻌﺒﺎرات اﻟﻲ ﺑﺎﻟﻠﻮن اﻟﺤﻤﺮ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﻲ ﺗﺄﺗﻲ ﺑﻌﺪ . //
ﻓﻤﺜﻼ ﻓﻲ اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ ﻣﺎ ﺑﻌﺪ ال //وهﻮ ﻋﺒﺎرة function main begins program executionﻣﺠﺮد
ﻣﻼﺣﻈﺔ ﻟﺘﻌﻄﻲ ﻗﺎريء اﻟﺒﺮﻧﺎﻣﺞ ﺗﻨﻮﻳﻪ ﻋﻦ وﻇﻴﻔﺔ )(. int main
هﺬا اﻟﺴﻄﺮ ﻳﻤﺜﻞ اﻟﺪاﻟﺔ اﻟﺮﺋﻴﺴﻴﻪ ﻟﻠﺒﺮﻧﺎﻣﺞ وﺟﻤﻴﻊ اﻟﺒﺮاﻣﺞ ﺗﺤﺘﻮي ﻋﻠﻰ داﻟﺔ ال, mainﻓﺠﻤﻴﻊ اﻟﻌﻤﻠﻴﺎت اﻟﺘﻲ ﺳﻴﻘﻮم
ﺑﻬﺎ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺳﺘﻘﻮم ﺑﻜﺘﺎﺑﺘﻪ ﻳﺠﺐ ان ﻳﻜﻮن داﺧﻞ هﺬﻩ اﻟﺪاﻟﺔ اﻟﺘﻲ ﻳﺠﺐ ان ﺗﺒﺪﺋﻬﺎ ﺑﻘﻮس } آﻤﺎ ﻓﻲ اﻟﺴﻄﺮ
اﻟﺜﺎﻟﺚ وﺗﻨﻬﻴﻬﺎ ﺑﻘﻮس { آﻤﺎ ﻓﻲ اﻟﺴﻄﺮ اﻟﺴﺎدس وﻣﺤﺘﻮى ﺑﺮﻧﺎﻣﺠﻚ ﻳﻜﻮن ﺑﻴﻦ هﺬﻳﻦ اﻟﻘﻮﺳﻴﻦ.
اﻟﺴﻄﺮ اﻟﺮاﺑﻊ:
ﻓﻲ هﺬا اﻟﺴﻄﺮ ﺳﺘﺮى ان هﺬا اﻟﺴﻄﺮ ﻳﺤﺘﻮي ﻓﻲ ﺑﺪاﻳﺘﻪ ﻋﻠﻰ std::ﻃﺒﻌﺎ هﺬﻩ اﻟﺠﻤﻠﻪ ﻧﻘﻮم ﺑﻜﺘﺎﺑﺘﻬﺎ ﻗﺒﻞ ال cin
وال coutوﺗﺴﺘﻄﻴﻊ ﺗﻌﺮﻳﻔﻬﻤﺎ ﻗﺒﻞ ال mainوهﺬا اﻷﻓﻀﻞ ﻟﻚ ﻻ ﺗﺤﺘﺎج ﻟﺘﻌﺮﻳﻔﻬﻤﺎ ﻋﻨﺪ آﻞ اﺳﺘﺨﺪام ﻟﻞ cin
وال coutوﺳﻴﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ هﻜﺬا.
{ 4.
5. ;"cout << "Welcome to C++!\n
وﻟﻚ ان ﺗﻼﺣﻆ اﻷﺧﺘﻼف ﺑﻴﻦ اﻟﺒﺮﻧﺎﻣﺠﻴﻦ وأﻧﺼﺤﻚ ﺑﺄﺳﺘﺨﺪام اﻷﺳﻠﻮب اﻟﺜﺎﻧﻲ اﻷآﺜﺮ اﺧﺘﺼﺎرا.
ﻧﻌﻮد ﻷﺳﺘﻜﻤﺎل ﺷﺮﺣﻨﺎ وﻻﺣﻆ اﻧﻨﺎ ﻧﺸﺮح اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﺘﺮﺗﻴﺐ اﻷول اي اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي آﺘﺒﻨﺎﻩ ﻓﻲ ﺑﺪاﻳﺔ ﺷﺮﺣﻨﺎ.
ﻓﻲ اﻟﺴﻄﺮ اﻟﺮاﺑﻊ ﻗﻤﻨﺎ ﺑﺄﺳﺘﺨﺪام ال << coutوﻧﺴﺘﺨﺪم هﺬا اﻟﺨﺪﻣﺔ اﺗﻲ ﺗﻮﻓﺮهﺎ ﻣﻜﺘﺒﺔ ال iostreamآﻤﺎ اﺳﻠﻔﻨﺎ ﻋﻨﺪ
ﻃﺒﺎﻋﺔ ﻣﻌﻠﻮﻣﺎت او ﻗﻴﻢ ﻋﻠﻰ اﻟﺸﺎﺷﺔ وﺗﻤﻜﻨﻨﺎ هﺬﻩ اﻟﻌﻤﻠﻴﻪ ﻣﻦ اﺧﺮاج اﻟﻤﻌﻠﻮﻣﺎت ﻋﻠﻰ اﻟﺸﺎﺷﻪ وﺗﻜﻮن ﺟﻤﻠﺔ cout
ﻣﺘﺒﻮﻋﻪ ﺑﻤﻌﺎﻣﻠﻴﻦ<< وﺑﻌﺪهﻤﺎ ﻳﺠﺐ وﺿﻊ اﻟﻤﻌﻠﻮﻣﺎت اﻟﻤﺮاد أﺧﺮاﺟﻬﺎ ﻋﻠﻰ اﻟﺸﺎﺷﺔ ﺑﻴﻦ "" أﻣﺎ اذا آﻨﺎ ﻧﺮﻳﺪ ان
ﻧﻈﻬﺮ ﻗﻴﻤﺔ ﻣﺘﻐﻴﺮ ﻧﻜﺘﺐ أﺳﻢ اﻟﻤﺘﻐﻴﺮ ﺑﺪون "" ﻷﻧﻪ ﻋﻨﺪ وﺿﻊ اي ﺷﻲء ﺑﻴﻦ ال "" ﻳﺘﻢ ﻃﺒﺎﻋﺘﻪ آﻤﺎ هﻮ ﻓﻤﺜﻼ ﻋﻨﺪ
آﺘﺎﺑﺔ اﻟﺴﻄﺮ ;" cout<<"salam 3alekomﻳﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﺄﻇﻬﺎر ﻋﻠﻰ اﻟﺸﺎﺷﻪ , salam 3alekomوﻣﻌﻨﻰ
\nﻳﻌﻨﻲ ﻳﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﻨﺰول اﻟﻰ ﺳﻄﺮ ﺟﺪﻳﺪ ﺑﻌﺪ آﺘﺎﺑﺔ ! Welcome to C++ﻋﻠﻰ اﻟﺸﺎﺷﺔ وﻧﻼﺣﻆ ان
ﺑﺮﻧﺎﻣﺠﻨﺎ ﺳﻴﻘﻮم ﺑﻜﺘﺎﺑﺔ ! Welcome to C++وهﺬﻩ هﻲ اﻟﻌﻤﻠﻴﺔ اﻟﺘﻲ آﺘﺐ ﻣﻦ اﺟﻠﻬﺎ هﺬا اﻟﺒﺮﻧﺎﻣﺞ اﻟﺒﺴﻴﻂ
.وأﺧﻴﺮا ﻧﻨﻬﻲ اﻟﺴﻄﺮ ﺑﻌﻼﻣﺔ اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﻪ; وﻳﺠﺐ اﻧﻬﺎء آﻞ ﺳﻄﺮ ﺑﻌﻼﻣﺔ اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﻪ ﻓﻬﻲ ﺗﻌﻄﻲ
اﻟﻤﺘﺮﺟﻢ ﻣﻌﻨﻰ ﺑﺄن اﻟﺴﻄﺮ ﻗﺪ اﻧﺘﻬﻰ واﻧﺘﻬﺖ اﻷواﻣﺮ ﻟﻬﺬا اﻟﺴﻄﺮ ﻓﻌﻠﻴﻪ اﻟﺬهﺎب ﻟﻠﺴﻄﺮ اﻟﺜﺎﻧﻲ وﺗﻨﻔﻴﺬ اﻷواﻣﺮ ﻓﻴﻪ .
اﻟﺴﻄﺮ اﻟﺨﺎﻣﺲ:
هﺬا اﻟﺴﻄﺮ ﻳﺤﺘﻮي ﻋﻠﻰ ; return 0وهﺬا اﻟﺴﻄﺮ ﻳﺠﺐ آﺘﺎﺑﺘﻪ ﻋﻨﺪ ﻧﻬﺎﻳﺔ داﻟﺔ ال mainﻓﻬﻮ ﻳﺨﺒﺮﻧﺎ ﺑﺎن اﻟﺒﺮﻧﺎﻣﺞ
ﻧﻔﺬ ﺑﻨﺠﺎح وﺗﺴﺘﻄﻴﻊ اﺳﺘﺒﺪاﻟﻪ ﺑﻜﺘﺎﺑﺔ )( void mainﺑﺪل )( int mainﻓﻌﻨﺪ آﺘﺎﺑﺔ void mainﻟﺴﺖ ﺑﺤﺎﺟﺔ
ﻟﻜﺘﺎﺑﺔ ; return 0ﻗﺒﻞ ﻏﻠﻖ داﻟﺔ ال mainﺑــ}.
ﻣﻼﺣﻈﺔ :ﻻﺣﻆ ان ; return 0ﺗﺤﺘﻮي ﻋﻠﻰ ﺻﻔﺮ وﻟﻴﺲ ﺣﺮف ال, oﻓﻤﻦ أآﺜﺮ اﻷﺧﻄﺎء ﺷﻴﻮﻋﺎ آﺘﺎﺑﺔ ﺣﺮف ال o
ﺑﺪل اﻟﺼﻔﺮ.
وﺻﻠﻨﺎ اﺧﻮﺗﻲ وأﺧﻮاﺗﻲ ﻓﻲ اﷲ اﻟﻰ ﻧﻬﺎﻳﺔ اﻟﺪرس اﻷول اﻟﺬي أﺳﺎل اﷲ ان ﻳﻜﻮن واﺿﺤﺎ وﺑﻔﺘﺮض ان ﺗﻜﻮن ﻗﺪ
ﻓﻬﻤﺖ ﻣﻦ ﺧﻼل هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﺑﻌﺾ اﻷﺳﺎﺳﻴﺎت ﻓﻲ ال C++وﺳﻨﻮاﺻﻞ ﻓﻲ ﺑﻘﻴﺔ اﻟﺪروس ﺷﺮح ﺑﺮاﻣﺞ اآﺜﺮ
ﺗﻄﻮرا وﺷﺮح ﻣﻔﺎهﻴﻢ واﺳﺎﺳﻴﺎت اﻋﻤﻖ ﻓﻬﺬا اﻟﺪرس ﻋﺒﺎرﻩ ﻋﻦ ﻣﻘﺪﻣﺔ ﺗﺪﺧﻠﻚ اﻟﻰ ﻋﺎﻟﻢ . C++
وﻓﻲ ﻧﻬﺎﻳﺔ اﻟﺪرس ﻧﻘﻮل هﺬا اﺟﺘﻬﺎدﻧﺎ ﻓﺄن اﺧﻄﺎﻧﺎ ﻓﻤﻦ اﻧﻔﺴﻨﺎ وان اﺻﺒﻨﺎ ﻓﻤﻦ اﷲ ﺳﺒﺤﺎﻧﻪ وﺗﻌﺎﻟﻰ.....
§*)§®¤*~ˆ°ﺳﺒﺤﺎﻧﻚ اﻟﻠﻬﻢ وﺑﺤﻤﺪك أﺷﻬﺪ ان ﻻ اﻟﻪ اﻻاﻧﺖ اﺳﺘﻐﻔﺮك وأﺗﻮب أﻟﻴﻚ §*(§®°ˆ~*¤
ﻧﻮاﺻﻞ ﻓﻲ هﺬا اﻟﻤﻮﺿﻮع اﻟﺪرس اﻟﺜﺎﻧﻲ ﻓﻲ دورة ﻟﻐﺔ ال C++وﺑﻌﺪ ان اﺧﺬﻧﺎ ﻓﻜﺮة ارﺟﻮ ان ﺗﻜﻮن آﻤﻘﺪﻣﺔ ﺟﻴﺪة
وواﻓﻴﻪ ﻟﻠﺪﺧﻮل ﻓﻲ ﺗﻔﺎﺻﻴﻞ هﺬﻩ اﻟﻠﻐﺔ.
ﻓﻲ هﺬا اﻟﺪرس ﺳﻮف ﻧﻘﻮم ﺑﺎﻟﺘﻌﺮف ﻋﻠﻰ اﻟﻤﺘﻐﻴﺮات ), (Variablesﺗﺴﻤﻴﺔ اﻟﻤﺘﻐﻴﺮات ,اﻧﻤﺎط اﻟﻤﺘﻐﻴﺮات واﻧﻮاﻋﻬﺎ
,اﻟﺜﻮاﺑﺖ,اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﻪ),(Arithmetic Operationﻋﻤﻠﻴﺎت اﻟﻤﻘﺎرﻧﻪ).(relation operator
-١اﻟﻤﺘﻐﻴﺮات ) (Variablesوﺗﺴﻤﻴﺘﻬﺎ.
ﺗﺘﻜﻮن ذاآﺮة اﻟﺤﺎﺳﻮب ﻣﻦ ﺧﺎﻧﺎت اﻣﺎ ان ﻳﻜﻮن ﻓﻲ اﻟﺨﺎﻧﻪ ﺻﻔﺮ او واﺣﺪ ,ﻳﺘﺮﺟﻢ آﻞ ﺷﻲء اﻟﻰ ﻟﻐﺔ
اﻟﺒﺎﻳﻨﺮى)(binaryوهﺬﻩ اﻟﻠﻐﻪ ﻋﺒﺎرﻩ ﻋﻦ ﺻﻔﺮ ا واﺣﺪ ٠١٠١٠١٠١واﻟﺬاآﺮﻩ ﺗﻨﻘﺴﻢ اﻟﻰ bytesوآﻞ
bytes=8bitوال . bit =one or zeroﻓﻌﻨﺪﻣﺎ ﺗﺮﻳﺪ ان ﺗﺪﺧﻞ ﻗﻴﻤﺔ ﺑﺎﻟﺬاآﺮﻩ وﺗﺤﻔﻈﻬﺎ ﻳﺠﺐ ﻋﻠﻴﻚ ان
ﺗﺤﺠﺰ ﻟﻬﺎ ﻣﺴﺎﺣﺔ ﻓﻲ اﻟﺬاآﺮﻩ وﺗﺴﻤﻴﻬﺎ وﺗﻌﺮف ﻧﻮﻋﻬﺎ وﻣﺴﺎﺣﺘﻬﺎ,وهﺬا ﻣﺎ ﻳﺠﺐ اﻟﻘﻴﺎم ﺑﻪ ﻓﻲ ﻋﻤﻠﻴﺔ
اﻷدﺧﺎل اﻟﺘﻲ ﺷﺮﺣﻨﺎهﺎ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ.
ﻣﺜﺎلint box;:
;Cin >>box
ﻻ ﺣﻆ هﻨﺎ اﻟﺒﺮﻧﺎﻣﺞ ﻟﻴﺲ آﺎﻣﻼ ﻓﻘﻂ ﻗﻤﺖ ﺑﺄﻗﺘﻄﺎع ﻣﺎ ﻧﺤﺘﺎﺟﻪ ﻟﻔﻬﻢ ﺟﺰﻳﺌﺔ اﻟﻤﺘﻐﻴﺮات وﺗﺴﻤﻴﺘﻬﺎ,ﻧﻼﺣﻆ ﻓﻲ
اﻟﺒﺪاﻳﺔ ﻗﻤﻨﺎ ﺑﺘﻌﺮﻳﻒ ﻧﻮع اﻟﻤﺘﻐﻴﺮ اﻟﺬي اﺳﻤﻴﻨﺎﻩ boxوﻧﻮﻧﻌﻪ intﻳﻌﻨﻲ ﻳﺤﺘﻮي ﻋﻠﻰ ارﻗﺎم ﺻﺤﻴﺤﻪ
وﺳﻨﺪرج آﻞ اﻻﻧﻮاع وﺷﺮح ﻟﻬﺎ وهﻨﺎ ﻟﻢ ﻧﺤﺪد ﻗﻴﻤﺘﺔ ﻟﻨﻨﺎ ﺳﻨﺪﺧﻠﻬﺎ ﻋﻦ ﻃﺮﻳﻖ ال cinوﻟﻮ اﻧﻨﺎ ﺣﺪدﻧﺎ
ﻗﻴﻤﺘﻬﺎ ﻟﻌﻤﻠﻨﺎ int box =5ﻓﺒﻬﺬﻩ اﻟﻄﺮﻳﻘﻪ ﻗﻤﻨﺎ ﺑﺤﺠﺰ ﻣﺴﺎﺣﻪ اﺳﻤﻬﺎ boxوﻧﻮﻋﻬﺎ intﻳﻌﻨﻲ ﺗﺤﻮي
ارﻗﺎم ﺻﺤﻴﺤﻪ وﻗﻴﻤﺘﻬﺎ ﺧﻤﺴﻪ هﻨﺎ ﺛﺒﺘﻨﺎ اﻟﻘﻴﻤﻪ ﻋﻠﻰ ﺧﻤﺴﻪ ﻟﻜﻦ ﻓﻲ اﻷﻋﻠﻰ ﻧﺤﻦ ﻟﻢ ﻧﺤﺪد اﻟﻘﻴﻤﻪ وﻗﻤﻨﺎ
ﺑﺄدﺧﺎل اﻟﻘﻴﻤﻪ ﻓﺎﻟﻘﻴﻤﻪ اﻟﺘﻲ ﺳﻴﺪﺧﻠﻬﺎ اﻟﻤﺴﺘﺨﺪم ﺳﺘﻮﺿﻊ ﻓﻲ اﻟﻤﺴﺎﺣﻪ اﻟﻤﺤﺠﻮزة ﺑﺄﺳﻢ .box
ﻣﻼﺣﻈﻪ :ﻋﻨﺪ ﺗﺴﻤﻴﺔ اﻟﻤﺘﻐﻴﺮ ﻻﺑﺄس ﺑﺄﺳﺘﺨﺪام اﻟﺤﺮوف واﻷرﻗﺎم وﻋﻼﻣﺔ _ وﻳﻤﻨﻊ اﺳﺘﺨﺪام @ $,
واﻟﺮﻣﻮز اﻟﺘﻲ ﻋﻠﻰ هﺬﻩ اﻟﺸﺎآﻠﺔ.
ﻣﻼﺣﻈﺎت اﻟﻨﻮع
ﻳﻌﻨﻲ اﻟﻤﺴﺎﺣﻪ اﻟﻤﺤﺠﻮزة ﺗﺤﻮي ارﻗﺎم ﺻﺤﻴﺤﻪ. int
وﻳﻤﻜﻨﻚ هﻨﺎ اﺳﺘﺨﺪام ;long int box
;short int box أو
long box أو
أو ; short box
ﻳﻌﻨﻲ اﻟﻤﺴﺎﺣﻪ اﻟﻤﺤﺠﻮزة ﺗﺤﻮي أرﻗﺎم ﻋﺸﺮﻳﺔ ﻣﺜﺎل float
٣٫٥, ١٫٢
ﻳﺤﻮي أﻋﺪاد آﺒﻴﺮﻩ. double
ﻳﺤﺘ ﻮي ﻋﻠ ﻰ ﺣ ﺮوف ورﻣ ﻮز وﻻ ﺑ ﺄس ان ﻳﺤ ﻮي char
أرﻗﺎم.
ﺗﺤﻮي trueاو false bool
-٢اﻟﺜﻮاﺑﺖ):(constants
ﻋﻨ ﺪﻣﺎ ﺗﺮﻳ ﺪ ﺣﺠ ﺰ ﻣ ﺴﺎﺣﻪ ﻟﻤﺘﻐﻴ ﺮ ﺑﻨ ﻮع ﻣﺤ ﺪد وأﺳ ﻢ ﺗﺨﺘ ﺎرﻩ اﻧ ﺖ وﺗﺮﻳ ﺪ ان ﺗﺠﻌ ﻞ ه ﺬﻩ اﻟﻘﻴﻤ ﻪ ﺛﺎﺑﺘ ﻪ ,ﻓﻌﻠﻴ ﻚ
ﺑﺄﺿﺎﻓﺔ constﻗﺒﻞ ﺗﻌﺮﻳﻒ اﻟﻤﺘﻐﻴﺮ ﻓﻴﺼﺒﺢ ; const int box =5ﻓﻬﻨﺎ ﺗﻜ ﻮن ﻗﻴﻤ ﺔ اﻟﻤﺘﻐﻴ ﺮ boxﺗ ﺴﺎوي
ﺧﻤﺴﺔ داﺋﻤﺎ.
-٣ﻋﻜﻠﻴﺔ اﻟﻀﺮب)*(.
ﻣﺜﺎل sum=num1* num2; :
(>) – ٣
ﻣﺜﺎل num1>num2 :ﻳﻌﻨﻲ num1أآﺒﺮ ﻣﻦ . num2
(<) – ٤
ﻣﺜﺎل num1<num2 :ﻳﻌﻨﻲ num1أﺻﻐﺮ ﻣﻦ . num2
(>=) - ٥
. num2 ﻣﺜﺎل num1 >= num2 :ﻳﻌﻨﻲ num1أآﺒﺮ ﻣﻦ أو ﻳﺴﺎوي
(<=) - ٦
ﻣﺜﺎل num1<=num2 :ﻳﻌﻨﻲ num1أﺻﻐﺮ ﻣﻦ أو ﻳﺴﺎوي . num2
وهﻨﺎ ﻧﺼﻞ اﻟﻰ ﻧﻬﺎﻳﺔ درﺳﻨﺎ اﻟﻴﻮم وﻟﻜﻦ ﻗﺒﻞ ان ﻧﻨﺘﻬﻲ اﻟﻴﻜﻢ هﺬا اﻟﺴﺆال ﻟﺘﺨﺘﺒﺮوا ﻣﺪى ﻓﻬﻤﻜﻢ ﻟﻤﺎ ﺷﺮﺣﻨﺎ
وﺳﻨﻘﻮم ﺑﺤﻠﻪ ان ﺷﺎء اﷲ ﺑﺪاﻳﺔ اﻟﺪرس اﻟﻘﺎدم....وﺳﺎﻗﻮم داﺋﻤﺎ ﺑﻜﺘﺎﺑﺔ اﻟﺴﺆال ﺑﺎﻟﻌﺮﺑﻴﺔ واﻻﻧﻜﻠﻴﺰﻳﺔ.
اﻟﺴﺆال :آﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﺠﻤﻊ وﻃﺮح وﻗﺴﻤﺔ ﻋﺪدﻳﻦ ﺻﺤﻴﺤﻴﻦ وآﺘﺎﺑﺔ اﻟﻨﺎﺗﺞ ﻟﻠﻌﻤﻠﻴﺎت اﻟﺜﻼث ﻋﻠﻰ
اﻟﺸﺎﺷﺔ آﻨﺎﺗﺞ ﻟﻠﺒﺮﻧﺎﻣﺞ.
**************************************************************
Questions: write a program which add, subtract and divide two integer numbers
and show the result for three arithmetic operations as an output for the program.
§*)§®¤*~ˆ°ﺳﺒﺤﺎﻧﻚ اﻟﻠﻬﻢ وﺑﺤﻤﺪك أﺷﻬﺪ ان ﻻ اﻟﻪ اﻻاﻧﺖ اﺳﺘﻐﻔﺮك وأﺗﻮب أﻟﻴﻚ §*(§®°ˆ~*¤
ﻧﺒﺪا ﺑﺄذن اﷲ اﻟﺪرس اﻟﺜﺎﻟﺚ وﻗﺪ اﻧﺘﻬﻴﻨﺎ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ ﺑﻄﺮح ﺳﺆال ﻓﻲ أﺧﺮ اﻟﺪرس وﺳﻨﺒﺪا هﺬا اﻟﺪرس ﺑﺎﻷﺟﺎﺑﻪ
ﻋﻦ اﻟﺴﺆال اﻟﺴﺎﺑﻖ وﺳﻨﻄﺮح اﺳﺄﻟﻪ أﺧﺮى واﻷﺟﺎﺑﻪ ﻋﻨﻬﺎ ان ﺷﺎء اﷲ,ﻣﻼﺣﻈﻪ ﻟﻢ اﻧﻮﻩ ﻟﻬﺎ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ ﻻﺣﻆ
ﻋﻨﺪ ﺗﺴﻤﻴﺔ اﻟﻤﺘﻐﻴﺮات ﻳﺠﺐ ﻣﺮاﻋﺎة أن اﻟﺘﺴﻤﻴﻪ ﺗﻜﻮن ﺣﺴﺎﺳﻪ ﻟﻠﺤﺮوف اﻟﺼﻐﻴﺮﻩ واﻟﻜﺒﻴﺮﻩ ﻳﻌﻨﻲ ﻳﺠﺐ اﻻﻧﺘﺒﺎﻩ ﻋﻨﺪ
آﺘﺎﺑﺔ اﻷﺳﻢ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ ان ﻳﻜﻮن ﻧﻔﺲ اﻷﺳﻢ ﺑﺎﻟﻀﺒﻂ دون اﻟﺘﻐﻴﻴﺮ ﻓﻲ ﺷﻲء.
ﺣﺎول ان ﺗﺠﻴﺐ ﻋﻠﻰ اﻷﺳﺄﻟﻪ اﻟﻤﺮﻓﻘﻪ ﺑﻨﻔﺴﻚ أوﻻ ﺛﻢ ﺑﻌﺪهﺎ ﻃﺎﺑﻖ ﺣﻠﻚ ﺑﺎﻟﺤﻞ اﻟﺬي وﺿﻌﺘﻪ ﺣﺘﻰ ﺗﺴﺘﻔﻴﺪ ﻷن
اﻟﺒﺮﻣﺠﻪ ﻻ ﻳﻤﻜﻨﻚ ﺗﻌﻠﻤﻬﺎ ﻣﻦ ﻏﻴﺮ اﻟﻤﻤﺎرﺳﻪ وﺣﻞ اﻷﺳﺄﻟﻪ ﻓﺒﻤﺠﺮد اﻟﻘﺮﺁءﻩ ﻻ ﻳﻤﻜﻨﻚ ان ﺗﻜﻮن ﻣﺒﺮﻣﺞ.
اﻟﺴﺆال :١آﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﺠﻤﻊ وﻃﺮح وﻗﺴﻤﺔ ﻋﺪدﻳﻦ ﺻﺤﻴﺤﻴﻦ وآﺘﺎﺑﺔ اﻟﻨﺎﺗﺞ ﻟﻠﻌﻤﻠﻴﺎت اﻟﺜﻼث ﻋﻠﻰ
اﻟﺸﺎﺷﺔ آﻨﺎﺗﺞ ﻟﻠﺒﺮﻧﺎﻣﺞ.
**************************************************************
Questions1: write a program which add, subtract and divide two integer numbers
and show the result for three arithmetic operations as an output for the program.
اﻷﺟﺎﺑﺔ:
ﻣﻼﺣﻈﻪ :ﺳﻨﻘﻮم ﺑﻜﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ وﺗﻮﺿﻴﺢ اﻟﻔﻜﺮة وﻗﺪ أﺳﻠﻔﻨﺎ ﻓﻲ اﻟﺪرس اﻻول ﺷﺮح ﺗﻔﺼﻴﻠﻲ ﻟﻸﺳﺎﺳﻴﺎت ﻓﺄن
آﻨﺖ ﻗﺪ ﻧﺴﻴﺘﻬﺎ ﻓﺄرﺟﻊ ﻟﻠﺪرس اﻷول ﺛﻢ واﺻﻞ ﻣﻌﻨﺎ هﻨﺎ.
>#include <iostream
)(int main
{
أﺳﻢ اﳌﺴﺎﺣﺔ ﻟﺘﺨﺰﻳﻦ اﻟﺮﻗﻢ اﻷول int integer1; //
أﺳﻢ اﳌﺴﺎﺣﻪ ﻟﺘﺨﺰﻳﻦ اﻟﺮﻗﻢ اﻟﺜﺎﻧﻲ int integer2; //
;int sum,sub أﺳﻢ اﳌﺴﺎﺣﻪ اﻟﱵ ﺳﻨﺨﺰن ﻓﻴﻬﺎ ﻧﺎﺗﺞ اﳉﻤﻊ واﻟﻄﺮح ﻋﻠﻰ اﻟﺘﻮاﱄ //
ﺟﻌﻠﻨﺎ اﻟﻨﻮع ﻟﻪ ﻟﻌﺪاد ﻋﺸﺮﻳﻪ ﻟﻦ اﻟﻘﺴﻤﺔ ﻻ ﺗﻌﻄﻲ داﺋﻤﺎ اﻋﺪاد ﺻﺤﻴﺤﻪfloat div; //
ﻷﻋﻄﺎء اﳌﺴﺘﺨﺪم رﺳﺎﻟﺔ ﻷدﺧﺎل رﻗﻢstd::cout << "Enter second integer\n"; //
;std::cin >> integer2 ﻷدﺧﺎل اﻟﺮﻗﻢ ﰲ اﳌﺴﺎﺣﻪ اﶈﺠﻮزة //
ﻟﻄﺒﺎﻋﺔ ﻧﺎﺗﺞ اﳉﻤﻊstd::cout << "Sum is " << sum << std::endl; //
ﻟﻄﺒﺎﻋﺔ ﻧﺎﺗﺞ اﻟﻄﺮح std::cout << "sub is " << sub << std::endl; //
ﻟﻄﺒﺎﻋﺔ ﻧﺎﺗﺞ اﻟﻘﺴﻤﺔ std::cout << "div is " << div << std::endl; //
Questions2 : Write a C++program to read two integers (first and second), and
two real numbers (third and fourth), then calculate the value of:
اﻟﺴﺆال :٢اﻟﻤﻄﻠﻮب آﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ ال C++ﻳﻘﻮم ﺑﺄذﺧﺎل ﻋﺪدان ﺻﺤﻴﺤﺎن وﺁﺧﺮﻳﻦ ﻋﺸﺮﻳﻴﻦ -
وﻳﺠﺐ ان ﻳﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﺘﻄﺒﻴﻖ اﻟﻤﻌﺎدﻟﻪ اﻻوﻟﻰ ﻋﻠﻰ اﻟﻌﺪدﻳﻦ اﻟﺼﺤﻴﺤﻴﻦ وﺗﻄﺒﻴﻖ اﻟﻤﻌﺎدﻟﺔ اﻟﺜﺎﻧﻴﻪ
ﻋﻠﻰ اﻟﻌﺪدﻳﻦ اﻟﻌﺸﺮﻳﻴﻦ واﻟﻤﻌﺎدﻟﺘﻴﻦ آﺎﻟﺘﺎﻟﻲ:
Result1 = 7 first^3 + second^2
-ﻣﻼﺣﻈﻪ :ﻳﺠﺐ ان ﻳﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺒﺎﻋﺔ اﻟﻨﺎﺗﺞ اﻷول واﻟﺜﺎﻧﻲ ﻋﻠﻰ اﻟﺸﺎﺷﺔ ,و 2^3ﺗﻌﻨﻲ اﻟﺮﻗﻢ ٢ﻣﺮﻓﻮع
ﻟﻠﻘﻮة ٣او ٢أس ٣وﻳﺠﺐ ﻋﻠﻴﻚ ﺗﺤﻮﻳﻞ هﺬﻩ اﻟﻌﺒﺎرة اﻟﻰ ﻟﻐﺔ اﻟﺴﻲ ﺑﻠﺲ
: اﻷﺟﺎﺑﺔ-
Solution:
#include <iostream>
#include <math.h>
void main ()
{
و ﳌﻌﺮﻓﺔ اﳌﺰﻳﺪ ﻋﻦ اﳌﻜﺘﺒﺎت اﳌﺴﺘﺨﺪﻣﺔ ﰲ اﻟﺴﻲ ﺑﻠﺲ ﺑﻠﺲ ودواﳍﺎ اﻧﺼﺤﻜﻢ ﺑﺰﻳﺎرة
/http://www.cplusplus.com هﺬا اﳌﻮﻗﻊ اﻟﺮاﺋﻊ ﻟﻠﺴﻲ ﺑﻠﺲ ﺑﻠﺲ
Solution:
#include <iostream>
void main ()
{
Celsius=9/5*(Fahrenheit-32)
SOLUTION:
#include <iostream>
void main ()
{
int K,L,M,N;
N=K+L-3*M;
§*)§®¤*~ˆ°ﺳﺒﺤﺎﻧﻚ اﻟﻠﻬﻢ وﺑﺤﻤﺪك أﺷﻬﺪ ان ﻻ اﻟﻪ اﻻاﻧﺖ اﺳﺘﻐﻔﺮك وأﺗﻮب أﻟﻴﻚ §*(§®°ˆ~*¤
ﻟﻘﺪ اﻧﻬﻴﻨﺎ اﻟﺘﻌﺮف ﻋﻠﻰ ﻟﻐﺔ ال C++وآﺘﺎﺑﺔ ﺑﺮاﻣﺞ ﺑﺴﻴﻄﻪ ﺑﻬﺬﻩ اﻟﻠﻐﺔ اﻟﻘﻮﻳﺔ وﻟﻜﻦ هﻞ ﺗﻌﺘﻘﺪ ان ﻳﻤﻜﻨﻚ ﻣﻮاﺻﻠﺔ
اﻟﺒﺮﻣﺠﻪ ﺑﻬﺬﻩ اﻟﻤﺒﺎديء اﻟﺒﺴﻴﻄﻪ؟ ﻃﺒﻌﺎ ﻻ ﻓﻘﺪ ﻳﻄﻠﺐ ﻣﻨﻚ آﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻷدﺧﺎل ﺑﻴﺎﻧﺎت ﻋﺪد آﺒﻴﺮ ﻣﻦ اﻟﻤﻮﻇﻔﻴﻦ
وﺗﺬآﺮ ان اﻟﻤﺒﺮﻣﺞ اﻟﻨﺎﺟﺢ ﻳﻜﺘﺐ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﻳﻨﻔﺬ اﻟﻤﻬﻤﻪ ﺑﺄﻗﻞ ﺳﻄﻮر ﻣﻤﻜﻨﻪ ﻟﻚ ﻳﻜﻮن ﺑﺮﻧﺎﻣﺞ ﺳﺮﻳﻊ ﻋﻨﺪ
اﻟﺘﻨﻔﻴﺬ,ﻃﺒﻌﺎ ﻣﻦ اﻟﻐﻴﺮ ﻋﻤﻠﻲ ﺟﺪا ان ﺗﺪﺧﻞ ﺑﻴﺎﻧﺎت ١٠٠ﻣﻮﻇﻒ ﻣﺜﻼ ب cout ١٠٠و . cin ١٠٠هﻨﺎ ﺗﺎﺗﻲ
ﺿﺮورة اﺳﺘﺨﺪام هﺬﻩ اﻟﺠﻤﻞ اﻟﻤﻔﻴﺪﻩ اﻟﺘﻲ ﺳﻨﺘﻄﺮق اﻟﻴﻬﺎ ﻓﻲ دورﺗﻨﺎ.
اﻟﻴﻮم ﺑﺄذن اﷲ ﺳﻨﺒﺪأ ﻓﻲ اﻟﺘﻌﺮف ﻋﻠﻰ ﺟﻤﻞ ﻣﻔﻴﺪة ﻓﻲ اﻟﺴﻲ ++وهﻲ اﻟﺘﻲ ﺳﺘﻘﻮدﻧﺎ اﻟﻰ ﺑﺪاﻳﺔ ﺑﺮﻣﺠﺔ ﺟﻴﺪﻩ.......
ﺳﻨﺘﻨﺎول ﻓﻲ هﺬﻩ اﻟﺪورﻩ :
{ )if (expression
}
ﻧﺒﺪا ﺑﺎل -: ifآﻤﺎ ﺗﺮى هﺬﻩ اﻟﺼﻴﻐﻪ اﻟﻌﺎﻣﺔ ﻟﻜﺘﺎﺑﺔ ﺟﻤﻠﺔ ال , ifﻳﺤﺘﻮي اﻟﻘﻮس اﻟﺬي ﻳﺄﺗﻲ ﺑﻌﺪ ال ifﻋﻠﻰ
اﻟﺸﺮط اﻟﺬي ﺑﻤﻮﺟﺒﻪ ﻳﺘﻢ ﺗﻨﻔﻴﺬ اﻟﻌﻤﻠﻴﺎت اﻟﺘﻲ ﺑﺪاﺧﻞ اﻟﻘﻮﺳﻴﻦ} { ,ﻓﻌﻨﺪ اﻧﻄﺒﺎق اﻟﺸﺮط ﻳﺘﻢ ﺗﻨﻔﻴﺬ ﻣﺎ ﺑﺪاﺧﻞ
اﻟﻘﻮﺳﻴﻦ} { وﻣﻦ ﺛﻢ اﻻﻧﺘﻘﺎل اﻟﻰ اﻟﻌﻤﻠﻴﺎت اﻟﺘﺎﻟﻴﺔ ان وﺟﺪت وﻧﻘﺼﺪ ﺑﺎﻟﻌﻤﻠﻴﺎت اﻟﺘﺎﻟﻴﻪ اﻟﻌﻤﻠﻴﺎت اﻟﺘﻲ ﺗﺄﺗﻲ
ﺑﻌﺪ ﺗﻨﻔﻴﺬ اﻟﻌﻤﻠﻴﺎت اﻟﺘﻲ ﺑﺪاﺧﻞ ﻗﻮﺳﻴﻦ ال ,ifاﻣﺎ اذا ﻟﻢ ﻳﺘﺤﻘﻖ اﻟﺸﺮط ﻓﻼ ﻳﻨﻈﺮ ﻻ ﺑﺪاﺧﻞ ال ifوﻳﻨﺘﻘﻞ
ﻣﺒﺎﺷﺮﻩ اﻟﻰ اﻟﻌﻤﻠﻴﺎت اﻟﺘﺎﻟﻴﻪ اﻟﺘﻲ ﺗﻜﻮن ﺧﺎرج ﻧﻄﺎق ال . ifوﻧﻨﺘﻘﻞ ﻟﻠﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻟﺘﺘﻤﻜﻦ ﻣﻦ ﻓﻬﻢ اﻟﻤﻮﺿﻮع
ﺑﺸﻜﻞ أآﺒﺮ.
اﻟﺴﺆال:ﻗﻢ ﺑﻜﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ ال C++ﻳﻘﻮم ﺑﺄدﺧﺎل رﻗﻤﻴﻦ وآﺘﺎﺑﺔ اﻟﻌﻼﻗﺔ ﺑﻴﻨﻬﻤﺎ .ﻓﻤﺜﻼ ﻳﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ
ﺑﻜﺘﺎﺑﺔ اذا ﻣﺎ آﺎﻧﺎ اﻟﺮﻗﻤﻴﻦ ﻣﺘﺴﺎوﻳﻴﻦ واذا ﻟﻢ ﻳﻜﻮﻧﺎ ﻳﻘﻮم ﺑﻜﺘﺎﺑﺔ ذﻟﻚ وﺗﻮﺿﻴﺢ اي اﻟﻌﺪدﻳﻦ اآﺒﺮ .
QUESTIONS: write program using C++ that accept two number and give
the relationships they satisfy.
Answer:-
1. #include <iostream>
5. int main()
6. {
7. int num1; // first number to be read from user
8. int num2; // second number to be read from user
ﺑﺎﻟﺘﻔﺼﻴﻞ اﻟﻤﻤﻞ ﻓﻲ١١ اﻟﻰ١ وذﻟﻚ ﻷﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺸﺮح اﻟﺴﻄﻮر ﻣﻦ١٢ ﺳﻨﺒﺪأ ﺑﺎﻟﺸﺮح ﻣﻦ اﻟﺴﻄﺮ ال
وﻣﻌﻨﺎهﺎ اذا ﺗﺤﻘﻖ انif ( num1 == num2 ) ﻓﻲ اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ ﻋﺸﺮ.اﻟﺪورس اﻟﺴﺎﺑﻘﻪ
وأآﻴﺪ اﻧﻜﻢ ﻻﺣﻈﺘﻢ ﻋﺪم وﺟﻮد اﻟﻘﻮﺳﻴﻦ} { وهﺬا ﻷﻧﻪ اذا آﺎن١٣ ﻧﻘﻮم ﺑﺘﻄﺒﻴﻖ اﻟﺴﻄﺮnum1=num2
ﻻ داﻋﻲ ﻟﻮﺿﻊ هﺬﻳﻦ اﻟﻘﻮﺳﻴﻦ و ﻻ ﻣﺸﻜﻠﺔ اذا وﺿﻌﺘﻬﻤﺎ اﻣﺎ اذا آﺎنif ﻟﺪﻳﻨﺎ ﻓﻘﻂ ﺳﻄﺮ واﺣﺪ ﻓﻲ داﺧﻞ ال
اآﺜﺮ ﻣﻦ ﺳﻄﺮ وﻟﻢ ﺗﻀﻌﻬﻤﺎ داﺧﻞif ﻟﻸن اﻟﻤﺘﺮﺟﻢ اذا اﺣﺘﻮت ال, ﻟﺪﻳﻚ اآﺜﺮ ﻣﻦ ﺳﻄﺮ وﺟﺐ ﻋﻠﻴﻚ وﺿﻌﻬﻤﺎ
وﻳﺘﻌﺎﻣﻞ ﻣﻌﻬﻤﺎ ﻋﻠﻰif واﻵﺧﺮﻳﻦ ﻳﺤﺴﺒﻬﻤﺎ ﺧﺎرج الif اﻟﻘﻮﺳﻴﻦ } { ﺳﻴﻘﻮم ﺑﺄﺧﺬ اول ﺳﻄﺮ ﺿﻤﻦ ال
.هﺬﻩ اﻷﺳﺎس
. وﺑﻘﻴﺔ اﻟﺴﻄﻮر ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ ﺗﻘﺎرن ﺑﺎﻟﻤﺜﻞ وﻟﻜﻦ ﺑﺄﺧﺘﻼف وﺟﻪ اﻟﻤﻘﺎرﻧﻪ
if/else :ﺛﺎﻧﻴﺎ
if (expression) {
code inside if;
}
else {
code inside else;
}
وﻣﺎ ﺑﺪاﺧﻠﻬﺎif ﺑﻤﻔﺮدهﺎ اذا ﻟﻢ ﻳﺘﺤﻘﻖ اﻟﺸﺮط ﻳﺘﺠﺎوز اﻟﻤﺘﺮﺟﻢ الif ﻧﻼﺣﻆ ﻓﻲ اﻟﺴﺎﺑﻖ ﻋﻨﺪ اﺳﺘﺨﺪام ال
ﻳﻤﺮif/else ﻓﻬﻨﺎ آﻤﺎ ﺗﺮون ﺑﺎﻟﺸﻜﻞ اﻟﻌﺎم ﻟﻞelse ﻣﻦ آﻮد وﻳﺘﺎﺑﻊ ﻃﺮﻳﻘﻪ اﻣﺎ ﻓﻲ ﺣﺎﻟﺔ وﺟﻮد ال
else واذا ﻟﻢ ﻳﺘﺤﻘﻖ ﻳﻄﺒﻖ ﻣﺎ ﺑﺪاﺧﻞ الif ﻳﺮى اﻟﺸﺮط اذا ﺗﺤﻘﻖ اﻟﺸﺮط ﻳﻄﺒﻖ ﻣﺎ ﺑﺪاﺧﻞ الif اﻟﻤﺘﺮﺟﻢ ﺑﺎل
ﺑﺮﻧﺎﻣﺞ ﻳﻄﻠﺐ ﻣﻦ: ﻃﺒﻌﺎ اﻟﻔﺮق ﺑﻬﺬا اﻟﻤﺜﺎلif ﻗﺪ ﺗﺴﺎﺋﻠﻮن اذا ﻣﺎ اﻟﻔﺮق ﺑﻴﻨﻪ وﺑﻴﻦ ﻣﺎ ﺳﺒﻖ ﺷﺮﺣﻪ ﻓﻲ ال
error ﻏﻴﺮ ذﻟﻚ ﻧﻄﺒﻊhello ﻧﻄﺒﻊ ﻋﻠﻰ اﻟﺸﺎﺷﻪ٣ اذا ادﺧﻞ اﻟﻤﺴﺘﺨﺪم رﻗﻢ,اﻟﻤﺴﺘﺨﺪم ان ﻳﺪﺧﻞ رﻗﻤﺎ
ﻏﻴﺮ ذﻟﻚ ﻧﻄﺒﻊ, hello ﻟﻨﻄﺒﻊ٣ ﻟﻠﻤﻘﺎرﻧﻪ اذا آﺎن اﻟﺮﻗﻢ اﻟﺬي ادﺧﻠﻪ اﻟﻤﺴﺘﺨﺪمif ﻧﻼﺣﻆ هﻨﺎ اﻧﻨﺎ ﺳﻨﺠﻌﻞ.
.... وﺳﻴﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ آﺎﻟﺘﺎﻟﻲerror ﻧﻄﺒﻊ
#include <iostream>
if ( num1 == 3)
cout<<"hello";
else
cout<<"error";
ﺛﺎﻟﺜﺎelse if :
هﺬﻩ اﻟﺠﻤﻠﺔ ﻣﻔﻴﺪﻩ ﺟﺪا ﻓﻬﻲ ﺗﺠﻌﻞ ﺑﺮﻧﺎﻣﺠﻚ اآﺜﺮ ذآﺎء وﺣﻨﻜﻪ واﻟﺸﻜﻞ اﻟﻌﺎم ﻟﻬﺬﻩ اﻟﺠﻤﻠﺔ آﺎﻟﺘﺎﻟﻲ-:
{ )if (expression
;do the code inside if
}
{ )else if (expression
{ )else if (expression
;do the code inside else if
}
{ else
;do the code inside else
}
هﻨﺎ اﻟﻤﺘﺮﺟﻢ ﺳﻴﻘﻮم ﺑﺘﺎآﺪ ﻣﻦ اﻟﻘﺎﻋﺪة اﻟﺘﻲ ﺑﺪاﺧﻞ ال ifاذا ﺗﻄﺒﻘﺖ ﻧﻔﺬهﺎ وﻻ ﻳﻤﺮ ﻋﻠﻰ ﺑﺎﻗﻲ اﻟﺨﻴﺎرات
اﻟﻤﺘﻤﺜﻠﺔ ﻓﻲ ال if elseوال , elseاذا ﻟﻢ ﺗﻄﺒﻖ اﻟﻘﺎﻋﺪﻩ ﻳﺬهﺐ ﻟﻠﺨﻴﺎر اﻵﺧﺮ ﻓﻲ ال else ifواذا ﻟﻢ ﻳﺘﻄﺒﻖ
ﻳﺬهﺐ ﻟﻠﺬي ﺑﻌﺪﻩ واﺧﻴﺮا اذا ﻟﻢ ﻳﺘﻄﺒﻖ ﺷﻲء ﻳﻨﻔﺬ ال .elseاي اﻧﻪ اذا ﻃﺒﻖ اﺣﺪ اﻟﺨﻴﺎرات ﻳﺨﺮج ﻣﻦ هﺬﻩ
اﻟﻤﻘﺎرﻧﻪ وﻃﺒﻌﺎ هﻨﺎ ﻳﺠﺐ ان ﺗﻼﺣﻆ ﻟﻮ اﻧﻚ اﺳﺘﺒﺪﻟﺖ ال else ifب ifﻟﺘﻢ اﻟﻤﺮور ﻋﻠﻰ آﻞ ifواﻟﺘﺎآﺪ
ﻣﻦ ﻗﺎﻋﺪﺗﻬﺎ وﺗﻄﺒﻴﻘﻬﺎ اذا ﺗﺤﻘﻘﺖ اﻟﻘﺎﻋﺪﻩ ﻟﻜﻦ ﻓﻲ ﺣﺎﻟﺔ ال else ifﻳﻤﺮ ﻋﻠﻰ ال ifاﻻوﻟﻰ اذا ﺗﺤﻘﻘﺖ
ﻳﺘﺠﺎوز اﻟﺠﻤﻴﻊ وﻳﺨﺮج ﻟﻤﺎ وراء ال elseاﻣﺎ اذا ﻟﻢ ﺗﺘﺤﻘﻖ ﻳﺠﺮب اﻟﺒﻘﻴﺔ وﺑﻤﺠﺮد ﺗﺤﻘﻖ اﺣﺪاهﻢ ﻳﺨﺮج ﻟﺬﻟﻚ
ﻳﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ اﺳﺮع ﺑﺎل else ifﻓﻼ داﻋﻲ ﻟﻤﻘﺎرﻧﺔ اﻟﺒﻘﻴﺔ ﻣﺎدام ﺗﺤﻘﻖ ﺷﺮط ﻣﻦ اﻟﺸﺮوط واﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ
ﻟﺘﻮﺿﻴﺢ اﻟﻤﻮﺿﻮع أآﺜﺮ.
ﻻﺣﻆ ﻓﻲ هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻳﻤﺮ اﻟﻤﺘﺮﺟﻢ ﻋﻠﻰ ال ) if (num1 > num2اذا ﺗﺤﻘﻖ اﻟﺸﺮط ﻳﻜﺘﺐ اﻟﻌﺒﺎرة
The number1 is bigger than number2وﻳﻨﺘﻘﻞ اﻟﻰ ﻣﺎ ﺑﻌﺪ ال elseاي ﻻ ﻳﻘﺎرن اﻟﻤﻘﺎرﻧﺎت
اﻷﺧﺮى,اﻣﺎ اذا ﻟﻢ ﻳﺘﺤﻘﻖ ﻳﻨﺘﻘﻞ اﻟﻰ ) else if (num2 > num1وﻳﻄﺒﻖ ﻋﻠﻴﻪ ﻧﻔﺲ ﻣﺎ ﻗﻠﻨﺎﻩ ﻓﻲ اﻷوﻟﻰ
وهﻜﺬا اذا ﻟﻢ ﺗﺘﺤﻘﻖ اﻟﻘﺎﻋﺪﻩ ﻓﻴﻬﻢ ﺟﻤﻴﻌﺎ ﻧﺼﻞ اﻟﻰ ال elseوﻧﻨﻔﺬ ﻣﺎ ﺑﻬﺎ وﻳﻄﺒﻊ . error
هﻨﺎ ﻧﺼﻞ ﻟﻨﻬﺎﻳﺔ درس اﻟﻴﻮم اﲤﲎ ان ﻳﻜﻮن واﺿﺢ وﻣﻔﻴﺪ وﺳﻨﻨﺘﻘﻞ ﺑﺎذن اﷲ ﰲ
اﻟﺪرس اﻟﻘﺎدم اﱃ ﻣﺮﺣﻠﺔ اآﺜﺮ ﺗﻄﻮرا ﰲ ال C++وﺳﻨﻘﻮم ﲝﻞ ﲤﺎرﻳﻦ ﻋﻠﻰ درس
اﻟﻴﻮم وأي اﺳﺘﻔﺴﺎر ﻳﺴﺮﻧﻲ اﻻﺟﺎﺑﻪ ﻋﻠﻴﻪ....
§*)§®¤*~ˆ°ﺳﺒﺤﺎﻧﻚ اﻟﻠﻬﻢ وﺑﺤﻤﺪك أﺷﻬﺪ ان ﻻ اﻟﻪ اﻻاﻧﺖ اﺳﺘﻐﻔﺮك وأﺗﻮب أﻟﻴﻚ §*(§®°ˆ~*¤
اﺗﻤﻨﻰ ان ﺗﻜﻮﻧﻮا ﺑﺼﺢ ﺟﻴﺪة .....ﺑﻌﺪ ان اﻧﺘﻬﻴﻨﺎ ﻣﻦ اﻟﺪرس اﻟﺮاﺑﻊ ﻧﺄﺧﺬ هﺬة اﻟﺘﻤﺎرﻳﻦ ﻟﻨﻌﺰز ﻣﺎ ﺗﻢ دراﺳﺘﻪ وﺑﻌﺪهﺎ
ﻧﻨﺘﻘﻞ ﻟﻠﺪرس اﻟﺨﺎﻣﺲ.....
Question1: write a program that reads an integer and determine whether it is odd or
even. (Hint: use the modulus operator .an even number is a multiple of two. any
multiple of two leaves a reminder of zero when divide by 2).
اﻟﺴﺆال اﻷول :ﻗﻢ ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺑﺄﺳﺘﺨﺪام ﻟﻐﺔ ال C++ﻳﻘﻮم ﺑﺄدﺧﺎل ﻋﺪد ﺻﺤﻴﺢ وﺗﺤﺪﻳﺪ اذا آﺎن هﺬا اﻟﻌﺪد
اﻟﺼﺤﻴﺢ ﻋﺪد ﻓﺮدي ام زوﺟﻲ)ﻣﻼﺣﻈﻪ :اﺳﺘﺨﺪم %ﻟﺘﺴﺎﻋﺪك ﻓﻲ اﻟﺤﻞ واي ﻋﺪد زوﺟﻲ ﻳﻘﺴﻢ ﻋﻠﻰ ٢ﻳﻜﻮن
اﻟﺒﺎﻗﻲ داﺋﻤﺎ ﺻﻔﺮا(
ﺑﻬﺬﻩ اﻟﻤﻼﺣﻈﻪ اﺻﺒﺤﺖ اﻟﻔﻜﺮة ﺟﺎهﺰة ﻟﻜﻢ ........
> #include <iostream.h
) ( int main
{
; int number
; return 0
}
Questions2 :write a program that inputs one five digit number, separates the number
in to individuals digits and prints the digits separated from one another by three
)spaces each .(hint :use combinations of integer division and the reminder operation
اﻟﺴﺆال اﻟﺜﺎﻧﻲ:ﻗﻢ ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺑﺄﺳﺘﺨﺪام ﻟﻐﺔ ال C++ﻳﻘﻮم ﺑﺄدﺧﺎل ﻋﺪد ﻣﻜﻮن ﻣﻦ ﺧﻤﺴﺔ أرﻗﺎم وﻳﻔﺼﻠﻬﻤﺎ وﻳﻄﺒﻊ
آﻞ ﻋﺪد ﻣﻔﺼﻮل ﻋﻦ اﻟﺬي ﻳﻠﻴﻪ ﺑﺜﻼث ﻣﺴﺎﻓﺎت) ﻣﻼﺣﻈﻪ اﺳﺘﺨﺪم (% ,/واﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﻟﻠﺘﻮﺿﻴﺢ.....
Example: enter a five digit number: 12345
1 2 3 4 5
int number,num1,num2,num3,num4,num5 ;
cout << " please enter a number with five digit: " ;
cin >>number ;
number =number%10000;
num1= number/10000;
number =number%1000;
num2= number/1000;
number =number%100;
num3= number/100;
number =number%10;
num4= number/10;
num5= number;
cout<<num1<</t<<num2<</t<<num3<</t<<num4<</t<<num5<<end1;
return 0 ;
:اﻟﺪرس اﻟﺨﺎﻣﺲ
اﻟﺘﻲ ﺳﺒﻖ ودرﺳﻨﺎهﺎ وﻓﻴﻪ اﺧﺘﻼف ﺑﺴﻴﻂelse if وهﻲ ﻣﺸﺎﺑﻬﺔ ﻟﻞswitch ﻧﺘﻨﺎول اﻟﻴﻮم ﻓﻲ درﺳﻨﺎ هﺬا ال
switch ﻟﻜﻦ ﻟﺔ ﺗﺄﺛﻴﺮ ﻋﻠﻰ آﺘﺎﺑﺔ اﻟﺒﺮﻧﺎﻣﺞ ﺳﻨﺘﻄﺮق ﻟﻪ ان ﺷﺎء اﷲ واﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ هﻮ اﻟﺸﻜﻞ اﻟﻌﺎم ﻟﻸﺳﺘﺨﺪام ال
{ )هﻨﺎ ﻳﻜﺘﺐ اﻟﻤﺘﻐﻴﺮ اﻟﻤﺮاد ﻣﻘﺎرﻧﺘﻪ( switch
; : do the following codeهﻨﺎ ﺗﻜﺘﺐ اﻟﻤﻘﺎرﻧﺔ اﻷوﻟﻰ case
ﻻﺣﻆ ان اﻟﺸﻜﻞ اﻟﻌﺎم ﻟﻞ switchﻣﻮﺿﺢ ﻋﻠﻴﺔ ﻣﻜﺎن وﺿﻊ اﻟﻤﺘﻐﻴﺮ اﻟﻤﺮاد ﻣﻘﺎرﻧﺘﻪ واﻟﺤﺎﻻت اﻟﺘﻲ ﻳﻘﺎرن ﺑﻪ هﺬا
اﻟﻤﺘﻐﻴﺮ وﺳﺘﺘﻀﺢ اﻟﻔﻜﺮة اآﺜﺮ ﻋﻨﺪﻣﺎ ﻧﺄﺧﺬ ﻣﺜﺎل ﻋﻤﻠﻲ ﻋﻠﻰ ال switchﻧﻨﺘﻘﻞ ﻟﻤﺜﺎل ﻋﻤﻠﻲ .....
اﻟﻤﺜﺎل :١ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﺄدﺧﺎل أرﻗﺎم ﺻﺤﻴﺤﻪ وﻳﻘﻮم ﺑﻄﺒﺎﻋﺘﻬﺎ ﺑﺎﻟﺤﺮوف .ﻣﺜﻼ ﻋﻨﺪﻣﺎ ﻳﺪﺧﻞ اﻟﻤﺴﺘﺨﺪم ١ﻳﻘﻮم
اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺒﺎﻋﺔ .oneوهﻜﺬا ﻃﺒﻌﺎ ﺳﻨﺠﻌﻠﻪ اﻟﻰ رﻗﻢ ﺧﻤﺴﺔ ﻓﻘﻂ ﻟﺘﻮﺿﻴﺢ ﻓﻜﺮة ﻋﻤﻞ ال . switch
1- >#include <iostream
2- )(int main
3- {
4- ;int number
5- ; "cout << "Enter Number:\t
6- ;cin >> number
ﰲ ﻣﺜﺎﻟﻨﺎ ﻟﻮ ان اﳌﺴﺘﺨﺪم ادﺧﻞ ٢ﳝﺮ اﳌﱰﺟﻢ ﺑﺄول ﺣﺎﻟﺔ وﻃﺒﻌﺎ ال ١ﻻ ﻳﺴﺎوي ال
٢وﻳﺘﺠﻪ ﻟﻠﺤﺎﻟﺔ اﻟﺜﺎﻧﻴﻪ وﻓﻌﻼ ﻳﺘﻄﺎﺑﻘﺎ ﻓﻴﻄﺒﻊ ﻋﻠﻰ اﻟﺸﺎﺷﺔ twoوﳜﺮج ﺧﺎرج
ال switchﻃﺒﻌﺎ ﻟﻮﺟﻮد ال .break
اﻟﺴﺆال :ﻗﻢ ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺑﺄﺳﺘﺨﺪام ﻟﻐﺔ اﻟﺴﻲ ﺑﻠﺲ ﺑﻠﺲ ﻳﻘﻮم ﺑﻌﻤﻞ ﺁﻟﺔ
ﺣﺎﺳﺒﺔ ,ﻳﺴﺘﻘﺒﻞ ﻣﻦ اﳌﺴﺘﺨﺪم رﻗﻤﲔ واﻟﻌﻤﻠﻴﺔ )* (/,+,-,وﻳﻘﻮم ﺑﺎﺟﺮاء اﻟﻌﻤﻠﻴﺔ
اﻟﱵ ﻳﺪﺧﻠﻬﺎ اﳌﺴﺘﺨﺪم ﻋﻠﻰ اﻟﻌﺪدﻳﻦ وﻳﻄﺒﻊ اﻟﻨﺎﺗﺞ ﻋﻠﻰ اﻟﺸﺎﺷﺔ..
§*)§®¤*~ˆ°ﺳﺒﺤﺎﻧﻚ اﻟﻠﻬﻢ وﺑﺤﻤﺪك أﺷﻬﺪ ان ﻻ اﻟﻪ اﻻاﻧﺖ اﺳﺘﻐﻔﺮك وأﺗﻮب أﻟﻴﻚ §*(§®°ˆ~*¤
آﻴﻒ ﺣﺎﻟﻜﻢ أﺧﻮاﻧﻲ واﺧﻮاﺗﻲ اﺳﺄل اﷲ ان ﺗﻜﻮﻧﻮا ﻓﻲ أﺣﺴﻦ ﺣﺎل......اﻟﻴﻮم ﺑﻌﺪ ان اﻧﺘﻬﻴﻨﺎ ﻣﻦ ﺟﻤﻠﺔ ال switch
ﻧﻨﺘﻘﻞ ﺑﺄذن اﷲ اﻟﻰ ﻣﻮﺿﻮع ﻣﻬﻢ وﻋﻤﻠﻲ ﺟﺪا...اﻻ وهﻮ ﺟﻤﻞ اﻟﺘﻜﺮار وﺗﺘﻤﺜﻞ ﻓﻲ الwhile ,for loop,
do whileوﺗﺴﺘﺨﺪم هﺬﻩ اﻟﺠﻤﻞ ﺑﺪرﺟﺔ واﺳﻌﻪ ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻞ ﻣﻌﻈﻢ اﻟﺒﺮاﻣﺞ ﺗﺤﺘﻮي ﻋﻠﻴﻬﺎ.
ﺗﺨﻴﻞ اﻧﻪ ﻃﻠﺐ ﻣﻨﻚ ﻋﻤﻞ ﺑﺮﻧﺎﻣﺞ ﻷدﺧﺎل ﺑﻴﺎﻧﺎت ﻣﻮﻇﻔﻴﻦ هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﺄدﺧﺎل اﻻﺳﻢ و رﻗﻢ اﻟﺘﺴﻠﺴﻞ
ﻟﻠﻤﻮﻇﻒ ووﻇﻴﻔﺘﻪ وﻋﺪد ﺳﺎﻋﺎت ﻋﻤﻠﻪ ﻃﺒﻌﺎ هﻨﺎ ﺳﺘﺤﺘﺎج ﺗﻄﻠﺐ ﻣﻦ اﻟﻤﺴﺘﺨﺪم اﺳﻤﻪ ورﻗﻢ اﻟﺘﺴﻠﺴﻞ اﻟﺘﺎﺑﻊ ﻟﻪ
ووﻇﻴﻔﺘﻪ و ﻋﺪد ﺳﺎﻋﺎﺗﻪ وهﻨﺎ ﺳﻴﻜﻮن ﺑﺮﻧﺎﻣﺠﻚ ﻳﺤﻮي ارﺑﻊ coutوارﺑﻊ cinﻟﻜﻞ ﻣﻮﻇﻒ ﺗﺨﻴﻞ ﻟﻮ اﻧﻪ ﻃﻠﺐ
ﻣﻨﻚ آﺘﺎﺑﺔ هﺬﻩ اﻟﺒﺮﻧﺎﻣﺞ ﻟﻤﺌﺔ ﻣﻮﻇﻒ او اآﺜﺮ ﻃﺒﻌﺎ اﻟﻤﺴﺄﻟﺔ ﻏﻴﺮ ﻣﻘﺒﻮﻟﺔ اذا اﺳﺘﺨﺪﻣﺖ هﺬﻩ اﻟﻄﺮﻳﻘﺔ ﻷن اﻟﺒﺮﻧﺎﻣﺞ
ﺳﻴﻜﻮن ﻃﻮﻳﻞ ﺟﺪا وﻣﻤﻞ ﺟﺪا وﺑﺪون ﻣﻌﻨﻰ ,ﻓﻬﻨﺎ ﻳﺄﺗﻲ دور ﺟﻤﻞ اﻟﺘﻜﺮار اﻟﺘﻲ ﺳﺘﻨﻘﺬك ﻣﻦ هﺬا اﻟﻤﻮﻗﻒ اﻟﺤﺮج وﻣﻦ
آﺘﺎﺑﺔ آﻞ هﺬا اﻟﻜﻼم.وﺳﻨﺸﺮﺣﻬﻢ ان ﺷﺎء اﷲ ﺑﺎﻟﺘﻔﺼﻴﻞ.
ﻧﺼﻴﺤﺔ ذهﺒﻴﺔ :اﻟﻤﺒﺮﻣﺞ اﻟﻨﺎﺟﺢ ﺣﻴﻨﻤﺎ ﻳﻜﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻳﺠﻌﻠﻪ ﻣﺮن ﺑﺤﻴﺚ ﻳﺴﺘﺨﺪم ﻷي اﺳﺘﺨﺪام ﻟﻠﻐﺮض اﻟﺬي اﻧﺸﺄ
ﻣﻦ اﺟﻠﻪ ﻣﺜﻼ ﻟﻮ ﻃﻠﺐ ﻣﻨﻚ ﻋﻤﻞ ﺑﺮﻧﺎﻣﺞ ﻳﺤﺴﺐ اﻟﻤﺘﻮﺳﻂ ﻃﺒﻌﺎ ﻳﺠﺐ ان ﺗﺠﻌﻠﻪ ﺑﺮﻧﺎﻣﺞ ﻳﺤﺴﺐ اﻟﻤﺘﻮﺳﻂ ﻷي ﻋﺪد
ﻣﻦ اﻟﺪرﺟﺎت اﻳﺎ آﺎن ﻋﺪدهﺎ وهﻜﺬا ﻟﻚ ﻳﺴﺘﺨﺪم ﻓﻲ اي وﻗﺖ وﺣﺎول ﺗﺨﺘﺎر اﺳﻤﺎء ﻣﺘﻐﻴﺮات واﺿﺤﻪ وذات ﻣﻌﻨﻲ
اي اذا اردت ان ﺗﺨﺘﺎر ﻣﺘﻐﻴﺮ ﺗﺨﺰن ﻓﻴﻪ اﻟﺪرﺟﺎت اﺟﻌﻞ اﺳﻤﻪ gradeاي درﺟﻪ ﻟﻚ ﺗﺘﺬآﺮ هﺪﻓﻪ وﻣﻌﻨﺎﻩ اذا
رﺟﻌﺖ ﻟﻪ ﺑﻌﺪ زﻣﻦ او اردت ﺗﻄﻮﻳﺮﻩ.......
أﻋﺘﺬر ﻋﻠﻰ اﻷﻃﺎﻟﻪ ﻧﻨﺘﻘﻞ ﻣﺒﺎﺷﺮﻩ ﻷول ﺟﻤﻞ اﻟﺘﻜﺮار وهﻲ ال .while
ﺟﻤﻠﺔ ال :while
هﻨﺎ ﺗﻜﺘﺐ اﻟﻜﻮد اﻟﺬي ﺗﺮﻳﺪ ان ﻳﻄﺒﻘﻪ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻨﺪ ﺗﻮﻓﺮ اﻟﺸﺮط ﻓﻴﻪ
}
ﻻﺣﻆ ﻋﻨﺪ اﺳﺘﺨﺪام ال whileﻳﺠﺐ ان ﺗﺴﺘﺨﺪم اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ ,ﺑﻴﻦ اﻟﻘﻮﺳﻴﻦ ﺗﻜﺘﺐ اﻟﺸﺮط ﻟﺪﺧﻮل
ال whileوﻳﺠﺐ ان ﺗﺒﺪأ ال whileﺑﻘﻮس ﻣﻔﺘﻮح وﺗﻨﻬﻴﻬﺎ ﺑﻘﻮس ﻣﻐﻠﻖ آﻤﺎ هﻮ ﻣﻮﺿﺢ ﺑﺎﻟﺼﻮرة
,وﺑﻴﻦ ﻗﻮﺳﻴﻦ اﻟﺒﺪاﻳﺔ واﻟﻨﻬﺎﻳﺔ ﺗﻜﺘﺐ اﻟﻜﻮد اﻟﺬي ﺳﻴﻄﺒﻘﻪ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻨﺪ ﺗﻮﻓﺮ اﻟﺸﺮط ﻟﺪﺧﻮل
ال.while
ﻃﺒﻌﺎ ﻟﻚ ﻧﻔﻬﻢ اآﺜﺮ ﻧﻨﺘﻘﻞ ﻟﻤﺜﺎل ﻋﻤﻠﻲ ﺳﺘﻔﻬﻤﻮن ﻣﻨﻪ ان ﺷﺎء اﷲ آﻴﻔﻴﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ال while
أآﺜﺮ.
-اﻟﻤﻄﻠﻮب آﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﺠﻤﻊ اﻻﻋﺪاد ﻣﻦ ١اﻟﻰ , ١٠ﻳﻌﻨﻲ .١٠+.......+٥+٤+٣+٢+١
>1-#include <iostream
;2-using std::cout
;3-using std::endl
)(4-int main
{5-
6- ;int sum=0
7- ;int x=1
8- { ) while ( x <= 10
9- ;sum =sum+x
10- ;x=x+1
12- ;cout << "The sum is: " << sum << endl
-ﻓﻲ اﻟﺴﻄﺮ اﻟﺴﺎﺑﻊ ﻗﻤﻨﺎ ﺑﺤﺠﺰ ﻣﺴﺎﺣﻪ ﻟﻤﺘﻐﻴﺮ اﺳﻤﻴﻨﺎﻩ xوﻧﻮﻋﻪ ﻋﺪد ﺻﺤﻴﺢ,وهﺬا اﻟﻤﺘﻐﻴﺮ
ﺳﻴﻜﻮن ﻟﻨﺎ ﺑﻤﺜﺎﺑﺔ اﻟﻤﺆﺷﺮ اﻟﺬي ﻳﺆﺷﺮ ﻋﻠﻰ اﻟﻌﺪد اﻟﺬي ﻧﺼﻞ ﻟﻪ ﺑﻌﺪ ﺟﻤﻊ اي ﻋﺪد وﻃﺒﻌﺎ ﺟﻌﻠﻨﺎ
ﻗﻴﻤﺘﻪ اﻟﻤﺒﺪﺋﻴﻪ ﺑﻮاﺣﺪ ﻷﻧﻨﺎ ﻧﺮﻳﺪ ﺟﻤﻊ اﻷرﻗﺎم ﻣﻦ واﺣﺪ اﻟﻰ . ١٠وﻟﻮ اردﻧﺎ ﺟﻤﻊ اﻷﻋﺪاد ﻣﻦ ٣اﻟﻰ
١٠ﻟﺠﻌﻠﻨﺎ ﻗﻴﻤﺘﻪ اﻟﻤﺒﺪﺋﻴﺔ . ٣
-اﻟﺴﻄﺮ اﻟﺴﺎﺑﻊ :هﻨﺎ ﻧﺒﺘﺪي ال whileﻻﺣﻆ ﻳﺒﺪأ اﻟﻤﺘﺮﺟﻢ ﻓﻲ اﻟﺒﺪاﻳﺔ ﺑﺎﻟﺘﺄآﺪ ﻣﻦ اﻟﺸﺮط ,واﻟﺸﺮط
هﻨﺎ) , (x <= 10ﺳﻴﻘﺎرن اﻟﻤﺘﺮﺟﻢ ﻗﻴﻤﺔ ال xوهﻲ ﺣﺎﻟﻴﺎ واﺣﺪ وﺳﻴﻨﺘﺞ ان اﻟﺸﺮط ﺗﺤﻘﻖ ﻷن
اﻟﻮاﺣﺪ أﻗﻞ ﻣﻦ ال ﻋﺸﺮة .ﻓﺴﻴﺪﺧﻞ اﻟﺘﻜﺮار وﻳﻄﺒﻖ اﻟﺴﻄﻮر اﻟﻜﻮدﻳﺔ اﻟﺘﻲ ﺑﺪاﺧﻞ اﻟﻘﻮﺳﻴﻦ
ﻟﻞ. while
-اﻟﺴﻄﺮ اﻟﺜﺎﻣﻦ :هﻨﺎ ﺳﻴﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﺠﻤﻊ اﻟﻌﺪد اﻟﺬي ﺑﺎﻟﺨﺎﻧﻪ اﻟﻤﺴﻤﺎﻩ xﻣﻊ ﻗﻴﻤﺔ ال sum
وﺳﻴﻨﺘﺞ ١=١+٠وﺳﺘﺘﻐﻴﺮ ﻗﻴﻤﺔ ال sumاﻟﻰ واﺣﺪ .
ﺑﻌﺪهﺎ ﻳﻨﺘﻘﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻟﻠﺴﻄﺮ اﻟﺘﺎﺳﻊ وﻗﻮم ﺑﺰﻳﺎدة ﻗﻴﻤﺔ اﻟﻤﺘﻐﻴﺮ xﺑﻤﻘﺪار واﺣﺪ ﺣﺘﻰ ﻧﻨﺘﻘﻞ ﻟﻠﺮﻗﻢ ٢
وﻧﻘﻮم ﺑﺠﻤﻌﻪ ﻣﺮة أﺧﺮى .ﻻﺣﻆ ﻟﻦ ﻳﺨﺮج اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ ال whileاوﻻ ﺳﻴﻘﺎرن اﻟﺸﺮط وﻓﻌﻼ
ال ٢اﻗﻞ ﻣﻦ اﻟﻌﺸﺮة ﻓﺴﻴﺪﺧﻞ اﻟﺘﻜﺮار ﻣﺮة اﺧﺮى وﻳﻄﺒﻖ اﻟﺴﻄﻮر اﻟﺘﻲ ﺑﺪاﺧﻞ ال , whileﻓﻴﺠﻤﻊ
اﻟﻨﺎﺗﺞ وهﻮ اﻵن ﻳﺤﺘﻮي اﻟﻘﻴﻤﺔ واﺣﺪ ﺑﺎﻟﻘﻴﻤﺔ اﻟﺘﻲ ﻓﻲ اﻟﻤﺘﻐﻴﺮ xوﻳﻀﻴﻒ اﻟﻘﻴﻤﺔ اﻟﺠﺪﻳﺪة وهﻲ ٣
ﻓﻲ اﻟﻤﺘﻐﻴﺮ sumوﻳﻨﺰل ﻟﻠﺴﻄﺮ اﻟﺬي ﻳﻠﻴﻪ وهﻮ اﻟﺴﻄﺮ اﻟﺘﺎﺳﻊ وﻳﺰﻳﺪ ﻗﻴﻤﺔ ال xﺑﻤﻘﺪار واﺣﺪ
ﻓﺘﺼﺒﺢ ﻗﻴﻤﺔ ال x =3ﺛﻢ ﻳﺮﺟﻊ اﻟﺒﺮﻧﺎﻣﺞ ﻟﻞ whileوﻳﻘﺎرن اﻟﺸﺮط ﻣﺮة اﺧﺮى وﻓﻌﻼ ﻳﺘﺤﻘﻖ ﻷن
ال ٣أﻗﻞ ﻣﻦ ١٠وﻳﺪﺧﻞ ﻣﺮة اﺧﺮى داﺧﻞ ال whileوﻳﻄﺒﻖ اﻟﺴﻄﻮر اﻟﻜﻮدﻳﺔ اﻟﺘﻲ ﺑﺪاﺧﻞ ال
whileوﻳﺴﺘﻤﺮ هﻜﺬا اﻟﻰ ان ﺗﺼﻞ ﻗﻴﻤﺔ ال xاﻟﻰ ﻋﺸﺮة ﻳﻘﺎرﻧﻬﺎ ﺑﺎﻟﺸﺮط ﻓﻴﺘﺤﻘﻖ اﻟﺸﺮط ﻓﻴﻄﺒﻖ
اﻷﺳﻄﺮ اﻟﻜﻮدﻳﺔ اﻟﺘﻲ ﺑﺪاﺧﻞ ال whileهﻨﺎ ﺳﺘﺼﻞ ﻗﻴﻤﺔ ال sum =45ﻳﻀﻴﻒ ﻟﻬﺎ ﻗﻴﻤﺔ ال x
اﻟﺤﺎﻟﻴﺔ وهﻲ ١٠ﻓﻴﺼﺒﺢ ﻟﺪﻳﻨﺎ ٥٥= ٤٥+١٠ﻓﺘﺘﻐﻴﺮ ﻗﻴﻤﺔ ال sum=55ﺑﻌﺪهﺎ ﺗﺰﻳﺪ ﻗﻴﻤﺔ ال x
ﻣﻘﺪار واﺣﺪ ﻓﺘﺼﺒﺢ x=11ﻳﺮﺟﻊ اﻟﺒﺮﻧﺎﻣﺞ وﻳﻘﺎرن اﻟﺸﺮط هﻨﺎ ﻻ ﻳﺘﻄﺒﻖ اﻟﺸﺮط ﻗﻴﺨﺮج اﻟﺒﺮﻧﺎﻣﺞ
ﻣﻦ ال whileوﻳﺬهﺐ اﻟﻰ اﻟﺴﻄﺮ ١٢اﻟﻨﺎﺗﺞ ﻋﻠﻰ اﻟﺸﺎﺷﺔ .The sum is:٥٥
وهﻜﺬا ﻳﻨﺘﻬﻲ اﻟﺒﺮﻧﺎﻣﺞ وﺑﻬﺬا اﻟﻨﻤﻂ واﻟﺘﻜﺮار ﺗﻜﻮن ﻃﺮﻳﻘﺔ ﺳﻴﺮ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺄﺳﺘﺨﺪام ال while
اﺗﻤﻨﻰ ان ﺗﻜﻮن ﻗﺪ وﺻﻠﺖ اﻟﻔﻜﺮة وﺳﺄﺳﺮد أﻣﺜﻠﺔ اﺧﺮى ﻟﺘﻮﺿﻴﺢ ﻋﻤﻞ ال whileوﻟﻜﻦ ﻟﻦ ﻧﻔﺼﻞ
ﺳﻴﺮ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻬﺬا اﻟﺘﻔﺼﻴﻞ اﻟﺴﺎﺑﻖ ﻷﻧﻨﺎ ﻗﺪ ﺳﺮدﻧﺎ اﻟﺘﻔﺼﻴﻞ ﻓﻲ اﻟﻤﺜﺎل اﻷول ...
ﻣﺜﺎل :٢ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﻄﺒﺎﻋﺔ ﻣﻀﺮوب اﻟﻌﺪد ﻓﻲ ﻧﻔﺴﺔ ﻣﻦ واﺣﺪ اﻟﻰ ﻋﺸﺮة وﻃﺒﺎﻋﺔ ﻣﺠﻤﻮﻋﻬﻢ.
ﻣﺜﺎل اﻟﻨﺎﺗﺞ ﻋﻠﻰ اﻟﺸﺎﺷﺔ ﺳﻴﻜﻮن آﺎﻟﺘﺎﻟﻲ :
١
٤
٩
١٦
٢٥
٣٦
٤٩
٦٤
٨١
١٠٠
The total is :385
اﻟﺤﻞ:
>#include <iostream
;using std::cout
;using std::endl
)(int main
{
;int y // declare y
;int x = 1 // initialize x
;int total = 0 // initialize total
;cout << "Total is " << total << endl // display result
ﻣﻼﺣﻈﻪ :اﻟﺘﻌﻠﻴﻘﺎت اﻟﺘﻲ ﺑﻌﺪ ﻋﻼﻣﺔ //ﻣﺠﺮد ﺗﻌﻠﻴﻖ ﻟﻚ اﻧﺖ اي ان اﻟﺒﺮﻧﺎﻣﺞ ﻻ ﻳﻌﻄﻴﻪ اي اهﻤﻴﻪ
وﻗﺪ وﺿﺤﺖ هﺬﻩ اﻟﻨﻘﻄﻪ ﻓﻲ اﻟﺪروس اﻟﺴﺎﺑﻘﻪ ﻟﻜﻦ اﻋﺎدة هﺬﻩ اﻟﻼﺣﻈﻪ ﻟﻠﺘﻨﺒﻴﺔ ﻻ ﺗﻀﺮ ﺷﻴﺌﺎ.
آﻤﺎ ﺗﻌﻮدﻧﺎ اﻟﻴﻜﻢ هﺬا اﻟﺴﺆال اﻟﺬي اﺗﻤﻨﻰ ان ﺗﺤﺎوﻟﻮا ان ﺗﺠﺪوا اﻟﺤﻞ ﻟﻪ وهﻮ ﺳﻬﻞ ﺟﺪا وﺳﺄﺿﻴﻒ
اﺟﺎﺑﺘﻪ ﻓﻲ اﻟﺪرس اﻟﻘﺎدم ان ﺷﺎء اﷲ.
-ﻗﻢ ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺑﺄﺳﺘﺨﺪام ﻟﻐﺔ اﻟﺴﻲ ++ﻳﻘﻮم ﺑﻄﻠﺐ اﻻﺳﺎس واﻻس ﻣﻦ اﻟﻤﺴﺘﺨﺪم واﻳﺠﺎد اﻟﻨﺎﺗﺞ
.ﻣﺜﺎل
Enter base as an integer:
٣
Enter exponent as an integer
٢
Power =9
§*)§®¤*~ˆ°ﺳﺒﺤﺎﻧﻚ اﻟﻠﻬﻢ وﺑﺤﻤﺪك أﺷﻬﺪ ان ﻻ اﻟﻪ اﻻاﻧﺖ اﺳﺘﻐﻔﺮك وأﺗﻮب أﻟﻴﻚ §*(§®°ˆ~*¤
:١ اﻟﺴﺆال
ﻳﻘﻮم ﺑﻄﻠﺐ اﻻﺳﺎس واﻻس ﻣﻦ اﻟﻤﺴﺘﺨﺪم واﻳﺠﺎد اﻟﻨﺎﺗﺞ++ ﻗﻢ ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺑﺄﺳﺘﺨﺪام ﻟﻐﺔ اﻟﺴﻲ-
ﻣﺜﺎل.
Enter base as an integer:
٣
Enter exponent as an integer
٢
Power =9
: اﻟﺠﻮاب
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
int x; // base
int y; // exponent
int i; // counts from 1 to y
int power; // used to calculate x raised to power y
} // end while
ﻣﻼﺣﻈﻪ :اﻟﺘﻌﻠﻴﻘﺎت اﻟﺘﻲ ﺑﻌﺪ ﻋﻼﻣﺔ //ﻣﺠﺮد ﺗﻌﻠﻴﻖ ﻟﻚ اﻧﺖ اي ان اﻟﺒﺮﻧﺎﻣﺞ ﻻ ﻳﻌﻄﻴﻪ اي اهﻤﻴﻪ
وﻗﺪ وﺿﺤﺖ هﺬﻩ اﻟﻨﻘﻄﻪ ﻓﻲ اﻟﺪروس اﻟﺴﺎﺑﻘﻪ ﻳﻌﻨﻲ ﻟﻴﺴﺖ ﻣﻦ ﺿﻤﻦ اﻟﻜﻮد ﻟﻠﺒﺮﻧﺎﻣﺞ ...
ﺗﺴﺘﻄﻴﻊ اﺳﺘﺨﺪام ﺗﻜﺮار داﺧﻞ ﺗﻜﺮار اي while loopداﺧﻞ while loopواﻟﻤﺜﺎل اﻟﺘﺎﻟﻲ ﺳﻴﻮﺿﺢ
اﻟﻔﻜﺮﻩ.واﻳﻀﺎ ﻳﻨﻘﺴﻢ اﻟﺘﻜﺮار ﻓﻲ ال whileاﻟﻰ ﻣﺤﺪد )ﺛﺎﺑﺖ ﻟﻌﺪد ﻣﻌﻴﻦ( وﻏﻴﺮ ﻣﺤﺪد ﻳﺤﺪدﻩ اﻟﻤﺴﺘﺨﺪم ﻓﺎﻟﺮﻗﻢ
ﻟﻠﺘﻜﺮار ﻓﻲ اﻟﻐﻴﺮ اﻟﻤﺤﺪد ﻟﻴﺲ ﺛﺎﺑﺖ ﻳﺘﺤﻜﻢ ﻓﻴﻪ اﻟﻤﺴﺘﺨﺪم وهﺬا اﻷﻓﻀﻞ ﺣﻴﺚ ﻳﻜﻮن اآﺜﺮ ﻣﺮوﻧﻪ .وﺳﻨﻮﺿﺢ
اﻟﺤﺎﻟﺘﻴﻦ ﺳﻨﺒﺪأﺑﺎﻟﻤﺤﺪد وﻣﻦ ﺛﻢ اﻟﻐﻴﺮ ﻣﺤﺪد.
ﻣﻄﻠﻮب ﻋﻤﻞ ﺑﺮﻧﺎﻣﺞ ﺑﺄﺳﺘﺨﺪام ﻟﻐﺔ اﻟﺴﻲ ++ﻳﻘﻮم هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﺑﺤﺴﺎب اﻟﻤﺘﻮﺳﻂ ﻟﺪرﺟﺎت ٥٠٠ﻃﺎﻟﺐ وﻳﺠﺐ
ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ ان ﻳﻄﻠﺐ ﻣﻦ اﻟﻤﺴﺘﺨﺪم ادﺧﺎل اﻟﺪرﺟﺎت وﻳﺘﺄآﺪ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ ان اﻟﺪرﺟﻪ اﻟﺘﻲ ﺗﻢ ادﺧﺎﻟﻬﺎ ﺑﻴﻦ
اﻟﺼﻔﺮ وال ١٠٠وﻻ ﺗﺘﺠﺎوز هﺬا اﻟﺤﺪ.
>#include <iostream
;using std::cout
;using std::cin
;using std::endl
)(int main
{
;Float grade,total=0,avg
;int count=1
)While(count<=500
{
;"cout<<"please enter the grade
;cin>>grade
)while(grade<0 || grade>100
{
;total+=grade
;count++
}//first while
;avg=total/500
اﻟﺸﺮح:
ﻧﻼﺣﻆ ﻓﻲ هﺬا اﻟﺴﺆال اﻟﻌﺪد ﻣﺤﺪد ل ٥٠٠ﻃﺎﻟﺐ اي ان اﻟﺘﻜﺮار ﺳﻴﻜﻮن ٥٠٠ﻣﺮة ﺳﻨﻘﻮم ﺑﺸﺮح اﻻﺟﺰاء اﻟﺘﻲ
ﺗﺘﻌﻠﻖ ﺑﺪرﺳﻨﺎ اﻟﻴﻮم واﻟﺒﻘﻴﺔ ﺷﺮﺟﻨﺎهﻢ ﻓﻲ دروس ﺳﺎﺑﻘﻪ.
ﻻﺣﻆ ﻓﻲ اﻟﺒﺪاﻳﺔ ﺣﺠﺰﻧﺎ ﺧﺎﻧﺔ ﻟﻤﺘﻐﻴﺮ اﺳﻤﻴﻨﺎﻩ ال countﻟﻚ ﻳﺴﻴﺮ ﻟﻨﺎ اﻟﻌﺪ ﻓﻔﻲ اﻟﺒﺪاﻳﻪ آﺎﻧﺖ ﻗﻴﻤﺘﻪ واﺣﺪ ﻓﻤﺮ ﻋﻠﻰ
ال whileﺗﺄآﺪ ﻣﻦ ﺗﺤﻘﻖ اﻟﺸﺮط واﻟﺸﺮط هﻮ ان ﻗﻴﻤﺔ ال countﻻ ﺗﺰﻳﺪ ﻋﻦ ٥٠٠ﻷﻧﻨﺎ ﻧﺮﻳﺪ اﻟﺘﻜﺮار ٥٠٠
ﻣﺮﻩ ﻓﻘﻂ,ﺑﻌﺪهﺎ ﻳﻄﻠﺐ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻤﺴﺘﺨﺪم ان ﻳﺪﺧﻞ ﻟﻪ اﻟﺪرﺟﻪ وﻣﻦ ﺛﻢ ﻳﻨﺘﻘﻞ اﻟﻰ ال whileاﻟﺪاﺧﻠﻴﻪ اﻟﺘﻲ
ﻳﻘﻮم ﺑﺎﻟﺪﺧﻮل ﻟﻬﺎ اذا ﺗﺤﻘﻖ ﺷﺮﻃﻬﺎ وهﻮ ان ﺗﻜﻮن اﻟﺪرﺟﻪ اﻟﺘﻲ ادﺧﻠﻬﺎ اﻟﻤﺴﺘﺨﺪم اآﺒﺮ ﻣﻦ ﻣﺌﻪ او اﺻﻐﺮ ﻣﻦ
ﺻﻔﺮ ,ﻃﺒﻌﺎ اذا ﺗﺤﻘﻖ هﺬا اﻟﺸﺮط هﺬا ﻳﻌﻨﻲ ان اﻟﻤﺴﺘﺨﺪم اﺧﻞ درﺟﻪ ﺧﺎﻃﺌﻪ ﻓﻴﻄﻠﺐ ﻣﻨﻪ اﻟﺒﺮﻧﺎﻣﺞ اﻋﺎدة ادﺧﺎل
اﻟﺪرﺟﻪ آﻤﺎ ﺗﺮون داﺧﻞ ال whileاﻟﺪاﺧﻠﻴﺔ وﻻ ﻳﻨﺘﻘﻞ ﺧﺎرج ال whileاﻟﺪاﺧﻠﻴﺔ اﻻ اذا ادﺧﻞ درﺟﻪ ﺻﺤﻴﺤﻪ هﻨﺎ
ﻧﻀﻤﻦ ان ﺟﻤﻴﻊ اﻟﺪرﺟﺎت ﺻﺤﻴﺤﻪ ,ﻓﺄذا ادﺧﻞ اﻟﻤﺴﺘﺨﺪم درﺟﻪ ﻓﻲ ﺣﺪود ١٠٠-٠هﻨﺎ ﻳﻨﺘﻘﻞ اﻟﻤﺘﺮﺟﻢ اﻟﻰ ﺟﻤﻊ
اﻟﺪرﺟﻪ ﻟﻠﺤﺼﻮل ﻋﻠﻰ اﻟﻤﺠﻤﻮع وﻗﺪ ﺷﺮﺣﻨﺎ هﺬا ﺑﺎﻟﺘﻔﺼﻴﻞ ﻓﻲ درس ﺳﺎﺑﻖ وﻣﻦ ﺛﻢ ﻳﺰﻳﺪ ﻗﻴﻤﺔ ال countﺑﻤﻘﺪار
واﺣﺪ.
رﺑﻤﺎ ﻳﺘﺒﺎدر اﻟﻰ ذهﻨﻜﻢ ﻣﺎ هﺬا ; total+=gradeﻃﺒﻌﺎ هﺬا ﻳﺴﺎوي total=total+gradeوﻟﻜﻦ اﺧﺘﺼﺎرا
آﺘﺒﻨﺎهﺎ ﺑﺎﻟﻄﺮﻳﻘﺔ اﻟﺴﺎﺑﻘﻪ واﻳﻀﺎ ; count++ﺗﻌﻨﻲ ; count =count+1وﻟﻜﻦ اﺧﺘﺼﺮﻧﺎهﺎ ﺑﺎﻟﻄﺮﻳﻖ اﻟﺴﺎﺑﻘﺔ .
دﻋﻮﻧﺎ ﻧﺘﺪرب ﻋﻠﻰ هﺬﻩ اﻻﺧﺘﺼﺎرات:
ﺑﻌﺪ ان ﻳﺠﻤﻊ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺪرﺟﻪ ﻓﻲ ال totalوﻳﺰﻳﺪ ﻗﻴﻤﺔ ال countﺑﻤﻘﺪار واﺣﺪ ﻳﻌﻴﺪ هﺬﻩ اﻟﺨﻄﻮات اﻟﻰ ان
ﻳﺼﺒﺢ ﻣﻘﺎر ال count=500ﻋﻨﺪهﺎ ﻳﺨﺮج ﻣﻦ ال whileوﻳﺬهﺐ ﻟﻴﻘﻮم ﺑﻘﺴﻢ اﻟﻤﺠﻤﻮع ﻟﻠﺪرﺟﺎت ﻋﻠﻰ ٥٠٠
ﻟﻠﺤﺼﻮل ﻋﻠﻰ اﻟﻤﺘﻮﺳﻂ وﻣﻦ ﺛﻢ ﻳﻘﻮم ﺑﻄﺒﺎﻋﺘﻪ ...
ﻻﺣﻆ ﺟﻌﻠﻨﺎ اﻟﻌﻤﻠﻴﻪ اﻟﺤﺴﺎﺑﻴﺔ ﻷﻳﺠﺎد اﻟﻤﺘﻮﺳﻂ ﺧﺎرج ال whileﻷﻧﻨﺎ ﻧﺮﻳﺪ اﻟﻤﺠﻤﻮع ﻟﻠﺪرﺟﺎت واذا وﺿﻌﻨﺎ
اﻟﻌﻤﻠﻴﺔ ﻷﻳﺠﺎد اﻟﻤﺘﻮﺳﻂ ; avg=total/500ووﺿﻌﻨﺎ اﻳﻀﺎ ;cout<<"the average is "<<avg
هﻨﺎ ﺳﻴﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﺄﻳﺠﺎد اﻟﻤﺘﻮﺳﻂ وﻃﺒﺎﻋﺘﻪ ﻓﻲ آﻞ ﻣﺮة ﻳﺪﺧﻞ ﻓﻴﻬﺎ ﻟﻞ whileﻳﻌﻨﻲ ﺧﻤﺴﻤﺎﺋﺔ ﻣﺮة وﻃﺒﻌﺎ هﺬا
ﻻ ﻳﻌﻄﻴﻨﺎ اﻟﻤﻄﻠﻮب ﻟﺬﻟﻚ وﺿﻌﻨﺎﻩ ﺑﺎﻟﺨﺎرج ﻟﻚ ﻋﻨﺪﻣﺎ ﻳﻨﺘﻬﻲ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﻤﺠﻤﻮع ﻳﻘﻮم ﺑﺄﻳﺠﺎد
اﻟﻤﺘﻮﺳﻂ وﻃﺒﺎﻋﺘﻪ ....وهﻨﺎ ﺳﻴﻄﺒﻊ ﻣﺮﻩ واﺣﺪﻩ.
اﺗﻤﻨﻰ ان ﺗﻜﻮﻧﻮا ﻗﺪ ﻓﻬﻤﺘﻢ آﻴﻒ ﻳﻜﻮن اﻟﺘﻜﺮار ﻣﺤﺪد وهﻮ ﻳﺘﻤﺜﻞ ﻓﻲ ﺗﺤﺪﻳﺪ ﻗﻴﻤﺔ ﻟﻠﺘﻜﺮار وﻓﻲ ﻣﺜﺎﻟﻨﺎ هﺬا آﺎﻧﺖ
٥٠٠وﺟﻌﻠﻨﺎ ال countآﻤﺆﺷﺮ ﻳﻌﺪ ﻟﻨﺎ ٥٠٠ﻣﺮة.
ﻣﻄﻠﻮب ﻋﻤﻞ ﺑﺮﻧﺎﻣﺞ ﺑﺄﺳﺘﺨﺪام ﻟﻐﺔ اﻟﺴﻲ ++ﻳﻘﻮم هﺬا اﻟﺒﺮﻧﺎﻣﺞ ﺑﺤﺴﺎب اﻟﻤﺘﻮﺳﻂ ﻟﺪرﺟﺎت ﻋﺪد ﻏﻴﺮ ﻣﺤﺪد ﻣﻦ
اﻟﻄﻼب ﻳﺘﺤﻜﻢ ﻓﻲ هﺬا اﻟﻌﺪد اﻟﻤﺴﺘﺨﺪم وﻳﺠﺐ ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ ان ﻳﻄﻠﺐ ﻣﻦ اﻟﻤﺴﺘﺨﺪم ادﺧﺎل اﻟﺪرﺟﺎت وﻳﺘﺄآﺪ
اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ ان اﻟﺪرﺟﻪ اﻟﺘﻲ ﺗﻢ ادﺧﺎﻟﻬﺎ ﺑﻴﻦ اﻟﺼﻔﺮ وال ١٠٠وﻻ ﺗﺘﺠﺎوز هﺬا اﻟﺤﺪ.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int main()
{
Float grade,total=0,avg;
int count=0;
while(grade!=-1)
{
while(grade<0 || grade>100)
{
} //second while
total+=grade;
count++;
}//first while
Arg=total/count;
:اﻟﺸﺮح
ﻧﻼﺣﻆ ﻓﻲ هﺬا اﻟﺴﺆال اﻟﺘﻜﺮار ﻏﻴﺮ ﻣﺤﺪد اي ﻳﺪﺧﻞ اﻟﻤﺴﺘﺨﺪم درﺟﺎت اﻟﻰ ان ﻳﻜﺘﻔﻲ وﻳﻄﻠﺐ اﻧﻬﺎء
...اﻟﺒﺮﻧﺎﻣﺞ
ﻷﻧﻬﺎء١- ﻓﻲ اﻟﺒﺪاﻳﺔ ﺳﻴﻄﻠﺐ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻤﺴﺘﺨﺪم ادﺧﺎل اول درﺟﺔ أو,ﺗﺎﺑﻊ ﻣﻌﻲ اﻟﺒﺮﻧﺎﻣﺞ
أي, ١- اﻟﺒﺮﻧﺎﻣﺞ هﻨﺎ ﺟﻌﻠﻨﺎ اﻷﺷﺎرة اﻟﺘﻲ ﻧﻌﺮف اذا اآﺘﻔﻰ اﻟﻤﺴﺘﺨﺪم ﻣﻦ أدﺧﺎل اﻟﺪرﺟﺎت ام ﻻ هﻲ
وﺳﻴﻨﺘﻬﻲ اﻟﺒﺮﻧﺎﻣﺞ١- ﻋﻨﺪﻣﺎ ﻳﻨﺘﻬﻲ ﻣﻦ ادال اﻟﺪرﺟﺎت وﺗﻈﻬﺮ ﻟﻪ رﺳﺎﻟﻪ ادﺧﺎل اﻟﺪرﺟﻪ ﻳﺪﺧﻞ
.وﻳﻌﻄﻴﻪ اﻟﻤﺘﻮﺳﻂ
وأﺧﺘﺮﻧﺎ ١-ﻷن ﻻ ﻳﻤﻜﻦ ان ﺗﻮﺟﺪ درﺟﻪ ﺑﺎل ١-وﺗﺴﺘﻄﻴﻊ اﺧﺘﻴﺎر اي ﺷﻲء ﻣﺎﻋﺪا ان ﻳﻜﻮن ﻣﻦ
ﺿﻤﻦ اﻟﺪرﺟﺎت .١٠٠-٠
ﺑﻌﺪ ان ﻳﺪﺧﻞ اﻟﻤﺴﺘﺨﺪم درﺟﺔ اﻟﻄﺎﻟﺐ ﻳﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ال whileﺑﺎﻟﺘﺄآﺪ ﻣﻦ ان اﻟﺪرﺟﺔ ﻟﻴﺴﺖ
١-واذا آﺎﻧﺖ ١-ﻳﻘﻒ اﻟﺒﺮﻧﺎﻣﺞ وﻳﻌﻄﻲ اﻟﻤﺘﻮﺳﻂ .اذا ﻟﻢ ﺗﻜﻦ ١-ﻳﺪﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ داﺧﻞ ال while
اﻷوﻟﻰ وﻣﻦ ﺛﻢ ﻳﺪﺧﻞ داﺧﻞ ال whileاﻟﺜﺎﻧﻴﺔ اﻟﺘﻲ ﺗﺘﺄآﺪ ﻣﻦ ان اﻟﺪرﺟﻪ ﻣﻦ ١٠٠-٠وان ادﺧﻞ
اﻟﻤﺴﺘﺨﺪم درﺟﻪ ﺧﺎرج هﺬا اﻟﻨﻄﺎق ﻳﺒﻘﻰ اﻟﺒﺮﻧﺎﻣﺞ داﺧﻞ ال whileوﻳﻄﻠﺐ ﻣﻦ اﻟﻤﺴﺘﺨﺪم ادﺧﺎل
درﺟﻪ ﺻﺤﻴﺤﻪ وﻣﻦ ﺛﻢ ﺑﻌﺪ ادﺧﺎل درﺟﺔ ﺻﺤﻴﺤﻪ ﻳﻨﺘﻘﻞ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻰ ﺟﻤﻊ اﻟﺪرﺟﻪ ﻣﻊ اﻟﻤﺠﻤﻮع
وزﻳﺎدة ال countﺑﻤﻘﺪار واﺣﺪ .ﻗﺪ ﺗﺴﺄل ﻧﻔﺴﻚ هﻨﺎ ﻻ ﻧﺤﺘﺎج countﻟﺘﺴﻴﻴﺮ اﻟﺒﺮﻧﺎﻣﺞ وﺗﺤﺪﻳﺪ
ﻗﻴﻤﺔ اﻟﺘﻜﺮار ﻟﻦ اﻟﻌﺪد ﻏﻴﺮ ﻣﺤﺪد واﻟﻤﺴﺘﺨﺪم هﻮ اﻟﺬي ﻳﺤﺪد اﻟﻌﺪد .ﻟﻜﻨﻨﺎ وﺿﻌﻨﺎ ال countهﻨﺎ
ﻷﻧﻨﺎ ﻧﺮﻳﺪ ﻣﻌﺮﻓﺔ آﻢ ﻋﺪد اﻟﺪرﺟﺎت اﻟﺘﻲ ادﺧﻠﺖ ﻷﻧﻨﺎ ﻧﺤﺘﺎج ﻗﻴﻤﺔ ال countﻟﺤﺴﺎب اﻟﻤﺘﻮﺳﻂ ﻷن
اﻟﻤﺘﻮﺳﻂ ﻋﺒﺎرﻩ ﻋﻦ ﻣﺠﻤﻮع اﻟﺪرﺟﺎت ﻋﻠﻰ ﻋﺪدهﺎ.ﻣﺠﻤﻮع اﻟﺪرﺟﺎت ﻧﺤﺼﻞ ﻋﻠﻴﻪ ﻣﻦ الtotal
وﻋﺪدهﺎ ﻣﻦ ال countﺑﻌﺪهﺎ وﺿﻌﻨﺎ
ﺗﺨﻴﻞ ﻟﻮ اﻧﻨﺎ ﻟﻢ ﻧﻀﻊ هﺬﻩ اﻟﺠﻤﻠﻪ اﺧﺮ ال whileاﻷوﻟﻰ ﻟﻜﺎن اﻟﺒﺮﻧﺎﻣﺞ ﺑﻌﺪ ان ﻳﻨﺘﻬﻲ ﻣﻦ زﻳﺎدة
ال countﺑﻮاﺣﺪ ﻟﺮﺟﻊ ﻟﻞ whileاﻷوﻟﻰ وﻃﺒﻌﺎ ﻗﻴﻤﺘﺔ ال gradeﺳﺘﺒﻘﻰ ﻗﻴﻤﺔ ال gradeاﻷوﻟﻰ
وﻟﻦ ﺗﺘﻐﻴﺮ وﺳﻴﻜﻮن اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﺗﻜﺮار ﻏﻴﺮ ﻣﻨﺘﻬﻲ ﻣﻤﺎ ﻳﺴﺒﺐ ﻣﺸﻜﻠﺔ آﺒﻴﺮة وﻟﻦ ﻳﻌﻄﻴﻨﺎ اﻟﻤﺘﻮﺳﻂ
اﺑﺪا..ﻷﻧﻨﺎ ﻟﻢ ﻧﻌﻄﻲ اﻟﻤﺴﺘﺨﺪم ﻣﺠﺎل ﻷدﺧﺎل درﺟﺔ أﺧﺮى.
ﻟﻜﻦ ﻣﻊ وﺿﻊ هﺬﻳﻦ اﻟﺴﻄﺮﻳﻦ ﻳﺴﻄﻠﺐ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻤﺴﺘﺨﺪم ادﺧﺎل درﺟﺔ ﺟﺪﻳﺪﻩ وﻳﺮﺟﻊ
ﻟﻞ whileاﻷوﻟﻰ وﻳﺘﺄآﺪ ﻣﺎ اذا آﺎن اﻟﺸﺮط ﺻﺤﻴﺢ وان اﻟﺪرﺟﻪ ﻻ ﺗﺴﺎوي ١-واذا آﺎﻧﺖ ١-
ﻳﺘﻮﻗﻒ وﻳﻌﻄﻲ اﻟﻤﺘﻮﺳﻂ.اﻣﺎ اذا آﺎﻧﺖ ﻻ ﺗﺴﺎوي ١-دﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻰ ال whileاﻟﺜﺎﻧﻴﺔ وﺗﺄآﺪ ﻣﻦ
ان اﻟﺪرﺟﻪ ﻓﻲ اﻟﻨﻄﺎق ١٠٠-٠وﺑﻌﺪهﺎ ﺟﻤﻊ اﻟﺪرﺟﻪ اﻟﺠﺪﻳﺪﻩ ﻣﻊ اﻟﻤﺠﻤﻮع اﻟﺴﺎﺑﻖ وزاد ﻗﻴﻤﺔ
ال countﺑﻮاﺣﺪ وﻳﻄﻠﺐ اﻟﺒﺮﻧﺎﻣﺞ ﻣﺮة اﺧﺮى ﻣﻦ اﻟﻤﺴﺘﺨﺪم ادﺧﺎل درﺟﺔ ﺟﺪﻳﺪﻩ ﻓﺄذا آﺎﻧﺖ ١-
ﺗﻮﻗﻒ واﻋﻄﻰ اﻟﻤﺘﻮﺳﻂ واذا آﺎﻧﺖ ﻏﻴﺮ ذﻟﻚ واﺻﻞ ﻣﺎ ﻗﻠﻨﺎﻩ ﺳﺎﺑﻘﺎ وهﻜﺬا ﻳﺴﺘﻤﺮ اﻟﺒﺮﻧﺎﻣﺞ ﺣﺘﻰ
ﻳﺪﺧﻞ اﻟﻤﺴﺘﺨﺪم . ١-ﻓﻘﻂ ﻋﻨﺪهﺎ ﻳﺘﻮﻗﻒ وﻳﻌﻄﻲ اﻟﻤﺘﻮﺳﻂ واﻻ ﻳﺒﻘﻰ ﻣﺴﺘﻤﺮ ﻓﻲ أﺧﺬ اﻟﺪرﺟﺎت
وﺟﻤﻌﻬﺎ .
ﺑﻌﺪ ادﺧﺎل ١-ﻳﺨﺮج اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ ال whileوﻳﻘﺴﻢ اﻟﻤﺠﻤﻮع ﻟﻠﺪرﺟﺎت ﻋﻠﻰ ﻋﺪدهﺎ اﻟﺬي ﻳﺘﻤﺜﻞ
ﻓﻲ ال countوﻳﻌﻄﻲ اﻟﻤﺘﻮﺳﻂ وﻳﻄﺒﻌﻪ ﻋﻠﻰ اﻟﺸﺎﺷﺔ.
اﻟﻔﺮق ﺑﻴﻦ اﻟﻤﺜﺎل اﻷول واﻟﺜﺎﻧﻲ اي ﺑﻴﻦ اﻟﺘﻜﺮار اﻟﻤﺤﺪد واﻟﻐﻴﺮ ﻣﺤﺪد ان ﻓﻲ اﻷول ﻗﻴﻤﺔ اﻟﺘﻜﺮار
ﺗﺤﺪد ﻓﻲ ال whileاﻷوﻟﻰ أﻣﺎ ﻓﻲ اﻟﺜﺎﻧﻲ اﻟﺸﺮط اﻟﺬي ﻳﻮﻗﻒ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻮﺿﻊ ﻓﻲ ال while
اﻷوﻟﻰ وﻃﺒﻌﺎ ﻓﻲ اﻟﺘﻜﺮار اﻟﻐﻴﺮ ﻣﺤﺪد ﻻ ﺗﻨﺴﻰ ﻣﻦ وﺿﺢ coutﻟﻚ ﺗﺨﺒﺮ اﻟﻤﺴﺘﺨﺪم ﺑﺄدﺧﺎل ﻗﻴﻤﺔ
ﺟﺪﻳﺪﻩ و cinﻟﻚ ﺗﺤﻔﻆ هﺬﻩ اﻟﻘﻴﻤﺔ ﻓﻲ اﻟﻤﺘﻐﻴﺮ اﻟﻤﺨﺼﺺ ﻟﻬﺎ آﻤﺎ ﻓﻌﻠﻨﺎ ﻓﻲ هﺬﻳﻦ اﻟﺴﻄﺮﻳﻦ
;")cout<<"please enter the student grade(enter -1 to end
;cin>>grade
....... أرﺟﻮ ان ﻳﻜﻮن اﻟﻔﺮق واﺿﺢ ﻟﺪﻳﻜﻢ
اﻵن ﻧﻨﺘﻘﻞ ﳌﺜﺎل ﻗﻤﻨﺎ ﲝﻠﻪ ﺳﺎﺑﻘﺎ ﻟﻜﻦ ﺑﺪون اﺳﺘﺨﺪام اﻟﺘﻜﺮار وآﺎن ﻷدﺧﺎل رﻗﻢ
واﺣﺪ ﻓﻘﻂ ﻃﺒﻌﺎ آﺎن ﺑﺮﻧﺎﻣﺞ ﻏﲑ ﻣﺮن ﻟﻸﻧﻪ ﺑﻌﺪ ان ﻳﻌﻄﻴﻚ ﻧﺘﻴﺠﺔ ﻋﺪد واﺣﺪ
ادﺧﻠﺘﻪ ﻳﻨﺘﻬﻲ ﻋﻤﻠﻪ اﻧﻈﺮوا ﻟﻠﱪﻧﺎﻣﺞ ﺑﻌﺪ ﺗﻄﻮﻳﺮﻩ ﺑﺄﺳﺘﺨﺪام اﻟﺘﻜﺮار وﻗﺎرﻧﻮا
......ﺑﻴﻨﻬﻢ واﻧﻈﺮوا اﻟﻔﺮق
Question1: write a program that reads integers and determine whether it is odd or
even. (Hint: use the modulus operator .an even number is a multiple of two. any
multiple of two leaves a reminder of zero when divide by 2).
Make sure to make this program for non fix number.
ﻳﻘﻮم ﺑﺄدﺧﺎل اﻋﺪاد ﺻﺤﻴﺤﻪ وﻓﻲ آﻞ ﻣﺮﻩ ﻳﺪﺧﻞ اﻟﻤﺴﺘﺨﺪم ﻋﺪدC++ ﻗﻢ ﺑﻜﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﺑﺄﺳﺘﺨﺪام ﻟﻐﺔ ال:٣ اﻟﺴﺆال
ﻟﺘﺴﺎﻋﺪك ﻓﻲ اﻟﺤﻞ واي ﻋﺪد زوﺟﻲ% اﺳﺘﺨﺪم:ﻳﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ ﺑﺘﺤﺪﻳﺪ اذا آﺎن اﻟﻌﺪد ﻓﺮدي او زوﺟﻲ )ﻣﻼﺣﻈﻪ
( ﻳﻜﻮن اﻟﺒﺎﻗﻲ داﺋﻤﺎ ﺻﻔﺮا٢ ﻳﻘﺴﻢ ﻋﻠﻰ
........ ﺑﻬﺬﻩ اﻟﻤﻼﺣﻈﻪ اﺻﺒﺤﺖ اﻟﻔﻜﺮة ﺟﺎهﺰة ﻟﻜﻢ
#include <iostream.h >
int main ( )
{
char flag=y
int number ;
while(flag!=n)
{
cout << " please enter the number : " ;
cin >>number ;
if (number % 2 == 0 )
cout <<" \n The number is even " ;
else (number % 2 == 1 )
cout << " \n The number is odd " ;
}
; return 0
}
ﻧﺼﻞ هﻨﺎ ﻟﻨﻬﺎﻳﺔ اﻟﺪرس اﻟﺴﺎﺑﻊ واﻧﻬﺎء دراﺳﺔ ال whileارﺟﻮ ان ﺗﻜﻮﻧﻮا ﻗﺪ ﻓﻬﻤﺘﻮهﺎ ﺟﻴﺪا ﻓﻬﻲ ﺟﻤﻠﺔ ﻣﻔﻴﺪﻩ ﺟﺪا
وﺳﻨﻨﺘﻘﻞ ﻓﻲ اﻟﺪرس اﻟﻘﺎدم ﺑﺄذن اﷲ اﻟﻰ ال.. for loop
اﻟﻰ ذﻟﻚ اﻟﺤﻴﻦ دﻣﺘﻢ ﺑﺨﻴﺮ وﻋﺎﻓﻴﻪ واﻟﺴﻼم ﻋﻠﻴﻜﻢ ورﺣﻤﺔ اﷲ وﺑﺮآﺎﺗﻪ.
§*)§®¤*~ˆ°ﺳﺒﺤﺎﻧﻚ اﻟﻠﻬﻢ وﺑﺤﻤﺪك أﺷﻬﺪ ان ﻻ اﻟﻪ اﻻاﻧﺖ اﺳﺘﻐﻔﺮك وأﺗﻮب أﻟﻴﻚ §*(§®°ˆ~*¤
ﻧﺒﺪأ اﻟﻴﻮم ان ﺷﺎء اﷲ ﺑﺸﺮح ﺟﻤﻠﻪ ﻣﻦ اروع واﺷﻬﺮ ﺟﻤﻞ اﻟﺘﻜﺮار واآﺜﺮهﻢ اﺳﺘﺨﺪاﻣﺎ وهﻲ ال.. for loopهﻲ
ﺟﻤﻠﻪ ﺗﺄﺧﺬ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ..
)for ( initial value ; condition ; increment or decrement
}{ your statment
ﻻﺣﻆ ﻓﻲ اﻟﺸﻜﻞ اﻟﻌﺎم ﻟﻞ forﻳﺘﺨﻠﻞ آﻞ ﺟﺰء ﻋﻼﻣﺔ ; ﻳﺠﺐ ان ﺗﻀﻌﻬﺎ آﻤﺎ وﺿﺤﺘﻬﺎ ﺑﺎﻟﺸﻜﻞ وداﺧﻞ اﻟﻘﻮﺳﻴﻦ
ﺗﻀﻊ اﻻﺳﻄﺮ اﻟﺘﻲ ﺗﺮﻳﺪ ان ﻳﻨﻔﺬهﺎ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ آﻞ ﻣﺮﻩ ﻳﺪﺧﻞ ﻓﻴﻬﺎ اﻟﺘﻜﺮار.
: (initial value) -١هﻨﺎ ﻧﻜﺘﺐ ﻧﻘﻄﺔ اﻟﺒﺪاﻳﺔ اﻟﺘﻲ ﺳﻴﻨﻄﻠﻖ ﻣﻨﻬﺎ اﻟﻌﺪاد ﻓﻲ اﻟﺠﻤﻠﻪ forﻻﺣﻆ ﻓﻲ هﺬا اﻟﺠﺰء
ﺗﺴﺘﻄﻴﻊ ان ﺗﻌﺮف اﻟﻤﺘﻐﻴﺮ اﻟﺬي ﺳﺘﺴﺘﺨﺪﻣﻪ آﻌﺪاد وﺗﺴﺘﻄﻴﻊ اﻳﻀﺎ اﻋﻄﺎﺋﻪ ﻗﻴﻤﺔ اﺑﺘﺪاﺋﻴﻪ ﻣﺜﺎلint i=0 :
ﻻﺣﻆ ﻓﻲ هﺬا اﻟﻤﺜﺎل ﻋﺮﻓﻨﺎ اﻟﻤﺘﻐﻴﺮ iﺑﺎﻧﻪ ﻋﺪد ﺻﺤﻴﺢ intواﻳﻀﺎ اﻋﻄﻴﻨﺎﻩ ﻗﻴﻤﻪ اﺑﺘﺪاﺋﻴﻪ وهﻲ .٠
: (condition) -٢هﻨﺎ ﺗﻜﺘﺐ اﻟﻘﺎﻋﺪﻩ اﻟﺘﻲ ﻳﺘﻮﻗﻒ ﻋﻨﺪهﺎ اﻟﻌﺪ ﻋﻨﺪ اﻟﻮﺻﻮل ﻟﻬﺎ ﻣﺜﺎل i<=10 :وهﻨﺎ ﻳﺘﻮﻗﻒ
اﻟﻌﺪ ﻋﻨﺪﻣﺎ ﻳﺼﻞ اﻟﻰ ﻋﺪد اآﺒﺮ ﻣﻦ ١٠ﻳﻌﻨﻲ ﻳﺴﺘﻤﺮ ﻓﻲ اﻟﻌﺪ ﻃﺎﻟﻤﺎ ال iاﻗﻞ ﻣﻦ او ﻳﺴﺎوي اﻟﻌﺸﺮﻩ.
: (increment or decrement) -٣هﻨﺎ ﻧﻜﺘﺐ آﻴﻒ ﻧﺮﻳﺪ ان ﻳﺴﻴﺮ اﻟﻌﺪ ﺗﺼﺎﻋﺪي او ﺗﻨﺎزﻟﻲ اي
increment or decrementﻣﺜﺎل i++ﻳﺰﻳﺪ ﻗﻴﻤﺔ ال iآﻞ ﻣﺮﻩ ﺑﻤﻘﺪار واﺣﺪ و i--ﻳﻘﻠﻞ ﻗﻴﻤﺔ ال i
ﺑﻤﻘﺪار واﺣﺪ.
;using std::cout
;using std::endl
)(int main
{
) for ( int counter = 1; counter <= 10; counter++
;cout << counter << endl
;return 0
}
اﻟﻤﻄﻠﻮب آﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﻄﺒﺎﻋﺔ اﻟﻤﺘﻮﺳﻂ ل ١٠٠ﻃﺎﻟﺐ واﻳﺠﺎد اﻗﻞ درﺟﻪ ﺑﻴﻦ اﻟﻄﻼب واﻋﻠﻰ درﺟﻪ
وﻃﺒﺎﻋﺘﻬﻢ:
>#include <iostream
;using std::cout
;using std::endl
)(int main
;{float total=0,max=0,min=100,avg
) for ( int counter = 1; counter <= 100; counter++
;{ cout << "enter the grade" << endl
;cin>>grade
;total=total+grade
)if(grade>max
};{ max=grade
)If(grade<min
};{min=grade
}
;Avg=total/100
;`Cout>>"the average is ">>avg>>end
;Cout>>"the maximum grade is">>max>>end1
;Cout>>"the minimum grade is">>min>>end1
;return 0
}
ﻧﺄﺧﺬ ﻣﺜﺎل ﺁﺧﺮ ﺑﺮﻧﺎﻣﺞ ﻳﻘﻮم ﺑﺠﻤﻊ اﻻﻋﺪاد اﻟﺰوﺟﻴﺔ ﻣﻦ ٠اﻟﻰ ال-:١٠٠
>#include <iostream
;using std::cout
;using std::endl
)(int main
{
;int sum = 0
هﻨﺎ ﻧﺼﻞ اﻟﻰ ﻧﻬﺎﻳﺔ درس ال forاﻟﺬي اﺗﻤﻨﻰ ان ﻳﻜﻮن درس ﻣﻔﻴﺪ ﻟﻜﻢ ........اﺗﺮآﻜﻢ ﺑﺮﻋﺎﻳﺔ اﷲ وﺣﻔﻈﻪ ﺣﺘﻰ
اﻟﺪرس اﻟﻘﺎدم...
اﻟﻰ ذﻟﻚ اﻟﺤﻴﻦ دﻣﺘﻢ ﺑﺨﻴﺮ وﻋﺎﻓﻴﻪ واﻟﺴﻼم ﻋﻠﻴﻜﻢ ورﺣﻤﺔ اﷲ وﺑﺮآﺎﺗﻪ.
§*)§®¤*~ˆ°ﺳﺒﺤﺎﻧﻚ اﻟﻠﻬﻢ وﺑﺤﻤﺪك أﺷﻬﺪ ان ﻻ اﻟﻪ اﻻاﻧﺖ اﺳﺘﻐﻔﺮك وأﺗﻮب أﻟﻴﻚ §*(§®°ˆ~*¤
اﻟﺴﻴﺮة اﻟﺬاﺗﻴﺔ
א
c c++ א : א א
C++ א א
א א
א א
א
public
protected
private
א ، א א א א א
. א א א
C ، א א
( constructor ) א א א א ++
א א . א א א
. א א א
: (Inheritance ) א
. א א א
.
parent ) א א (derived class ) א א
א א א א (class
. א א א א ، א א
א א א א א א
א א א א ، א א א
.
.
) :(Objects א
א א א ، א א א
א א א
.
א א א א א א
.
א א א א א ، א א א
. אא
א א א א א ) ( voidא א א
א א א א ،
. אא
א א א
א ، א א א א
א א א א א א א א
א א א ، א א
א א א ) << ( א ) (coutא א
א
cout ﺍﻟﺤﺭﻓﻲ
<<
) :( preprocessor directives א
א א א ) >(#include <iostream.h א א א
א א א א
. א
א ) (#א א א א
א א . א
א א א א א א א א
.
) :(Comments א
. א א א א
א א
. א א א א
א א C++
. א א
א א א " " // א א א א
. א
. א " "// א א א א
" " // א א
א " *"*/ " "/ א א א א
א א ، א א א
. א
א א א א א
// this is the first method 1
// this is the
// first method 2
، א א א ،
(float int) א א א
a,b א א א
، א א א א א
א
:(Assignment ) א א א
א א
. א א א א א
: א א
" "a -١
" "b א 2 " "a א -٢
" ."c " "b " ، "a -٣
א " "c " ، "b א אא א
. א א
" "c א א א
#include <iostream.h>
main()
{
char var1=’A’;
char var2=’\t’;
char var3=’\n’;
}
) (A א א א א אא
. א
א א א א א
א א א ) ( back slashא א
א א א א א ،א
א א )(n א א א א א ،
.
א א א ) (t א
) .( tab א א א
א א א א א
א
א א א
א א \a
א א ) א א \b
( backspace
Enter א ) א \n
(
א ) א \t
(tab א
) \( א א א \\
א ”\
א ’\
) (floating point variables א א א א
ﺘﻌﺭﻓﻨﺎ ﻓﻲ ﺠﺯﺀ ﺴﺎﺒﻕ ﻋﻠﻰ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻟﻌﺩﺩﻴﺔ ﺍﻟﺼﺤﻴﺤﺔ ،ﻭﻨﻌﻨﻲ ﺒﺎﻟﺼﺤﻴﺤﺔ ﺘﻠﻙ ﺍﻟﺘﻲ
ﻻ ﺘﺤﺘﻭﻱ ﻋﻠﻰ ﻜﺴﻭﺭ ﺃﻱ ﻻ ﺘﻭﺠﺩ ﺒﻬﺎ ﻋﻼﻤﺔ ﻋﺸﺭﻴﺔ.ﻭﺍﻵﻥ ﻨﺘﻌﺭﻑ ﻋﻠﻰ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ
ﺍﻟﻌﺩﺩﻴﺔ ﺍﻟﻌﺸﺭﻴﺔ ﺃﻭ ﻜﻤﺎ ﺘﺴﻤﻴﻬﺎ ﺒﻌﺽ ﺍﻟﻜﺘﺏ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻟﺤﻘﻴﻘﻴﺔ ﻭﻫﻲ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻟﺘﻲ
ﺘﺴﻤﺢ ﻟﻨﺎ ﺒﺎﻟﺘﻌﺎﻤل ﻤﻊ ﺍﻷﻋﺩﺍﺩ ﺍﻟﺘﻲ ﺘﺤﻭﻱ ﺍﻟﻜﺴﻭﺭ ﺃﻭ ﺍﻟﻌﻼﻤﺎﺕ ﺍﻟﻌﺸﺭﻴﺔ ،ﻭﻤﻥ ﻫﻨﺎ
ﺠﺎﺀ ﺍﺴﻤﻬﺎ.
:c א א א
)scanf ("%f",&x
" " x,y א א ""y א א
" "z א
. א ""zא א א
: א
א א : fgets
) .( input device א א א
: א א ( א ) א
;) fgets( a, n, stdin
" "a
. א א " "nא
( א ) א א " "stdinא
א א :puts
gets א א א א א " " put string א א א
: א א
;)puts ( a
. ، a
: א א
;) fputs( a, stdout
. a
. א א א " "stdoutא
. א א א א א
. א א א puts fputs א א
cin א א א
. א א א א א א א
#include<iostream>
void main()
{
int ftemp;
cout << “ Enter temperature in Fahrenheit: “;
cin >> ftemp;
int ctemp= (ftemp-32) * 5/9;
cout<<”The temperature in Celsius is : “ <<ctemp<<”\n”;
}
ﻣﺘﻐﻴﺮ
cin >>
( Enter ) א א א א א
. א א א
:( Operators ) א א
א א א א ، א א – – ++C
א א א א א א א
: א א
( Arithmetic Operators ) א א א−١
( Relational operators ) . א א א−٢
(Logical operators ) . א א א−٣
: א א א
א א א א ، א א א א א אC++
א א א א
א א
א +
א -
א *
א /
א
: אא א א א
x %y
א א א א א " ،"yא ""x א
10%3 ﺍﻻﺴﺘﺨﺩﺍﻡ
1 ﺍﻟﻨﺎﺘﺞ
: א א
cout << "You are: " << ++yourAge << " years
old\n";
cout << "Let's print it again.\n";
cout << "I am: " << myAge << " years
old.\n";
cout << "You are: " << yourAge << " years
old\n";
return 0;
}
Output: I am 39 years old
You are 39 years old
One year passes
I am 40 years old
You are 40 years old
Another year passes
I am 40 years old
You are 41 years old
Let's print it again
I am 41 years old
You are 41 years old
: א א א א
if ( condition )
statement;
א א א
א א א א א ( statement ) א ( condition )
. א א
א א א א א א א
. א א א א א
א א א א א א א
#include <iostream.h>
main()
{ float sum;
cout<< “ Enter the sum “;
cin >> sum;
if(sum>50)
cout<<” The student had passed”;
}
، א א
if(sum>50)
cout<<” The student had passed”;
else
cout<<” The student had failed”;
}
א א א א א א א אא
א
if ( condition)
statement-1;
else
statement-2;
if ( condition)
{ statement 1;
statement 2;
statement n;
} else
{ statement 1;
statement 2;
.
.
statement m;
}
if(sum>50)
{
cout<<” The student had passed”;
cout<< “ His points are “<< sum/100;
}
else
{
cout<<” The student had failed”;
cout<<” No points are calculated for failed
student !!”;
}
}
א א א
א ( default) א א
. א א א
א
א א א *
#include<iostream.h>
Main(){int a;
Cin>>a;
If (a%2=0)
Cout<<"zojee";
Else
Cout<<"frdee";
}
١٠−١ א א א א *
#include<iostream.h>
Main(){int a=1,b=0;
Q:If (a%2!=0){cout<<a;b+=a;}
a++;
if (a<=10)goto q;
cout<<"\n"<<b;
}
for א א א
:
א ، א for א א א א−١
. א א א א א א א
) אfor א א א א א א א −٢
א א א א (cout << counter; ) א א
.
:(while loop ) while א
א א אא א א א א
.. א א
א while א א
while ( conditon )
{
statement 1;
statement 2;
.
.
statement n;
}
while א א
:while א א א א א א
.while א א א א א −١
.while א א א א −٢
:do-while א א א
א ، א א א א
. א א א א
do-while א א א א
do
{
statement 1;
statement 2;
.
.
statement n;
}
while ( conditon )
א
א א *
#include<conio.h>
#include<iostream.h>
main()
{int i,a,s,d,f;
a=s=0;
clrscr();
cin>>a;
d=f=a;
for ( i=2; i<=6; i++){
if(d<a){
d=a;}
if(f>a){
f=a;}
cin>>a;
}
cout<<d<<" "<<f;
getch();
}
א *
#include<iostream.h>
#include<conio.h>
main(){
clrscr();
int a,s;long d;d=1;
cin>>a;
for(s=1;s<=a;s++){
d*=a;cout<<d<<"\n";
}
getch();
}
א א *
#include<iostream.h>
#include<conio.h>
#include<math.h>
main(){
clrscr();
int a,s,d;
;cin>>a
{)for(s=1;s<=a;s++
;d=floor(a/s)*s
};if(a!=d){goto h
;"cout<<s<<"\n
h:
}
;)(getch
}
؟ א א *
//؟ //א * //
٥ ٣؟ א א א * //
١,١,٢,٣,٥,٨,١٣,٢١,٣٣؟ א א *//
؟ ١٠١/ ١١١ א א א א * //
اﻟﻔﺼﻞ اﻟﺨﺎﻣﺲ :اﻟﺪوال و اﻟﻤﺎآﺮو ) (Function & Macro
א א :
א א א א א א א א
. א
: א א א א א
א א א ، א −١
. א א א א א
א א א א ، א −٢
א א . א
، א א א א א א −٣
א א א א א א א
.
א א א א א ، א א א א א א א
، א א א א א א א א ،
. א א א א א א
א א א א (١ ) א א
#include <iostream.h>
void DrawLine()
{
for (I=1;I<=40;I++) (3)
cout<<’*’;
}
(١)
( אDrawLine ) א א א א אא
(*) א
) א א א ( א1) א א
א א א א א א א ( function declaration
. א א
א א א א א א א א אא
. א א א ( אvoid ) א א א ،
(function calling ) א א (2 ) א א
. א א א א א
function ) א א (3) א א
א "{" "}" א א ،(definition
"* " א א א ، א א א
. א א א א א
: א א א
: א א א ، א א א
א א (int functions ) א א −١
.(integer ) א א
א א ( אfloat functions ) א א −٢
.( float ) א א
א א ( string functions ) א −٣
. א
) א א ( char functions ) א א −٤
.(char
. (void function ) א −٥
. א א א א (٢ @) א א
#include<iostream.h>
float sum(float x, float y)
{
float result;
result = x + y;
return result; (1)
};
void main()
{
cout << sum( 4.5 , 8.9 );
}
٢
(main ) א א א (sum) א א
א א א (sum ) א א
.
٣
، א א א (argc ) א א א
) א، א א א א א א
(argument counter ) א ( אargc
#include "stdio.h"
int main ()
{
int *px;
int a;
;return 0
}
;p1 = &a
;p2 = p1
א . p1 א p2
: א
ptr = x;
ptr = &x[0];
: אא
#include "stdio.h"
int main ()
{
int x[] = {0, 1, 2, 3, 4, 5, 6, 7, 8,
9};
int i;
printf("Arrays As Pointers:\n");
for( i = 0 ; i < 10 ; i++)
{
printf("*(x + %d) = %d\n", i, *(x + i));
}
printf("\n\nArrays As Arrays:\n");
for( i = 0 ; i < 10 ; i++)
{
printf("x[%d] = %d\n", i, x[i]);
}
printf("\n\n\n");
return 0;
}
: א א
char *names[4];
: אא א
:(Structures ) א
א א א א א
. א א א א
: א
، ++ struct א א
: א
( א struct (
}
א
{؛
. א א אא א −
* אchar data א א
int
: א א
struct data
{
char namr[30];
int age;
};
: א
structure_name var[NUM] ;
: א א
typedef struct
{
char name[30];
int age;
}data;
data student[100] ;
. ١٠٠ א
א data א student א
data student א א
. א א ١٠٠
: א א א
student[indix].name & student[indix].age …
typedef struct
{
char name[30];
int age;
}data;
: א
data *s ;
: א א
#include<stdio.h>
#include <conio.h>
typedef struct
{
char name[30];
int age;
}data;
int main()
{
data *s, std;
strcpy(std.name,"Talal");
std.age = 20;
return 0;
}
: א א •א
: א א א −
، ، : אא א א א א
...
:א א א אא
//----------------------------------------------------------
#include<stdio.h>
#include <conio.h>
//----------------------------------------------------------
typedef struct
{
char name[30];
int age;
}data;
//----------------------------------------------------------
void display(data r);
//----------------------------------------------------------
main()
{
data std;
strcpy(std.name,"Talal");
std.age = 20;
display(std);
}
//----------------------------------------------------------
void display(data r)
{
printf("(r.name) = %s,\n(r.age) =
%d\n\n",r.name, r.age);
}
//----------------------------------------------------------
: א א אא
void display(data r) ;
#include<stdio.h>
#include <conio.h>
typedef struct
{
char name[30];
int age;
}data;
main()
{
data std;
assign(&std);
printf("std.name = %s,\nstd.age =
%d\n\n",std.name, std.age);
}
. א ( ) r r
: א
assign( &std ) ;
א א א assign א א
.
) א אr age<−r name<−r assign א א א
. ( '.' <− א א
: א א −
א א א א א א
. א א א
:א א
include<stdio.h> #
#include <conio.h>
typedef struct
{
char name[30];
int age;
}data;
data assign(void);
main()
{
data std;
std = assign();
printf("std.name = %s,\nstd.age =
%d\n\n",std.name, std.age);
}
data assign(void)
{
data r;
strcpy(r.name,"Talal");
r.age = 20;
return r;
}
: א א
data assign(void) ;
std = assign() ;
return r ;
: א •
typedef struct
{
char name[30];
int age;
}data;
:א
data a, b ;
: א a א
: א a א b א א
b=a;
: א א
typedef struct
{
char name[30];
int age;
}data, MyData ;
MyData student ;
data student ;
. א
א א ، א א א
:
struct
{
א
؛ א {
struct
{
char name[30] ;
int age ;
} student;
: student א
struct data
{
char name[30] ;
int age ;
} student;
. student
: **
א א א א א א א א
: א א
typedef struct
{
char name[30];
int age;
}data;
: א א
data VAR ;
struct data
{
char name[30] ;
int age ;
};
: א
: א
א א א، א א א
א
#include <iostream.h>
#define SQUARE(A) A*A
main()
{
int x;
cout<< “ Please enter a number to calculate it’s square “;
cin >> x;
cout << “ The square of “<< x << “is :” << SQUARE(x);
}
، א א
. א א א א א א א א
א
א *א
#include <iostream.h>
int addition (int a, int b)
{
int r;
r=a+b;
return (r);
}
int main ()
{ int z,b,n;
Cin>>b,n;
z = addition (b,n);
cout << "The result is " << z;
return 0;
}
*א
#include <iostream.h>
void dummyfunction (void)
{
cout << "I'm a function!";
}
int main ()
{
dummyfunction ();
return 0;
}
א א *א
#include <iostream.h>
long factorial (long a)
{
if (a > 1)
return (a * factorial (a-1));
else
return (1);
}
int main ()
{
long l;
cout << "Type a number: ";
cin >> l;
cout << "!" << l << " = " << factorial (l);
return 0;
}
؟ א *א
؟١,٣,٧,١٥,٣١,٦٣,١٢٧ א א// //*
* * ***** א א //*
*** *** ***
***** ***** *
***
*
א א *
#include <iostream.h>
int main ()
{
int value1 = 5, value2 = 15;
int * mypointer;
mypointer = &value1;
*mypointer = 10;
mypointer = &value2;
*mypointer = 20;
cout << "value1==" << value1 << "/ value2==" <<
value2;
return 0;
} value1==10 / value2==20
א א *
#include <iostream.h>
int main ()
{
int numbers[5];
int * p;
p = numbers; *p = 10;
p++; *p = 20;
p = &numbers[2]; *p = 30;
p = numbers + 3; *p = 40;
p = numbers; *(p+4) = 50;
for (int n=0; n<5; n++)
cout << numbers[n] << ", ";
return 0;
}
10, 20, 30, 40, 50,
א א א א א *א
؟ א
؟ א א *א
א א א *א
א א−
؟ א א א א -
א א *
#include <iostream.h>
#include <string.h> Enter title: Alien
Enter year: 1979
#include <stdlib.h> My favourite movie is:
2001 A Space Odyssey (1968)
And yours:
struct movies_t { Alien (1979)
int main ()
{
char buffer [50];
#inculde<iostream.h>
#include<string.h>
Typ struct{
Char name[30];
Int age;
}
Data;
Int main(){
Data*s,std;
S=&std;
Strcpy(std.name,''ammar aldopaee');
Std.age=20;
Cout<<std.name;
Cout<<std.age;
Cout<<s->name;
Return();
}
א א א
A= [ 2 3 4 5 6]
א א א א א א
.٢ [A[0 א א
…א ، A[2] = 4 ، A[1] = 3
א
#include <iostream.h>
int main ()
{
for ( n=0 ; n<5 ; n++ )
{
result += billy[n];
}
cout << result;
return 0;
}
12206
א
) א א א א א 1 א א
. א (int
א א א א א א א א א
. א
B[2][2] = 16
א א א א
א א א א א א
70 52 68 א א
90 92 82 א א
83 85 85 א א
، א אא א א
، א א א א
א א א א א
. א א א ، א
#include <iostream.h>
main()
{
float Degrees[3][3]; // Array declaration
א
א א *
#include<iostream.h>
#include<conio.h> 1
main(){ 212
clrscr(); 32123
int s,d,a,b,m,c,x; 4321234
cin>>s;x=s;
for(d=1;d<=s;d++){
for(m=x;m>=1;m--){cout<<" ";}
x-=1;
if (d>=2){
for(c=d;c>=2;c--){
cout<<c;
}}
for(a=1;a<=d;a++){
cout<<a;}
cout<<"\n";
}
א א *
#include<iostream.h>
#include<conio.h>
main(){int a,b,i,j;
clrscr();a=4;
int
x[5][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
,21,22,23,24,25};
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(i==j){b=x[i][j];x[i][j]=x[i][a];x[i][a]=b;}
} a-=1;
}
for(i=0;i<5;i++){
for(j=0;j<5;j++){
cout<<x[i][j]<<" ";
}
cout<<"\n";
}
getch();
}
א א א א א *
#include<iostream.h>
#include<conio.h>
main(){int a,b,i,j;
clrscr();a=4;
int
x[5][5]={11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,
27,28,29,30,31,32,33,34,35};
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(i>j){b+=x[i][j];}
}
}
for(i=0;i<5;i++){
for(j=0;j<5;j++){
cout<<x[i][j]<<" ";
}
cout<<"\n";
} cout<<b;
getch();
}
؟ א אא א א *א
؟ א א א א א א א א *א
؟ א א *א
؟ א *א
( Classes & Objects ) اﻟﻔﺼﺎﺋﻞ واﻟﻜﺎﺋﻨﺎت: اﻟﻔﺼﻞ اﻟﺴﺎﺑﻊ
א א א אא
. א א
(١ ) א א א א א
א א א
class class_name{
private:
private data and functions
public :
public data and functions
}
: א א
;)(17: s1.showdata
;)(18: s2.showdata
}19:
٢
א א אא ، א א א
. א א א א א א
: א
א
א
public
א א א א
. א
א ، א protected
א א
א א א א private
א א
: א א
א א ، א א א א
. א א
. א א א א
א א א א
(a,b) א א א
# include “iostream.h”
class MyClass
{
int a,b;
public:
MyClass (int i, int j)
{
a=i;
b=j;
}
void Show()
{
cout << a<< “ “<<b;
}
};
void main()
{
MyClass C1(2,6);
C1.Show();
}
: א
א ، א א א
. א א א א א
א א א א C++
. א א א א
א א א א
#include <iostream.h>
class Date
{ public:
int day,month,year;
set_date(int d, int m, int y)
{day=d; month=m; yaer=y;}
};
main()
{
Date date_array[3];
date_array[0].set_date(2,3,1990);
}
* *
** **
*** ***
**** ****
***** *****
***********
***** *****
**** ****
*** ***
** **
* *
ﺍﻟﺨﺎﺗﻤﺔ
ﺇﻟﻰ ﻛﻞ ﻣﻦ ﺍﻧﺘﻔﻊ ﺑﻬﺪﻯ ﺍﻟﻜﺘﺎﺏ
ﺇﻟﻰ ﻛﻞ ﻣﺴﻠﻢ ﻭﻣﺴﻠﻤﺔ
ﺇﻟﻰ ﻛﻞ ﻣﻦ ﻳﺸﻬﺪ ﺃﻥ ﻹﻟﻪ ﺇﻻ ﺍﷲ ﻣﺤﻤﺪ
ﺭﺳﻮﻝ ﺍﷲ
ﺍﺭﺟﻮﺍ ﺍﻟﺪﻋﺎﺀ ﻟﻲ ﻭﻟﻤﻦ ﻳﺼﻠﻲ ﻋﻠﻰ ﺍﻟﻨﺒﻲ
ﺍﻷﻣﻲ
ﺻﻠﻮﺍﺕ ﺍﷲ ﻭﺳﻼﻣﻪ ﻋﻠﻴﻚ ﻳﺎ ﺣﺒﻴﺒﻲ ﻣﺤﻤﺪ
ﺍﺑﻦ ﻋﺒﺪ ﷲ
ﻭﺍﻟﺤﻤﺪ ﷲ.
اﻟﻤﺮاﺟﻊ
آﻴﻒ ﺗﺒﺮﻣﺞ ﺑﻠﻐﺔ اﻟﺴﻲ ........ ++د/ﺻﻼح
اﻟﻮﻩ ﺟﻲ
اﻟﻤﺮﺟﻊ اﻟﺸﺎﻣﻞ ﻓﻲ ﺑﺮﻣﺠﺔ اﻟﺴﻲ.........ﻋﻮض
ﻣﻨﺼﻮر
ﺑﻌﺾ ﺻﻔﺤﺎت اﻟﻮﻳﺐ