C - Chapter 1
C - Chapter 1
ﻣﻘﺎرﻧﺔ ﺑﻴﻦ اﻟﻠﻐﺔ اﻟﻌﺎدﻳﺔ وﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ
ﺗﻌﺮﻳﻒ اﻟﻠﻐﺔ ﺑﺸﻜﻞ ﻋﺎم :ﻫﻲ أداة ﻟﻮﺻﻒ وﺗﺪوﻳﻦ أﻓﻜﺎر اﻟﺒﺸﺮ
ﺑﻴﻨﻤﺎ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ ﺗﻌﺮف ﺑﺄﻧﻬﺎ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻘﻮاﻋﺪ ,,ﻫﺎي اﻟﻘﻮاﻋﺪ ﺑﺘﺤﺪد اﻟﺮﻣﻮز )اﻷﺣﺮف ,اﻷرﻗﺎم ,ﻋﻼﻣﺎت
. اﻟﺘﺮﻗﻴﻢ ( ﻳﻠﻲ ﻣﻤﻜﻦ ﻧﺴﺘﺨﺪﻣﻬﺎ ﻓﻲ ﻫﺎي اﻟﻠﻐﺔ
أي ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺑﺘﺘﻜﻮن ﻣﻦ -:
- 1اﻟﻘﻮاﻋﺪ ) : (syntaxوﻫﻲ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻘﻮاﻋﺪ ﻳﻠﻲ ﺑﺘﺤﺪد اﻟﻄﺮﻳﻘﺔ ﻳﻠﻲ ﻣﻦ ﺧﻼﻟﻬﺎ ﺑﺘﺼﻴﻎ رﻣﻮز ﻫﺎﻟﻠﻐﺔ .
ﻣﺜﻞ ﻗﻮاﻋﺪ اﻟﻠﻐﺔ اﻟﻌﺮﺑﻴﺔ ﻣﺎ ﺗﺒﻘﺪر ﺗﻨﺼﺐ اﻟﻔﺎﻋﻞ ﻣﺜﻼ
- 2دﻻﻻت اﻷﻟﻔﺎظ :ﻫﻲ اﻟﻘﺪرة اﻧﻚ ﺗﺪرك ﻣﻌﻨﻰ ﻛﻞ ﺟﻤﻠﺔ ﻣﻮﺻﻮﻓﺔ ﺑﻠﻐﺔ ﻣﻌﻴﻨﺔ .
ﻳﻌﻨﻲ ﻳﻜﻮن اﻟﺠﻤﻠﺔ اﻟﻬﺎ ﻣﻌﻨﻰ ,ﻳﻌﻨﻲ ﺑﺎﻟﻌﺮﺑﻲ م ﺑﻘﺪر اﺣﻜﻲ ﺷﺮﺑﺖ اﻟﺴﻔﻴﻨﺔ اﻟﺘﻔﺎﺣﺔ!
أي ﺑﺮﻧﺎﻣﺞ ﺑﻨﻜﺘﺒﻪ ﻻزم ﻳﻜﻮن ﺧﺎﻟﻲ ﻣﻦ اﻻﺧﻄﺎء :ك ﻣﻔﺮدات و ك ﻗﻮاﻋﺪ و ك دﻻﻻت ﻟﻔﻈﻴﺔ ,ﻏﻴﺮ ﻫﻴﻚ اﻟﺒﺮﻧﺎﻣﺞ
م رح ﻳﺸﺘﻐﻞ ,او اذا اﺷﺘﻐﻞ رح ﻳﻌﻄﻲ ﻧﺘﺎﺋﺞ ﻏﻴﺮ ﻣﻘﺒﻮﻟﺔ
ﻟﻐﺔ اﻵﻟﺔ ﻫﻲ اﻻﺑﺴﻂ )ﺗﺴﺘﺨﺪم 01ﻓﻘﻂ( وﻫﻲ اﻛﺜﺮ ﻟﻐﺔ ﺑﺪاﺋﻴﺔ ,وﻫﻲ ﺑﻨﻘﺪر ﻣﻦ ﺧﻼﻟﻬﺎ ﻧﻌﻄﻲ اواﻣﺮ
ﻟﻠﻜﻤﺒﻴﻮﺗﺮ ,ﻃﺒﻌﺎ ﺻﻌﺒﺔ ﺟﺪا ﺟﺪا اﻧﻪ اﻟﺒﺸﺮ ﻳﻔﻬﻤﻮﻫﺎ ,ﻳﻌﻨﻲ ﻟﻮ ﺣﻜﻴﺘﻠﻚ 010010ﻛﻴﻒ ﺑﺪك ﺗﺴﺘﻮﻋﺐ ﻋﻠﻲ !!
ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ اﻟﻤﺘﻘﺪﻣﺔ )ﻳﻠﻲ ﺑﻘﺪروا ﻳﻔﻬﻤﻮﻫﺎ اﻟﺒﺸﺮ( :ﻫﻲ ﺟﺴﺮ ﺑﻴﻦ ﻟﻐﺔ اﻟﻨﺎس وﻟﻐﺔ اﻟﻜﻤﺒﻴﻮﺗﺮ وﻫﻲ
ﺷﺒﻴﻬﺔ ﺟﺪا ﻟﻠﻐﺔ اﻟﻄﺒﻴﻌﻴﺔ ,ﻓﻬﻲ ﺑﺘﺴﺘﺨﺪم رﻣﻮز وﻛﻠﻤﺎت ﻗﺎﺑﻠﺔ ﻟﻠﻘﺮاءة ﻋﻨﺪ اﻟﺒﺸﺮ
اﻟﻜﻮﻣﺒﺎﻳﻠﺮ :ﻫﻮ ﺑﺮﻧﺎﻣﺞ ﺣﺎﺳﻮﺑﻲ ﺑﺤﻮل اﻟﺒﺮﻧﺎﻣﺞ ﻣﻦ اﻟﻠﻐﺔ اﻟﻤﺘﻘﺪﻣﺔ ﻟﻠﻐﺔ اﻻﻟﺔ
ﻳﻌﻨﻲ ﻟﻤﺎ ﺗﻜﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻣﺜﻼ ﺑﻠﻐﺔ ال , c++اﻟﻜﻮﻣﺒﺎﻳﻠﺮ رح ﻳﺤﻮل اﻟﻜﻮد ﺗﺎﻋﻚ ﻣﻦ ﻟﻐﺔ ال ++cﻟﻠﻐﺔ اﻵﻟﺔ ,ﻣﺸﺎن
ﻳﻘﺪر ﻳﻔﻬﻤﻬﺎ اﻟﻜﻤﺒﻴﻮﺗﺮ .
ﻣﺮاﺣﻞ ﻋﻤﻞ ﺑﺮﻧﺎﻣﺞ ++Cﺑﺘﺤﺘﺎج إﻟﻰ :
: editor -1وﻫﻮ اﻟﺒﺮﻣﺠﻴﺔ ﻳﻠﻲ ﺑﺘﺴﻤﺤﻠﻚ ﺗﻜﺘﺐ ﻛﻮد C++ﻣﺜﻞ visual studioاو ﻣﻮاﻗﻊ اﻻوﻧﻼﻳﻦ ﻣﺜﻞ repl.it
Preprocessor -2 ﺗﻮﺟﻴﻬﺎت اﻟﻤﻌﺎﻟﺞ
ﻫﺎي اﻟﺘﻮﺟﻴﻬﺎت ﺑﺘﺒﺪأ ﺑﺮﻣﺰ ) ( #ﺑﻌﺎﻟﺠﻬﺎ اﻟﻤﻌﺎﻟﺞ وﻣﻨﻬﺎ ) header filesﻣﻠﻔﺎت ﺑﺤﺘﺎﺟﻬﺎ اﻟﻤﻌﺎﻟﺞ( ﻣﺜﻞ iostramوﻫﻲ اﺧﺘﺼﺎر
ﻟـ , Input/Output Streamوﻫﻲ اﻟﻤﻜﺘﺒﺔ اﻟﺨﺎﺻﺔ ﻻدﺧﺎل اﻟﻤﻌﻠﻮﻣﺎت ﻣﻦ اﻟﻤﺴﺘﺨﺪم واﺧﺮاج اﻟﻄﺒﺎﻋﺔ )ﻻزم ﺗﻜﻮن ﻣﻮﺟﻮدة إذا
ﺑﺪك ﺗﺪﺧﻞ ﺑﻴﺎﻧﺎت ﻣﻦ اﻟﻤﺴﺘﺨﺪم وإذا ﺑﺪك ﺗﻄﺒﻊ ع اﻟﺸﺎﺷﺔ(
c ompiler - 3
ﺑﻨﺴﺘﺨﺪﻣﻪ ﻟﺸﻐﻠﺘﻴﻦ :اﻻوﻟﻰ إﻧﻨﺎ ﻧﺘﺎﻛﺪ اﻧﻪ اﻟﻜﻮد ﺑﺨﻀﻊ ﻟﻘﻮاﻋﺪ اﻟﻠﻐﺔ ,واﻟﺜﺎﻧﻴﺔ ﻣﺜﻞ م ﺣﻜﻴﻨﺎ ﻳﺤﻮل اﻟﻜﻮد ﻟﻠﻐﺔ اﻵﻟﺔ .
: Linker -4ﻫﻮ ﺑﺮﺑﻂ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻠﻲ ﺣﻮﻟﻪ اﻟﻜﻮﻣﺒﺎﻳﻠﺮ ﻟﻠﻐﺔ اﻻﻟﺔ ﺑﺒﺮاﻣﺞ اﺧﺮى ﻣﻮﺟﻮدة ﺑﺎﺷﻲ اﺳﻤﻪ SDK وﻫﻲ ﻣﺠﻤﻮﻋﺔ
ﻣﻜﺘﺒﺎت ﺑﺘﺴﺎﻋﺪ ﺑﺘﻨﻔﻴﺬ اﻟﻜﻮد ) ﻣﺶ ﻣﻬﻢ ﺗﻌﺮﻓﻬﺎ (
: LOADER -5وﻫﻮ ﻳﻠﻲ ﺑﺮﻓﻊ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺠﺎﻫﺰ ﻟﻠﺘﻨﻔﻴﺬ ﻟﻠﺮام
و اﺧﺮ ﺧﻄﻮة ﻫﻲ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ..
ﻫﺎذ اﻟﺸﻜﻞ ﺑﻮﺿﺤﻠﻨﺎ ﺧﻄﻮات ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ,ﻟﻜﻦ ﻓﻲ ﺷﻜﻞ أﺷﻤﻞ ﻣﻨﻪ رح ﻧﺸﻮﻓﻪ ﻛﻤﺎن ﺷﻮي
) ﻣﻼﺣﻈﺔ :اﻟﺤﻜﻲ اﻟﻲ ﻣﻠﻮن ﺑﺎﻻﺻﻔﺮ ﻳﻌﻨﻲ ﻣﺶ ﻣﻬﻢ ﻛﺜﻴﺮ (
“Programming is a process of problem solving
One problem-solving technique:
Analyze the problem
Outline the problem requirements
Design steps (algorithm) to solve the problem
Algorithm:
Step-by-step problem-solving process
Solution achieved in finite amount of time”
اﻟﺒﺮﻣﺠﺔ ﻫﻲ ﻋﺒﺎرة ﻋﻦ ﻋﻤﻠﻴﺔ ﻟﺤﻞ اﻟﻤﺸﺎﻛﻞ
) ﻣﺶ ﻣﺜﻞ ﻣﺎ ﺑﻈﻦ اﻷﻏﻠﺐ ,إﻧﻬﺎ ﻋﻤﻠﻴﺔ ﻛﺘﺎﺑﺔ ﻛﻮد ,ﻛﺘﺎﺑﺔ اﻟﻜﻮد ﺧﻄﻮة ﻓﻘﻂ ﻣﻦ اﻟﺒﺮﻣﺠﺔ(
…………………………………………………………… .
ﺧﻄﻮات ﺣﻞ اﻟﻤﺸﻜﻠﺔ :
– 3ﺑﺘﻀﻊ ﺧﻮارزﻣﻴﺔ ﻟﻠﺤﻞ -2ﺑﺘﺴﺘﺨﺮج اﻟﻤﻄﻠﻮب ﻣﻨﻬﺎ - 1ﺗﺤﻠﻴﻞ اﻟﻤﺸﻜﻠﺔ
واﻟﺨﻮازﻣﻴﺔ :ﻫﻲ ﺧﻄﻮات ﻟﺤﻞ اﻟﻤﺸﻜﻠﺔ واﻟﻮﺻﻮل ﻟﻠﺤﻞ ﺑﻮﻗﺖ ﻣﺤﺪد .
(5)
• Run code through compiler
• If compiler generates errors
• Look at code and remove errors
• Run code again through compiler
• If there are no syntax errors
• Compiler generates equivalent
machine code
• Linker links machine code with system
resources
• Once compiled and linked, loader can
place program into main memory for
execution
• The final step is to execute the program
• Compiler guarantees that the program
follows the rules of the language
• Does not guarantee that the
program will run correctly
The اﻟﺸﻜﻞ اﻟﺴﺎﺑﻖ اﺳﻤﻪ Problem Analysis–Coding–Execution Cycle
وﻫﻮ ﻣﻬﻢ ﺟﺪا وﺑﻮﺿﺤﻠﻚ ﺧﻄﻮات ﺣﻞ اﻟﻤﺸﻜﻠﺔ ,ﻳﻠﻲ ﻫﻲ اﻟﺘﺤﻠﻴﻞ ﻟﻠﻤﺸﻜﻠﺔ ,وﻣﻦ ﺛﻢ وﺿﻊ ﺧﻮارزﻣﻴﺔ ﻟﻠﺤﻞ وﻣﻦ ﺛﻢ ﻛﺘﺎﺑﺔ
ﻫﺎي اﻟﺨﻮازﻣﻴﺔ ﺑﻠﻐﺔ اﻟـ C++
,وﺑﺮﺿﻮ ﺑﻮﺿﺢ ﺧﻄﻮات ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻠﻲ ذﻛﺮﻧﺎﻫﻢ ﻗﺒﻞ ,ﻟﻜﻦ ﻓﻲ اﺷﻲ ﺟﺪﻳﺮ ﺑﺎﻟﺬﻛﺮ ,اﻧﻪ ﻟﻮ ﻛﺎن ﻋﻨﺪي ﺧﻄﺄ ﺑﺎﻟﻘﻮاﻋﺪ
Syntax Errorرح ﻳﻜﻮن اﻟﺨﻄﺄ اﻛﻴﺪ ﺑﻜﺘﺎﺑﺔ اﻟﻜﻮد ﻳﻌﻨﻲ ﺑﻤﺮﺣﻠﺔ ال codingواﻟﺒﺮﻧﺎﻣﺞ ﻣﺎ ﺑﺸﺘﻐﻞ ﺑﺎﻟﻤﺮة .
ﺑﻴﻨﻤﺎ ﻟﻮ ﺣﺼﻠﺖ ﻋﻠﻰ ﻧﺘﺎﺋﺞ ﺧﻄﺄ ﺑﻌﺪ ﺗﻨﻔﻴﺬ اﻟﺒﺮﻧﺎﻣﺞ Logical Errorرح ﻳﻜﻮن ﺳﺒﺐ اﻟﺨﻄﺄ اﻟﻪ 3اﺣﺘﻤﺎﻻت :
إﻣﺎ ﻓﻬﻢ ﺧﺎﻃﺊ ﻟﻠﻤﺸﻜﻠﺔ أو ﺑﻌﻤﻠﻴﺔ ﺗﺤﻠﻴﻠﻲ ﻟﻠﻤﺸﻜﻠﺔ أو ﺑﻌﻤﻠﻴﺔ ﻛﺘﺎﺑﺔ اﻟﻜﻮد
ﻳﻌﻨﻲ ﻛﻤﺜﺎل ﻟﻮ ﻛﺎن ﻣﻄﻠﻮب ﻣﻨﻲ ﺑﺮﻧﺎﻣﺞ ﻳﺤﺴﺐ ﻣﺴﺎﺣﺔ داﺋﺮة ,وﻛﺘﺒﺖ اﻟﺴﻨﺘﺎﻛﺲ ﺑﻄﺮﻳﻘﺔ ﺻﺤﻴﺤﺔ ودﺧﻠﺖ اﻟﻤﺪﺧﻼت إﻧﻪ
ﻧﺼﻒ اﻟﻘﻄﺮ = , 2ف ﻻزم اﻟﺠﻮاب ﻳﻜﻮن , 3.14*2ف ﻣﺜﻼ ﻟﻮ ﻃﻠﻊ اﻟﺠﻮاب , 15اﻛﻴﺪ رح ﻳﻜﻮن ﻓﻲ ﻏﻠﻂ إﻣﺎ ﺑﻘﺮاءﺗﻲ ﻟﻠﺴﺆال
) ﺗﺤﻠﻴﻞ اﻟﻤﺸﻜﻠﺔ ( او ﺑﻜﻮن ﻣﻮ ﺣﺎﻓﻆ اﻟﻘﺎﻧﻮن ﻟﻤﺎ اﺟﻴﺖ اﻛﺘﺐ اﻟﻜﻮد )ﺧﻮارزﻣﻴﺔ اﻟﺤﻞ وال (coding
----------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
ﻫﺎذ ﻋﺒﺎرة ﻋﻦ ﺑﺮﻧﺎﻣﺞ ﺑﺴﻴﻂ ,رح ﻧﺸﺮح ﻣﻦ ﺧﻼﻟﻪ ﺑﻌﺾ اﻻﻣﻮر :
اﻟﺠﻤﻠﺔ ﻳﻠﻲ ﻣﺄﺷﺮ ﻋﻠﻴﻬﺎ اﻟﺴﻬﻢ ﻫﻲ ﻣﺜﺎل ﻋﻠﻰ
ال preprocessor directivesﻳﻠﻲ وﺿﺤﻨﺎﻫﺎ ﺑﺎﻟﺼﻔﺤﺎت ﻗﺒﻞ ..
ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻌﺒﺎرة ﻳﻠﻲ ﺑﺎﻟﻤﺴﺘﻄﻴﻞ ,,ال namespaceﻫﻲ ﻋﺒﺎرة ﻋﻦ
) containerﺣﺎوﻳﺔ ( ﺑﺘﺤﺘﻮي ﻋﻠﻰ أﺷﻴﺎء اﻧﺎ ﻣﻌﺮﻓﻬﺎ ﻟﻠﺒﺮﻧﺎﻣﺞ ﻳﻠﻲ
ﺑﻜﺘﺐ ﻓﻴﻪ
,ﻣﺜﻼ ﻋﻨﺪي ﻋﻨﺪي ﺟﺎﻣﻌﺔ اﺳﻤﻬﺎ JUSTوﻫﺎﻟﺠﺎﻣﻌﺔ ﺑﺘﺤﺘﻮي ﻋﺪة ﻛﻠﻴﺎت ) ITاﻟﻌﺰ واﻟﻌﻠﻮم اﻟﺦ .. (..ف أﻧﺎ ﻫﺬول ﺑﺤﻄﻬﻢ ب
) namespaceﻣﺶ ﻣﻬﻢ ﻛﻴﻒ ﺑﺲ اﻟﻤﻬﻢ ﺗﻮﺻﻠﻚ اﻟﻔﻜﺮة( وﺑﺲ آﺟﻲ اﺳﺘﺨﺪﻣﻬﻢ ﺑﺒﺮﻧﺎﻣﺠﻲ إذا ﺣﻜﻴﺖ ITرح ﻳﻌﺮف
اﻟﻜﻮﻣﺒﺎﻳﻠﺮ إﻧﻪ ﻗﺼﺪي ﻋﻦ ال ITﻳﻠﻲ ب , justﻹﻧﻲ ﻋﻤﻠﺖ namespaceاﺳﻤﻪ justوﻋﺮﻓﺖ ﺟﻮاه ﻫﺎي اﻟﻤﻌﻠﻮﻣﺎت وﺑﺒﺪاﻳﺔ
اﻟﺒﺮﻧﺎﻣﺞ ﻛﺘﺒﺖ ; using namespae justف اﻟﻜﻮﻣﺒﺎﻳﻠﺮ ﺻﺎر ﻣﺘﻌﺮف ﻋﻠﻰ أي اﺷﻲ ﺟﻮا ﻫﺎل .namespace
وﻟﻐﺔ ال ‘ ++cﻓﻲ اﻟﻬﺎ أدوات ﺧﺎﺻﺔ ﻓﻴﻬﺎ ,ﻣﺜﻞ اﻟﺠﺎﻣﻌﺔ ﺑﺎﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ ﻣﺎ ﻋﻨﺪﻫﺎ ﻛﻠﻴﺎت ﺧﺎﺻﺔ ﻓﻴﻬﺎ ف ﻫﻲ ﺣﻄﺖ ﻛﻞ
ﻫﺎﻻدوات ب namespaceاﺳﻤﻪ . std
ف أﻧﺎ ﻟﻤﺎ أﻛﺘﺐ using namespace stdاﻟﻜﻮﻣﺒﺎﻳﻠﺮ دﻏﺮي رح ﻳﺘﻌﺮف ع ﻛﻞ ال toolsاﻟﺨﺎﺻﺔ ﺑﻠﻐﺔ ال , ++cﻣﺜﻞ أداة ال cout ,,
cinﻳﻠﻲ رح ﻧﺸﻮﻓﻬﻢ ﻟﻘﺪام ..
(6)
ﺑﺎﻟﻨﺴﺒﺔ ﻟــ )int main (void
ال mainﻫﻮ ﻋﺒﺎرة ﻋﻦ ُ , functionﻳﻔﺘﺮض إﻧﻪ اي ﺑﺮﻧﺎﻣﺞ c ++ﻳﺤﺘﻮي ﻋﻠﻴﻪ ,وﻻزم ﻳﺒﺪأ ﺑﺮﻣﺰ { وﻳﻨﺘﻬﻲ ﺑﺮﻣﺰ }
*ﻳﻮﺟﺪ ﺗﺸﺎﺑﺘﺮ ﻛﺎﻣﻞ ﺧﺎص ﺑﺎل *functions
ﻧﻨﺰل ﻟﻠﺴﻄﺮ ﻳﻠﻲ ﺑﻌﺪه ..ال coutﻫﻮ ﻋﺒﺎرة ﻋﻦ أداة ﻣﻌﺮﻓﻬﺎ ﺑﺎل , namespace stdﺑﺘﻄﺒﻊ أي اﺷﻲ ﺑﻌﺪﻫﺎ ﻋﻠﻰ اﻟﺸﺎﺷﺔ ,,
وﻫﻮن اﻻﺷﻲ ﻛﺎن ﻧﺺ ) (stringوال stringﻻزم ﻳﺒﺪأ وﻳﻨﺘﻬﻲ ﺑﻠﻐﺔ c ++ﺑﻬﺎذ اﻟﺮﻣﺰ ) " ( ,وﺑﺮﺿﻮ ﻻزم أي ﺟﻤﻠﺔ ﻓﻲ ﻟﻐﺔ ال c++
ﺗﻨﺘﻬﻲ ب اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﺔ ) ; (
ﻧﻨﺰل ﻟﻞ , return 0ﻛﻠﻤﺔ returnﺑﺘﺤﻜﻲ ﻟﻞ compilerإﻧﻪ ﻫﻮن ﺧﻠﺺ ﺗﻨﻔﻴﺬ ال , main functionوأي أﻣﺮ ﺟﻮا ال mainﻣﻜﺘﻮب
ﺑﻌﺪ ال returnرح ﻳﺘﺠﺎﻫﻠﻪ ال compilerوم ﺑﻨﻔﺬه ,,ﺑﺎﻟﻨﺴﺒﺔ ﻟﻞ , 0ف ﻫﻲ اﺷﻲ ﺑﺘﻌﻠﻖ ﺑﺎل intﻳﻠﻲ ﻣﻜﺘﻮﺑﺔ ﻗﺒﻞ ﻛﻠﻤﺔ main
,ورح ﻧﺸﺮﺣﻬﻢ ﺑﺎﻟﺘﻔﺼﻴﻞ ﻓﻲ ﺗﺸﺎﺑﺘﺮ ال . functions
اﻟﻤﺨﺮﺟﺎت رح ﺗﻜﻮن ﻋﻠﻰ اﻟﺸﺎﺷﺔ it’s me, your first program
--------------------------------------------------------------------------------------------------------------
👆 * ﺑﺎﺳﻤﻬﺎ
• return
ﺑﻌﺾ اﻻﻣﺜﻠﺔ *ﻣﺤﺠﻮزه وﻫﺎيc++ ) اﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة( ﻫﻲ ﻛﻠﻤﺎت ﺧﺎﺻﺔ ﺑﻠﻐﺔresrved words
ال
ﻳﻌﻨﻲ ﻣﺎﺑﺼﻴﺮ ﺗﻌﺮف ﻣﺘﻐﻴﺮ أو اﻗﺘﺮان
• Whitespaces
• Every C++ program contains whitespaces
• Include blanks, tabs, and newline characters
• Used to separate special symbols, reserved words, and
identifiers
• Proper utilization of whitespaces is important
• Can be used to make the program readable
ﺑﻨﺴﺘﺨﺪﻣﻬﺎ ﻣﺸﺎن ﻧﻔﺼﻞ اﻟﺮﻣﻮز واﻟﻜﻠﻤﺎت اﻟﻤﺤﺠﻮزة ﻋﻦ ﺑﻌﻀﻬﺎ, ﻫﻲ اﻟﻔﺮاﻏﺎت ﺑﺎﻟﻜﻮدwhitspaces ال
. وﺑﻨﻌﻤﻞ اﻟﻜﻮد ﻗﺎﺑﻞ ﻟﻠﻘﺮاءة ﺑﺸﻜﻞ أﻛﺒﺮ, اﻟﺒﻌﺾ
: ﻣﺜﺎل
" " ﺑﻴﻨﻤﺎ اﻟﻤﺮة اﻟﺜﺎﻧﻴﺔ اﻟﻔﺮاغ ﻛﺎن ﺟﻮا ال, ﻷﻧﻪ م ﺑﺸﻮف اﻟﻔﺮاﻏﺎت اﺻﻼ, ﺟﻨﺐ ﺑﻌﺾ23 ﺷﻮف اﻟﻤﺮة اﻻوﻟﻰ ﻃﺒﻊ
. ف اﻋﺘﺒﺮه ﺟﺰء ﻣﻦ اﻟﻨﺺ ﻳﻠﻲ رح ﻳﻄﺒﻌﻪ
(8)
اﻟﻤﺘﻐﻴﺮات :ﻫﻲ )ﺣﺎوﻳﺎت ﺻﻐﻴﺮة( وﻇﻴﻔﺘﻬﺎ ﺗﺨﺰن ﻗﻴﻢ ﻧﺎﺗﺠﺔ ﻣﻦ ﻋﻤﻠﻴﺎت ﻓﻲ ﻟﻐﺔ ال c++ﻣﺸﺎن ﺗﺴﺘﺨﺪﻣﻬﺎ
ﺑﻌﻤﻠﻴﺎت أﺧﺮى ,وﻛﻮﻧﻪ اﺳﻤﻬﺎ ﻣﺘﻐﻴﺮات ف ﻫﺎﻻﺷﻲ ﺑﻌﻨﻲ اﻧﻪ اﻟﻘﻴﻤﺔ داﺧﻞ ﻫﺎﻟﻤﺘﻐﻴﺮ ﻗﺎﺑﻠﺔ ﻟﻠﺘﻐﻴﻴﺮ .
ﺷﺮوط ﺗﺴﻤﻴﺔ اﻟﻤﺘﻐﻴﺮات -:
★ اﻷﺷﻴﺎء ﻳﻠﻲ ﻣﺴﻤﻮح ﺗﻜﻮن ﻣﻮﺟﻮدة ﺑﺎﺳﻢ اﻟﻤﺘﻐﻴﺮ
○ اﻟﺤﺮوف )اﻧﺠﻠﻴﺰﻳﺔ ﻃﺒﻌﺎ(
○ اﻷرﻗﺎم
○ اﻟﺮﻣﺰ ) _ ( -Underscore-
)ﻣﻤﻨﻮع رﻗﻢ( ★ ﻻزم ﺗﺒﺪأ ﺑﺤﺮف او _
★ ﻣﻤﻨﻮع ﻳﻜﻮن ﻣﺘﻐﻴﺮﻳﻦ ﺑﻨﻔﺲ اﻻﺳﻢ .
○ ﻟﻐﺔ ال ++cﻓﻴﻬﺎ ﺻﻔﺔ اﻧﻬﺎ Case sensitivityﻳﻌﻨﻲ ﻓﻲ ﻓﺮق ﺑﻴﻦ اﻷﺣﺮف اﻟﻜﺒﻴﺮة واﻷﺣﺮف اﻟﺼﻐﻴﺮة ,
ف ﻣﺴﻤﻮﺣﻠﻲ اﺳﻤﻲ ﻣﺘﻐﻴﺮ LINUXواﺳﻤﻲ ﻣﺘﻐﻴﺮ ﺛﺎﻧﻲ linux
★ ﻣﻤﻨﻮع ﻳﻜﻮن ﻛﻠﻤﺔ ﻣﺤﺠﻮزة ﺑﺎﻟﻠﻐﺔ
○ ﺑﻴﻨﻤﺎ ﻣﻤﻜﻦ ﻳﻜﻮن ﻛﻠﻤﺔ ﻣﻌﺮﻓﺔ ﻣﺴﺒﻘﺎَ ﻣﺜﻞ , cin / coutﺑﺲ ﻣﺶ اﺷﻲ ﻛﻮﻳﺲ ﻷﻧﻪ ﻟﻮ ﻋﻤﻠﺖ ﺑﺮﻧﺎﻣﺞ ﻓﻴﻪ
ﻣﺘﻐﻴﺮ اﺳﻤﻪ , coutرح ﺗﺨﺮﺑﻂ اﻧﺖ ﻧﻔﺴﻚ ﻟﻤﺎ ﺗﻜﺘﺐ , coutﻫﻞ ﻗﺼﺪك ﻋﻦ أداة اﻟﻄﺒﺎﻋﺔ وﻻ ﻋﻦ اﻟﻤﺘﻐﻴﺮ ! ,
واﻟﻜﻮﻣﺒﺎﻳﻠﺮ رح ﻳﺤﻜﻲ اﻧﻪ ﻓﻲ errorﻟﻤﺎ ﺗﺴﺘﺨﺪم اﻟﻤﺘﻐﻴﺮ ﺑﺠﻤﻠﺔ ال , coutﻻﻧﻪ ﻫﻮ ﺑﻄﻞ ﻋﺎرف اﻳﺎه اﻟﻤﺘﻐﻴﺮ
وأﻳﺎﻫﺎ اﻷداة
(9)
ﻫﻮن ﻋﺮﻓﺖ ﻣﺘﻐﻴﺮ ﻣﻦ ﻧﻮع ) integerﻋﺪد ﺻﺤﻴﺢ( اﺳﻤﻪ coutوﺧﺰﻧﺖ ﻓﻴﻪ ﻗﻴﻤﺔ 7وﻣﺎ اﻋﺘﺮض اﻟﻜﻮﻣﺒﺎﻳﻠﺮ ,
ﺑﻴﻨﻤﺎ اﻋﺘﺮض ﻟﻤﺎ اﺳﺘﺨﺪﻣﺘﻪ ﻣﻊ أداة ال cout
ﻫﺎذ اﻟﺴﻼﻳﺪ ﻓﻲ أﻣﺜﻠﺔ ﻋﻠﻰ
أﺳﻤﺎء ﻣﺴﻤﻮﺣﺔ ) (legalوأﺳﻤﺎء
ﻣﻤﻨﻮﻋﺔ ﻣﻊ اﻟﺘﻌﻠﻴﻞ :
------------------------------------------------------------------------------------------------
اﻟﻤﺘﻐﻴﺮ ﻓﻲ ﻟﻐﺔ ال ++cإﻟﻪ 3ﺻﻔﺎت ,اﻻﺳﻢ وﺣﻜﻴﻨﺎ ﻋﻨﻪ واﻟﻨﻮع واﻟﻘﻴﻤﺔ ) ﺑﺤﺪدﻫﺎ اﻟﻨﻮع(
ﻨﻮ ِﺟﺪ ﻧﺘﻴﺠﺔ ﻟﻌﻤﻠﻴﺔ اﺳﻤﻬﺎ ):declarationإﻋﻼن( ,وﻫﺎي اﻟﻌﻤﻠﻴﺔ ﻫﻲ ﻋﺒﺎرة ﻋﻦ ﺗﺮﻛﻴﺐ ﺑﺮﺑﻂ اﻻﺳﻢ واﻟﻤﺘﻐﻴﺮ ِﺑ َ
اﻟﻲ ﺑﺨﺘﺎره اﻟﻤﺒﺮﻣﺞ ﺑﻨﻮع ﻣﻌﻴﻦ ,
ﺑﺪاﻳﺔ ﺑﻨﻜﺘﺐ اﻟﻨﻮع وﺑﻌﺪﻳﻦ ﺑﻨﻜﺘﺐ اﻻﺳﻢ وﺑﻌﺪﻫﺎ اﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﺔ ,واذا ﻛﻨﺖ ﺑﺪي اﻋﻤﻞ اﻛﺜﺮ ﻣﻦ ﻣﻨﺘﻐﻴﺮ
ﻣﻦ ﻧﻔﺲ اﻟﻨﻮع ﺑﻘﺪر اﺧﺘﺼﺮ ع ﺣﺎﻟﻲ واﻛﺘﺐ اﺳﻢ اﻟﻨﻮع ﻣﺮة وﺣﺪة ,وﻓﺎﺻﻠﺔ ﺑﻴﻦ ﻛﻞ اﺳﻢ )ﻣﺜﻞ اﻟﻤﺜﺎل ﻳﻠﻲ
ﺑﺎﻟﺴﻼﻳﺪ(
-ﻣﻼﺣﻈﺔ :ﻟﻮ ﻋﺮﻓﺖ ﻣﺘﻐﻴﺮ و م اﻋﻄﻴﺘﻪ ﻗﻴﻤﺔ رح ﺗﺘﺨﺰن ﻓﻴﻪ ﻗﻴﻤﺔ ﻋﺸﻮاﺋﻴﺔ ﺗﻠﻘﺎﺋﻴﺎ .
.
أﻧﻮاع اﻟﺒﻴﺎﻧﺎت-:
اﻟﺘﻌﺮﻳﻒ ﻳﻠﻲ ﺑﺎﻟﺴﻼﻳﺪ م اﻟﻪ ﻋﻼﻗﺔ ﺑﺎﻟﺤﻴﺎة ) أو أﻧﺎ ﻣﺶ ﻓﺎﻫﻤﻪ (☹ ,ﺗﻌﺮﻳﻔﻬﺎ اﻟﺼﺤﻴﺢ أﻧﻪ ﻫﻲ ﺻﻔﺔ ﻟﻠﻤﺘﻐﻴﺮ او
ﻟﻠﺒﻴﺎﻧﺎت ﺑﺘﺤﺪد ﻟﻠﻜﻮﻣﺒﺎﻳﻠﺮ ﻛﻴﻒ رح ﺗﺴﺘﺨﺪم ﻫﺎﻟﻤﺘﻐﻴﺮ) ﺷﻮ رح ﺗﺨﺰن ﻓﻴﻪ (
وﺑﺘﻨﻘﺴﻢ ﻟﺜﻼث أﻗﺴﺎم زي ﻣﻬﻮ ﻣﻮﺿﺢ ﺑﺎﻟﺼﻮرة .
*********************************************************************
: Integer
ﻧﻮع ال integerواﺧﺘﺼﺎره : intﻫﻮ ﻋﺒﺎرة ﻋﻦ أي ﻋﺪد
ﺻﺤﻴﺢ ﻣﻮﺟﺐ أو ﺳﺎﻟﺐ ,اﻟﺴﺎﻟﺐ ﻻزم ﻧﺤﻂ ﻗﺒﻠﻪ اﻻﺷﺎرة
اﻟﺴﺎﻟﺒﺔ ,ﺑﻴﻨﻤﺎ اﻟﻤﻮﺟﺐ ﻣﺶ ﺿﺮوري ,و م ﺑﺼﻴﺮ ﻳﺤﺘﻮي
اﻟﺮﻗﻢ ﻓﻮاﺻﻞ ,ﺣﻜﻴﻨﺎ اﻧﻪ اﻟﻔﺎﺻﻠﺔ ﻋﺸﺎن ﺗﻔﺼﻞ اﻟﻌﻨﺎﺻﺮ
ﺑﻘﺎﺋﻤﺔ ﻣﻌﻴﻨﺔ ,ﻣﺜﻞ , int num,numb,numberف ﻫﻴﻚ
اﺳﺘﺨﺪﻣﺖ اﻟﻔﺎﺻﻠﺔ ﻋﺸﺎن اﻓﺼﻞ ﺑﻴﻦ اﻟﻤﺘﻐﻴﺮات ﻓﻲ ﺟﻤﻠﺔ ال . declaration
*********************************************************************
: Boolean
ﻧﻮع ) Booleanﻣﻨﻄﻘﻲ( واﺧﺘﺼﺎره boolﺑﺨﺰن ﻗﻴﻤﺘﻴﻦ
ﻓﻘﻂ trueورﻣﺰﻫﺎ ) false , (1ورﻣﺰﻫﺎ ) , (0وﻫﺎذ اﻟﻨﻮع
ﺑﺘﺤﻜﻢ ﺑﺎﻟﺘﻌﺎﺑﻴﺮ اﻟﻤﻨﻄﻘﻴﺔ )رح ﻧﺘﻌﺮف ﻋﻠﻴﻬﺎ ﺑﺪرس ال
(if clause
اﻟﻜﻠﻤﺎت , bool,true and falseﻫﻲ ﻛﻠﻤﺎت ﻣﺤﺠﻮزة
ﻓﻲ ﻟﻐﺔ ال . ++c
*********************************************************************
ﻫﺎذ اﻟﺠﺪول ﺑﺒﻴﻨﻠﻚ ﻛﻞ ﻗﻴﻤﺔ ﺑﻘﺪر ﻛﻞ ﻧﻮع ﻳﺨﺰﻧﻬﺎ ,وﺣﺠﻤﻬﺎ ﺑﺎﻟﺬاﻛﺮة .ﺷﻮ ﻳﻌﻨﻲ ﺣﺠﻤﻬﺎ؟؟ ,ﻳﻌﻨﻲ أﻧﺎ ﻟﻤﺎ
اﻋﻄﻲ ﺟﻤﻠﺔ declarationﻣﺜﻼ
int n =8 ;
اﻟﻜﻮﻣﺒﺎﻳﻠﺮ رح ﻳﺤﺠﺰ ﻣﻜﺎن ﺑﺎﻟﺮام ﺣﺠﻤﻪ , Byte-4وﻳﺨﺰن ﻓﻴﻬﺎ ﻗﻴﻤﺔ ال 8ﻟﻜﻦ ﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ )ﺑﺘﺘﻌﻠﻢ ﻛﻴﻒ
ﻳﻌﻨﻲ ﺑﺎﻟﻨﻈﺎم اﻟﺜﻨﺎﺋﻲ ﺑﻤﺎدة اﻟﺪﻳﺠﺘﺎل( ,ﻓﻌﻠﻴﺎ ال 8م ﺑﺘﺤﺘﺎج , 4byteﺑﺲ رح ﺗﺤﺠﺰﻫﻢ ﻛﻠﻬﻢ ﻻﻧﻪ ﻧﻮﻋﻬﺎ
.integer
ﺑﺎﻟﻨﺴﺒﺔ ﻟﻸﻗﺴﺎم اﻟﺜﺎﻧﻴﺔ ﻟﻞ simpleم اﻧﺬﻛﺮت ﺑﺎﻟﺴﻼﻳﺪات ك ﺷﺮح ﻟﻜﻦ ﻟﻠﻲ ﺣﺎب ﻳﺴﺘﺰﻳﺪ ﻫﺎذ راﺑﻂ ﻣﻤﺘﺎز
ﺑﺸﺮﺣﻬﻢ ﻛﻠﻬﻢ اﻟﺮاﺑﻂ .
ﻟﻐﺔ ال ++cﺑﺘﺴﺘﺨﺪم ﻃﺮﻳﻘﺔ ﻟﺘﻤﺜﻴﻞ اﻻرﻗﺎم اﻟﻌﺸﺮﻳﺔ )ﺟﻮا ال , (RAMواﻟﺘﻤﺜﻴﻞ ﺑﻜﻮن ﻛﺎﻟﺘﺎﻟﻲ
ﺧﺎﻧﺔ وﺣﺪة ﻗﺒﻞ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺸﺮﻳﺔ ,و 6ﺧﺎﻧﺎت ﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺸﺮﻳﺔ ,وﺑﻌﺪ اﻟﺨﺎﻧﺔ اﻟﻌﺸﺮﻳﺔ ﻓﻲ اﻟﺤﺮف Eوﺑﻌﺪ
اﻟﺤﺮف ﻓﻲ اﻟﺮﻗﻢ ﻳﻠﻲ اﻧﺖ ﺣﺮﻛﺖ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺸﺮﻳﺔ ﺑﻤﻘﺪاره ,ﻟﻮ ﺣﺮﻛﺖ ﻟﻠﻴﻤﻴﻦ ﺑﻨﻘﺺ اﻟﺮﻗﻢ واﺣﺪ وﻟﻮ ﺣﺮﻛﺖ
ﻟﻠﺸﻤﺎل ﺑﺰﻳﺪ اﻟﺮﻗﻢ واﺣﺪ .
وﻳﺠﺪر ﺑﺎﻟﺬﻛﺮ اﻧﻪ ﻻزم ﻳﻜﻮن ﺑﺎﻟﺮﻗﻢ ﻓﺎﺻﻠﺔ ﻋﺸﺮﻳﺔ ﺣﺘﻰ اﻋﺘﺒﺮه . floating point number
ﻃﺒﻌﺎ ال exponentﻻزم ﻳﻜﻮن ) intﻻﻧﻪ ﺑﻤﺜﻞ ﻋﺪد ﺧﺎﻧﺎت( ﺑﻴﻨﻤﺎ اﻟﺮﻗﻢ ﻳﻠﻲ ﻗﺒﻠﻪ ﻣﺶ ﺿﺮوري ﻳﻜﻮن int
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
ﺑﻴﻨﻤﺎ ﻟﻮ ﺣﻮﻟﺖ ﻣﻦ floatل intرح أﺧﺴﺮ اﻟﻘﻴﻤﺔ ﻳﻠﻲ ﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ اﻟﻌﺸﺮﻳﺔ ) .(lose data
ﻣﺜﺎل :
--------------------------------------------------------------------------------------------------------------
ﻋﻤﻠﻴﺔ اﻟﻄﺮح ﻫﻲ ﻋﻤﻠﻴﺔ ﺛﻨﺎﺋﻴﺔ )) (binaryﺑﺘﻮﺧﺬ ﻃﺮﻓﻴﻦ اﻟﻤﻄﺮوح واﻟﻤﻄﺮوح ﻣﻨﻪ ( ﻓﻲ ﻋﻨﺪﻧﺎ اﺷﺎرة اﻟﺴﺎﻟﺐ
أﺣﺎدﻳﺔ ) (Unaryوﻫﻲ ﻳﻠﻲ ﺑﺘﻮﺧﺬ ﻃﺮف واﺣﺪ ع ﻳﻤﻴﻨﻬﺎ ﻣﺜﻞ اﻟﻤﺜﺎل ﻳﻠﻲ ﺑﺎﻟﺴﻼﻳﺪ ,وﻧﻔﺲ اﻻﺷﻲ اﻟﺠﻤﻊ
ﻋﻤﻠﻴﺔ ﺛﻨﺎﺋﻴﺔ ,ﺑﻴﻨﻤﺎ اﺷﺎرة اﻟﻤﻮﺟﺐ أﺣﺎدﻳﺔ )) (Unaryﺑﺘﻌﻄﻲ اﺷﺎرة ﻟﻠﻲ ﺑﻌﺪﻫﺎ( ﻟﻜﻦ م ﻓﻲ داﻋﻲ اﻛﺘﺒﻬﺎ
ﻟﻠﺮﻗﻢ ﻛﻮﻧﻪ ﻋﺪم وﺟﻮدﻫﺎ ووﺟﻮدﻫﺎ ﺑﺮﺿﻮ ﺑﺸﻴﺮ ﻟﻨﻔﺲ اﻻﺷﻲ ) إﻧﻪ اﻟﺮﻗﻢ ﻣﻮﺟﺐ (
--------------------------------------------------------------------------------------------------------------
وﺑﺮﺿﻮ ﻟﻮ ﻋﻤﻠﺖ ﻣﺘﻐﻴﺮ ﻣﻦ ﻧﻮع float , doubleرح ﻳﻌﻄﻴﻨﻲ اﻳﺮور اذا اﺳﺘﻌﻤﻠﺖ ﻣﻌﻪ %ﺣﺘﻰ ﻟﻮ ﻣﺨﺰن ﻓﻴﻪ ﻋﺪد
ﺻﺤﻴﺢ
------------------------------------------------------------------------------------------------
********************************************************
**************************************************************
************************************************************
ﺑﻴﻨﻤﺎ ﻟﻮ دﺧﻠﺖ ﻋﻨﺪي اﻻﻗﻮاس ,رح ﺗﻜﻮن اﻟﻌﻤﻠﻴﺔ ﻳﻠﻲ ﺟﻮا اﻟﻘﻮس ﻫﻲ ﺻﺎﺣﺒﺔ اﻻوﻟﻮﻳﺔ ﺑﻐﺾ اﻟﻨﻈﺮ ﻋﻨﻬﺎ ..
--------------------------------------------------------------------------------------------------------------
ﻓﻲ operatorﺑﺘﺴﻤﺤﻠﻚ
ﺗﺤﻮل اﻟﺪاﺗﺎ ﻣﻦ ﻧﻮع ﻟﻨﻮع
ﺛﺎﻧﻲ ..
-----------------------------------------------------------------------------------------------------------
َ
..
ُ ُ
... ...
ٔ
... ...
ُ ُ ْٔ
! ..
ﻓﻲ ﻋﻨﺪﻧﺎ إﺷﻲ اﺳﻤﻪ ) NULLﻛﻠﻪ ﻛﺎﺑﺘﻞ( وﻫﻮ stringﻳﻠﻲ ﻓﻴﻪ ) (zero charﻳﻌﻨﻲ وﻻ اﺷﻲ .
وﻛﻞ ﻛﺮاﻛﺘﺮ داﺧﻞ ال stringإﻟﻪ ﻣﻜﺎن ﺧﺎص ﻓﻴﻪ ,وﺗﺮﻗﻴﻢ ﻫﺎﻻﻣﺎﻛﻦ ﺑﺒﻠﺶ ﻣﻦ ﻋﻨﺪ اﻟﺼﻔﺮ ,ﻳﻌﻨﻲ أول
charداﺧﻞ ال stringﺑﻜﻮن اﻟﻤﻮﻗﻊ ﺗﺎﻋﻪ .0
وﻃﻮل اﻟﺴﺘﺮﻳﻨﻎ ﺑﻜﻮن ﻋﺪد ال charﻳﻠﻲ ﻓﻴﻪ ) ﺑﺘﺒﻠﺶ ﺗﻌﺪ ﻣﻦ واﺣﺪ ﻣﺶ ﻣﻦ ﺻﻔﺮ( .
ﻣﺜﻼ ﻋﻨﺪي " , string s="JUST32إذا ﻃﻠﺐ ﻣﻦ ال positionﻟﻠﺤﺮف Tﺑﻜﻮن اﻟﺠﻮاب , 3وﻃﻮل ال string
ﻛﺎﻣﻞ . 6
------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------
وﻻزم ﻧﻌﺮف إﻧﻪ ﻫﺎي ال increment أو ال decrementﻣﻤﻜﻦ ﻳﻜﻮﻧﻮا ﺑﺸﻜﻠﻴﻦ , اﻷول اﺳﻤﻪ) prefix ﺳﺎﺑﻘﺔ(
ورح ﻧﻮﺿﺢ اﻻﺧﺘﻼف ﺑﻴﻨﻬﻢ ﻣﻦ ﺧﻼل ﻣﺜﺎل ﺣﺎرق ﺧﺎرق ﻣﺘﻔﺠﺮ : واﻟﺜﺎﻧﻲ اﺳﻤﻪ ) postfixﻻﺣﻘﺔ(
ﻋﻨﺪﻧﺎ ﻣﺘﻐﻴﺮات m,o,hوﻗﻴﻤﺔ , m=5ﺣﻜﻴﻨﺎ اﻧﻪ ال o=m ++ف اﻟﻤﻔﺮوض اﻧﻪ , o=6ﻟﻜﻦ oﺿﻠﺖ 5ﻟﻴﺶ !!
ﻟﻺﻧﻪ أوﻟﻮﻳﺔ ال postﺿﻌﻴﻔﺔ ﺟﺪا , أﻗﻞ ﻣﻦ أوﻟﻮﻳﺔ اﻟﻤﺴﺎواة وﻣﻦ أي أوﻟﻮﻳﺔ أﺧﺮى , ف ﺗﻢ اﺳﻨﺎد ﻗﻴﻤﺔ ال 5ﻟﻞ o
ﺑﺎﻻول وﺑﻌﺪﻫﺎ ال mإﻧﺰادت واﺣﺪ ,ﻓﺼﺎرت ﻋﻨﺪي ال o=5و ال m=6وﻋﻨﺪ اﻟﻄﺒﺎﻋﺔ ﻃﺒﻊ .o=5
وﺣﻜﻴﻨﺎ ال h=++mو mأﺻﻼ 6ف ﻫﻞ رح ﻳﻌﻤﻞ إﺳﻨﺎد ﻗﺒﻞ م ﻳﺰﻳﺪ ال 1وﻻ ﺑﻌﺪ ؟
اﻻوﻟﻮﻳﻪ ﻓﻲ ال pre ﻋﺎﻟﻴﺔ ﺟﺪا , ف ﺑﻨﻔﺬﻫﺎ ﻗﺒﻞ ﻣﺎ ﻳﻨﻔﺬ أي ﻋﻤﻠﻴﺔ , ف زاد ﻋﻠﻰ ﻗﻴﻤﺔ m وﺻﺎرت 7 وﺑﻌﺪﻳﻦ
أﻋﻄﺎﻫﺎ ل .h
*****************************************************
اﻟﻌﻤﻠﻴﺎت اﻟﻤﺨﺘﺼﺮة ) : (shortcut operatorsﻫﻲ ﻋﺒﺎرة ﻋﻦ ﻃﺮﻳﻘﺔ ﻟﻜﺘﺎﺑﺔ اﻟﻌﻤﻠﻴﺎت ﺑﺸﻜﻞ ﻣﺨﺘﺼﺮ .
ﻟﻜﻦ ﻻزم اﻟﻌﻤﻠﻴﺔ ﻳﺘﻄﺒﻖ ﻋﻠﻴﻬﺎ ﺷﺮﻃﻴﻦ :اﻻول اﻧﻬﺎ ﺗﻜﻮن ) binaryاﻟﻬﺎ ﻃﺮﻓﻴﻦ ﻣﺜﻞ اﻟﺠﻤﻊ او اﻟﻄﺮح(
اﻟﺜﺎﻧﻲ إﻧﻬﺎ ﺗﻜﻮن ع ﻫﺎي اﻟﺼﻴﻐﺔ variable = variable operator expression :
رح ﻧﻌﺮف ﺑﻬﺎذ اﻟﺴﻼﻳﺪ ﻣﺼﻄﻠﺢ ﺟﺪﻳﺪ اﺳﻤﻪ ) literalاﻟﻘﻴﻤﺔ اﻟﺜﺎﺑﺘﺔ ( :وﻫﻮ ﻋﺒﺎرة ﻋﻦ اﻟﺮﻣﺰ ﻳﻠﻲ ﺑﺤﺪد
اﻟﻘﻴﻤﺔ .
ﻳﻌﻨﻲ ﻣﺜﻼ ﺑﺪي أﻋﺒﺮ ﻋﻦ ﻗﻴﻤﺔ ﻣﻘﺪارﻫﺎ ﺳﺒﻌﺔ ف اﻟﺮﻣﺰ ﻳﻠﻲ ﺑﻤﻜﻨﻨﻲ ﻣﻦ اﻟﺘﻌﺒﻴﺮ ﻋﻦ ﻫﺎي اﻟﻘﻴﻤﺔ ﻫﻮ اﻟﺮﻣﺰ
7ف ال 7ﺑﺘﻜﻮن . literal
أﻣﺜﻠﺔ :
char m =’a’+i;
ﺑﻴﻨﻤﺎ ﺑﺂﺧﺮ ﻣﺜﺎل ﻛﺎﻧﺖ اﻟﻘﻴﻤﺔ expressionﻣﺶ ) literalﻻزم ﺗﻜﻮن ﻛﻠﻬﺎ ﺛﻮاﺑﺖ ﻟﺤﺘﻰ اﻋﺘﺒﺮﻫﺎ (literal
--------------------------------------------------------------------------------------------------------------
ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺴﻄﺮ اﻟﺘﺎﺳﻊ ,ﺑﺲ ﻛﺘﺒﺎ \bاﻟﻤﺆﺷﺮ رﺟﻊ ﺧﻄﻮة ﻟﻮرا وﻛﺘﺐ اﻟﺤﺮف ﻳﻠﻲ ﺑﻌﺪ ال) \bﻛﺎن ﻓﺮاغ ﺑﺎﻟﻤﺜﺎل( ﻋﻠﻰ اﻟﻤﻜﺎن ﻳﻠﻲ
ﻣﻮﺟﻮد ﻋﻠﻴﻪ ﺣﺎﻟﻴﺎ )ﻛﺎن ﺣﺮف (aﺑﺎﻟﻤﺜﺎل .
ﻣﺜﺎل -:
**************************
ﻣﺜﺎل -:
وﻫﺎي اﻻوﺗﺒﻮت
----------------------------------------------------------------------
*****************************************
****************************************
******************************************
-----------------------------
*******************************
****************************
ﻓﻲ اﺧﺘﻼف و ال nأﻛﺒﺮ ﻣﻦ i
*******************************
------------------------------
------------------------------------------------------------------------------------------------
اﻵن رح ﻧﺸﻮف ﻧﻮع ﺛﺎن ﻣﻦ ال , operatorsوﻫﻮ ال booleanأو ال ) logicalاﻟﻤﻨﻄﻘﻲ( وﻫﺎي اﻟﻌﻤﻠﻴﺎت
ﺑﺘﺨﻠﻴﻨﻲ اﻋﻤﻞ ﺗﺮﻛﻴﺐ ﺑﻴﻦ ال ) logical expressionﻳﻠﻲ ﺑﺤﺘﻮوا (relational operator
ال andإﻟﻬﺎ ﻃﺮﻓﻴﻦ ) (binary operatorواﻟﻨﺎﺗﺞ ﺑﻜﻮن trueإذا ﻛﺎﻧﻮا اﻟﻄﺮﻓﻴﻦ , trueﻏﻴﺮ ﻫﻴﻚ ﺑﻜﻮن false
ال orإﻟﻬﺎ ﻃﺮﻓﻴﻦ ) (binary operatorواﻟﻨﺎﺗﺞ ﺑﻜﻮن falseإذا ﻛﺎﻧﻮا اﻟﻄﺮﻓﻴﻦ , falseﻏﻴﺮ ﻫﻴﻚ ﺑﻜﻮن true
ﻓﻲ إﺷﻲ ﺑﺪﻧﺎ ﻧﻨﻮه ﻋﻠﻴﻪ :ال and operatorإذا ﻛﺎن واﺣﺪ ﻣﻦ اﻃﺮاﻓﻬﺎ ﻳﺴﺎوي , 0ف أﻛﻴﺪ اﻟﺠﻮاب ﺻﻔﺮ ,ف م
ﺑﺘﺸﻮف اﻟﻄﺮف اﻟﺜﺎﻧﻲ أﺑﺪا وﻻ ﺑﺘﻨﻔﺬه وﻫﺎي إﺳﻤﻬﺎ Short-circuit evaluation
وال ORﻧﻔﺲ اﻻﺷﻲ اذا ﻛﺎن واﺣﺪ ﻣﻨﻬﻢ ﻳﺴﺎوي 1ف أﻛﻴﺪ اﻟﺠﻮاب .1
ﻣﺜﺎل :
output:
ﻣﻼﺣﻈﺔ :اﻻﺻﻞ ﺑﺎل boolean operatorاﺳﺘﻌﻤﻞ ﻣﻌﻬﻢ ﻣﺘﻐﻴﺮات ﻣﻦ ﻧﻮع boolﺑﺲ ﺑﺼﻴﺮ اﺳﺘﻌﻤﻞ ﻣﻌﻬﻢ اي ﻧﻮع
وﺑﺘﻜﻮن ﻛﻞ اﻟﻘﻴﻢ ﺑﺘﻤﺜﻞ , true 1ﻣﺎ ﻋﺪا ال 0ﺑﺘﻤﺜﻞ , falseﻳﻌﻨﻲ
--------------------------------------------------------------------------------------------------------------
*************************************************************
ﻳﻌﻨﻲ ﻋﻨﺪي ﺷﺮط وﻋﻨﺪي أداة ﺷﺮط وﻋﻨﺪي ﺟﻮاب ﺷﺮط وﻫﺎذ
ﺗﻮﺿﻴﺢ
***************************************************************
ﻣﺜﺎل :
*********************************
ﻣﺜﺎل :
------------------------------------------------------------------------------------------------
ﻻزم ﺗﻨﺘﺒﻪ وﺗﻔﺮق ﺑﻴﻦ ال== )ﻫﻞ ﻳﺴﺎوي( وال = ) اﻟﻤﺴﺎواة ( ف ﻟﻮ ﻛﺘﺒﺖ = ﺑﺪل == رح ﺗﻮﻗﻊ ب logical error
وﺑﺒﺪأ ﺑﻬﺎذ اﻟﺮﻣﺰ } و ﺑﻨﺘﻬﻲ ﺑﻬﺎذ { و اﻟﻜﻮﻣﺒﺎﻳﻠﺮ ﺑﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﻠﻮك ﻛﺄﻧﻪ ﺟﻤﻠﺔ وﺣﺪة .
ﻣﺜﺎل :
------------------------------------------------------------------------------------------------
ﺧﻠﻴﻨﺎ ﻧﺸﻮف ﺗﻄﺒﻴﻖ ﻋﻤﻠﻲ ﻋﻠﻰ ال if statementﺑﺪل اﻻﻣﺜﻠﺔ ﻳﻠﻲ ﻛﻠﻬﺎ اﺳﺎﻣﺔ وﻣﺤﻤﺪ وﺟﺴﻨﻲ :D
وﺑﺎﻟﻨﺴﺒﺔ ﻟﺴﻄﺮ , 11أﻧﺎ ﻛﺘﺒﺖ andﺑﻬﺎﻟﻄﺮﻳﻘﺔ ﻣﺸﺎن اﺣﻜﻴﻠﻚ إﻧﻪ ﻓﻲ ﺑﻌﺾ اﻟﻜﻮﻣﺒﺎﻳﻠﺮات )ﺧﺼﻮﺻﺎ اﻻوﻧﻼﻳﻦ(
ﺑﻘﺒﻠﻮ ﻫﺎﻟﻜﺘﺎﺑﺔ ,وﺑﻘﺒﻠﻮ ﺗﻜﺘﺐ ال || ﻫﻴﻚ orوال ! ﻫﻴﻚ .not
وﻫﺎذ راﺑﻂ اﻟﻜﻮد .
اﻵن رح ﻧﺸﻮف ﻣﻮﺿﻮع ﺟﺪﻳﺪ اﻟﻤﻔﺮوض اﻧﺸﺮح ﻗﺒﻞ )ﺑﺲ ﻫﻴﻚ ﺗﺮﺗﻴﺐ اﻟﺴﻼﻳﺪات(
*****************************************************
ﻣﺸﺎن اﺧﻠﻲ اﻟﻤﺆﺷﺮ ﻳﻨﺰل ﺳﻄﺮ ﻋﻨﺪي ﻃﺮﻳﻘﺘﻴﻦ اﻷوﻟﻰ ﻳﻠﻲ ﺗﻌﻠﻤﻨﺎﻫﺎ ﻓﻲ ال escape charchters
1
2
3
------------------------------------------------------------------------------------------------
َ ُ ّ ُ
ـ .. ِ ِ
ّ ْ َ ْ َ َ ُ َ َ َْ َ َ ُ
ٍ
ـ ِ ـ .. ِ ..
َ ُ َ ُ ُ
ُ ً ً َ ُ ّ َ ٔ
ـ .. ِ ..
ٓ َ َ ُ
ِ ـ ُ ..
ﺑﻨﺴﺘﺨﺪم ال cinﻟﻨﻮﺧﺬ
ﻣﻌﻠﻮﻣﺎت ﻣﻦ اﻟﻤﺴﺘﺨﺪم
وﻧﺨﺰﻧﻬﺎ ﻓﻲ ﻓﺎرﻳﺒﻞ ,
واﻟﻔﺮق ﺑﻴﻦ ال cinوال
: coutإﻧﻪ زي م ﺷﻔﻨﺎ ال
coutﻣﻤﻜﻦ ﺗﻮﺧﺬ ع
ﻃﺮﻓﻬﺎ varاو literalاو
, expﺑﻴﻨﻤﺎ ال cinﻣﻤﻨﻮع
ﺗﻮﺧﺬ ع ﻃﺮﻓﻬﺎ ﻏﻴﺮ .var
------------------------------------------------------------------------------------------------
ﺑﺘﻌﻄﻴﻪ
------------------------------------------------------------------------------------------------
> #include <cmath
ﻓﻲ ﻓﻜﺮة أﺧﻴﺮة ﺑﺎﻟﺘﺸﺎﺑﺘﺮ )ﻏﺎﻟﺒﺎ ﻣﺎ ﺑﺘﻜﻮن ﻣﻄﻠﻮﺑﺔ(
اﻻوﻟﻰ اﺳﻤﻬﺎ fixedوﺑﺘﻌﺮض اﻟﺮﻗﻢ ﺑﺎﻟﺼﻴﻐﺔ اﻟﻌﺎدﻳﺔ واﻧﺖ ﺑﺘﺤﺪد ﻛﻢ ﺧﺎﻧﺔ ﺑﺪك ﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ ,وإذا م ﺣﺪدت
ﻏﺎﻟﺒﺎ ﺑﻌﺘﺒﺮﻫﻦ .6
واﻟﺜﺎﻧﻴﺔ اﺳﻤﻬﺎ scientificوﺑﺘﻌﺮﺿﻪ ﺑﺎﻟﺼﻴﻐﺔ اﻟﻌﻠﻤﻴﺔ وﺑﺮﺿﻮ ﺑﺘﻘﺪر ﺗﺤﺪد ﻛﻢ ﺧﺎﻧﺔ ﺑﺪك ﺑﻌﺪ اﻟﻔﺎﺻﻠﺔ واذا م
ﺣﺪدت ﺑﻌﺘﺒﺮﻫﻢ 6ﻏﺎﻟﺒﺎ .