Académique Documents
Professionnel Documents
Culture Documents
اﻟﺘﺮاﻛﯿﺐ ھﯿﻜﻠﯿﺔ
اﻟﺸﺮﻃﯿﺔ اﻟﺒﺮاﻣﺞ
اﻟﻤﺼﻔﻮﻓﺎت اﻟﺤﻠﻘﺎت
اﻟﺘﻜﺮارﯾﺔ
اﻟﺪوال
اﻟﻤﺤﺘﻮﯾﺎت
21 اﻟﻔﺼﻞ اﻟﺮاﺑﻊ :ﺗﺮاﻛﯿﺐ اﻟﺘﻜﺮار 4 اﻟﻔﺼﻞ اﻻول :أﺳﺎﺳﯿﺎت اﻟﻠﻐﺔ
ﺍﳊﻤﺪ ﷲ ﺭﺏ ﺍﻟﻌﺎﳌﲔ
واﻟﺼ ﻼة واﻟﺴ ﻼم ﻋﻠ ﻰ ﺳ ﯿﺪ اﻻوﻟ ﯿﻦ واﻻﺧ ﺮﯾﻦ اﺑ ﻮ اﻟﻘﺎﺳ ﻢ ﻣﺤﻤ ﺪ وال ﺑﯿﺘ ﮫ اﻟﻄﯿﺒ ﯿﻦ اﻟﻄ ﺎھﺮﯾﻦ واﺻ ﺤﺎﺑﺔ
اﻟﻤﻨﺘﺠﺒﯿﻦ .
اﻻھﺪاء
اﻟﻰ اﻟﻣﻼك اﻟطﺎھر ...
ذي اﻟﻘﻠب اﻟﻛﺑﻳر واﻟﻧﻔس اﻟﻠواﻣﺔ اﻟﻣطﻣﺋﻧﺔ ...
واﻟذي ﺗﻌﻠق ﺑرﺑﻪ ﻓدﻋﺎه ﺧوﻓﺎً وطﻣﻌﺎً ...
وﻣﺎ ھو اﻻ ﻗﺑﺿﺔ ﻣن رﺣﻣﺔ وﻋطف وﺣﻧﺎن ...
ﻟﻘد اﻧﻔﺻﻞ ﺟﺳﻣﻲ ﻋن ﺟﺳﻣﻪ ...
ﻟﻛن روﺣﻲ ﻟم ﺗزل ﺑروﺣﻪ ﻣﺗﺻﻠﺔ ...
وﺑﮫدﻳﻪ وارﺷﺎده ﻋرﻓت ﺟﺎدة اﻟﺻواب ...
واﺳﺗﺑﺄﻧت ﺳﺑﻳﻞ اﻟرﺷﺎد ...
ﻓرﺿﻰ اﷲ ﻋﻧﻪ وأرﺿﺎه ...
اﻟﻰ ﻣن اﺳﺗﻠﮫﻣت ﻣﻧﻪ أﺳﺑﺎب اﻟﺑﻘﺎء ...
اﻟﻰ أﻣﻲ ...ﺑﻌد اﺳﺗﺋذان ...أﺑﻲ ...اﻟﻌظﻳم ...
ﻣﺣﻣد اﻟﺑﮫﺎدﻟﻲ
ﻣﻘﺪﻣﺔ:
أﺻﻞ ﻟﻐﺔ ، Cھﻲ ﻟﻐﺔ CPLواﻟﺘﻲ اﺷﺘﮭﺮت ﺑﺸﺪة ﺗﻌﻘﯿﺪھﺎ ﻣﻤﺎ ﺗﺴﺒﺐ ﻓﻲ اﺑﺘﻌﺎد اﻟﻤﺒﺮﻣﺠﯿﻦ ﻋﻨﮭﺎ،ﻓﺘﻢ ﺗﻄﻮﯾﺮھﺎ وﺗﺒﺴﯿﻄﮭﺎ إﻟﻰ ﻟﻐﺔ ﺳﻤﯿﺖ BCPL
واﻟﺘﻲ ﻟﻢ ﺗﻠﻘﻰ اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻨﺠﺎح وﻟﻜﻨﮭﺎ ﺗﻄﻮرت إﻟﻰ ﻟﻐﺔ ، Bوﺑﻌﺪ ﻓﺘﺮة ﻗﺼ ﯿﺮة ﺗ ﻢ ﺗﻄ ﻮﯾﺮ اﻟﻠﻐ ﺔ Bﻓ ﻲ ﻣﺨﺘﺒ ﺮات ﺑﯿ ﻞ ﻣ ﺎﺑﯿﻦ ﻋ ﺎﻣﻲ 1972 – 1969
اﻟﻰ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﺟﺪﯾﺪة ﺗﻀﻤﻨﺖ ﺗﺤﺪﯾﺜﺎت وﺣﻠﻮل ﻟﻤﻌﻈﻢ اﻟﻤﺸﺎﻛﻞ اﻟﺘﻲ ﻇﮭﺮت ﻟﻠﻤﺒﺮﻣﺠﯿﻦ ﻓﻲ ذﻟﻚ اﻟﻮﻗﺖ ،ﺳﻤﯿﺖ ھ ﺬه اﻟﻠﻐ ﺔ اﻟﺠﺪﯾ ﺪة ﺑﺄﺳ ﻢ اﻟﻠﻐ ﺔ ) Cو
ھﺬا ھﻮ أﺻﻞ ﺗﺴﻤﯿﺔ .(Cﻟﻐﺔ Cﺗﻤﺜﻞ اﻟﻠﻐﺔ اﻻم ﻟﻠﻌﺪﯾﺪ ﻣﻦ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ وﻣﻨﮭﺎ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ C++واﻟﺠﺎﻓﺎ .
ﻓ ﻲ ﻋ ﺎم 1978ﻗ ﺎم اﻟﻌﺎﻟﻤ ﺎن ﺑ ﺮاﯾﻦ ﻛﺮﻧﯿﻜ ﺎن ) (Brian Kernighanو دﻧ ﺲ رﺗﺸ ﻲ ) (Dennis Ritchieﺑﻨﺸ ﺮ أول ﻛﺘ ﺎب ﯾﺘﻀ ﻤﻦ اﻟﻠﻐ ﺔ C
ﺑﺼ ﻮرة ﻣﻔﺼ ﻠﮫ ﺗﺤ ﺖ ﻋﻨ ﻮان ) ،(The C Programming Languageﺣﯿ ﺚ أﺻ ﺒﺢ ھ ﺬا اﻟﻜﺘ ﺎب اﻟﻤﺮﺟ ﻊ اﻻﺳﺎﺳ ﻲ ﻓ ﻲ اﻟﻠﻐ ﺔ Cﺣﺘ ﻰ ﯾﻮﻣﻨ ﺎ
ھﺬا.واﻟﻠﻐﺔ Cﻗﺪ ﺻﻤﻤﺖ ﻓﻲ اﻷﺻﻞ ﻟﺘﺴﺘﻌﻤﻞ ﻓﻲ ﺗﻄﻮﯾﺮ و اﻟﻌﻤﻞ ﺗﺤﺖ ﻧﻈﺎم اﻟﺘﺸﻐﯿﻞ ﯾﻮﻧﻜﺲ ،ﺛﻢ ﻟﻘﯿﺖ اﻧﺘﺸﺎرا واﺳﻌﺎ ﻣﻨﺬ ذﻟ ﻚ اﻟﺤ ﯿﻦ و ﺗﻮاﺻ ﻞ إﻟ ﻰ
اﻟﯿﻮم وﯾﻈﮭﺮ ذﻟﻚ ﻣﻦ ﺧﻼل ﺷﻌﺒﯿﺘﮭﺎ ﻟﺪى أﻏﻠﺐ ﻣﺒﺮﻣﺠﻲ اﻟﺤﺎﺳﻮب و ﻣﻦ ﺧﻼل اﻻﺳﺘﻌﻤﺎﻻت اﻟﻌﺪﯾﺪة واﻟﻤﺘﻨﻮﻋﺔ.
) (1.1اﻟﺮﻣﻮز)(Characters
وﺗﺘﺄﻟﻒ ﻣﻦ -:
(aاﻷرﻗﺎم) (digitsوھﻲ 9,8,7,6,5,4,3,2,1,0
(bاﻟﺤﺮوف اﻟﮭﺠﺎﺋﯿﺔ) (lettersوھﻲ اﻟﺤﺮوف اﻟﻜﺒﯿﺮة A,B,C,…,X,Y,Zواﻟﺤﺮوف اﻟﺼﻐﯿﺮة a,b,c,…,x,y,z
(cاﻟﺮﻣﻮز اﻟﺨﺎﺻﺔ) (special charactersوھﻲ
+ - * / . ) ( : $ # ; , = < > } % { ! " '
auto break case catch char class const continue default delete
do double else enum extern false float for goto if
int long return short signed sizeof struct switch true typedef
.cاﻻﻋﺪاد اﻟﺤﻘﯿﻘﯿﺔ ذات اﻟﺪﻗﺔ اﻟﻤﻀﺎﻋﻔﺔ -:وھﻲ اﻻﻋﺪاد اﻟﺤﻘﯿﻘﯿﺔ اﻟﻤﻤﺜﻠﺔ ﺑﺸﻜﻞ ﻗﻮة آﺳ ﯿﺔ ﺑﺎﺳ ﺘﺨﺪام اﻟﺤ ﺮف ) (eأو اﻟﺤ ﺮف ) (Eﺣﯿ ﺚ ﯾ ﺪل
اﻟﺤﺮف eأو Eﻋﻠﻰ اﻟﻘﻮة .ﻣﺜﺎل 12.3e-5 72e-65 1.23e2 99.432E-8 0.22E9
اﻟﺴﻠﺴﻠﺔ -:وھﻲ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺤﺮوف أو اﻷرﻗﺎم أو اﻟﺮﻣﻮز اﻟﺨﺎﺻﺔ ،ﺑﺸﺮط أن ﺗﻜﻮن ﻣﻮﺿﻮﻋﺔ ﺑﯿﻦ ﻋﻼﻣﺘﻲ اﻟﺘﻨﺼﯿﺺ اﻟﻤﺰدوﺟﺔ)" "(.
:Variable_Nameﯾﻤﺜﻞ اﺳﻢ اﻟﻤﺘﻐﯿﺮ ،واﻟﺬي ﯾﺨﻀﻊ اﻟﻰ اﻟﺸﺮوط اﻟﺘﺎﻟﯿﺔ : ﺣﯿﺚ
3.4e- 38 to 3.4e+38
float Floating point number 4bytes
(7 digits)
-128 to 127
char Character 1byte
: (1.6.1) ﻣﺜﺎل
: وﻛﻤﺎ ﯾﻠﻲ، ﯾﻤﻜﻦ اﻻﻋﻼن ﻋﻦ أﻛﺜﺮ ﻣﻦ ﻣﺘﻐﯿﺮ ﻟﻨﻔﺲ اﻟﻨﻮع ﺑﺴﻄﺮ واﺣﺪ-:(1.6.2)ﻣﻼﺣﻈﺔ
Example
; int a,b
; float x,y,z
ﻣﻼﺣﻈﺔ) -:(1.6.3ﻣﻦ اﻟﻤﻤﻜﻦ أﻋﻄﺎء ﻗﯿﻤﺔ ﻟﻠﻤﺘﻐﯿﺮ أﺛﻨﺎء اﻻﻋﻼن ﻋﻦ ذﻟﻚ اﻟﻤﺘﻐﯿﺮ،وﻛﻤﺎ ﯾﻠﻲ :
; Type Variable_Name=Varible_Value
ﻣﻼﺣﻈﺔ) -:(1.6.4أﻧﺸﺎء اﷲ ﺳﻮف ﻧﺘﻄﺮق ﺑﺼﻮرة ﻣﻔﺼﻠﺔ ﻟﻌﻤﻠﯿﺎت أدﺧﺎل اﻟﻘﯿﻢ ﻟﻠﻤﺘﻐﯿﺮات ﻓﻲ اﻟﻔﺼﻞ اﻟﺜﺎﻧﻲ ﻓﻲ ﻣﻮﺿﻮع اﻻدﺧﺎل واﻻﺧﺮاج.
Examples
; const int pathwidth= 100
; 'const char tabulator= '\t
;"const char ch= "C Good Lang.
; const double PI= 3.14159265
) (1.8اﻟﻤﺆﺛﺮات)(Operators
ﯾﻮﺟﺪ ﻓﻲ ﻟﻐﺔ Cﻋﺪد ﻣﻦ اﻟﻤﺆﺛﺮات ،وھﻲ ﻛﺎﻻﺗﻲ-:
(aاﻟﻤﺆﺛﺮات اﻟﺤﺴﺎﺑﯿﺔ) :(Arithmetic Operatorsوھﻲ
ﻣﻼﺣﻈﺔ) -: (1.8.1ﯾﺠﺐ أن ﻧﺎﺧﺬ ﺑﻌﯿﻦ اﻻﻋﺘﺒﺎر ﺑﺎﻟﻨﺴﺒﺔ ﻟﻤﺆﺛﺮ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ ) ( %ﯾﺠ ﺐ أن ﺗﻜ ﻮن ﻋﻨﺎﺻ ﺮ اﻟﺒﯿﺎﻧ ﺎت اﻟﻤﺴ ﺘﻌﻤﻠﺔ ﻗ ﯿﻢ ﺻ ﺤﯿﺤﺔ واﻻ
ﻓﺎن اﻟﻨﺘﯿﺠﺔ ﺗﻜﻮن ﺧﺎﻃﺌﺔ.
، a%b=2 ﻣﺜﺎل -:اذا ﻛﺎن a=11و b=3ﻓﺎن
اﻣﺎ اذا ﻛﺎن aأو bأو ﻛﻼھﻤﺎ ﻋﺪداً ﺣﻘﯿﻘﯿﺎً ،ﻓﺎن ﻋﻤﻠﯿﺔ ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ ﻻ ﯾﻤﻜﻦ ﺗﻄﺒﯿﻘﮭﺎ ،ﻻن اﻟﻨﺘﯿﺠﺔ ﺗﻜﻮن ﺧﺎﻃﺌﺔ .
ﺻﻔﺤﺔ 7 University of Baghdad-College of Science- Department of Mathematics Email : m.albahadeli@yahoo.com
Introduction to C Programming Language C ﻣﻘﺪﻣﺔ ﻓﻲ اﻟﺒﺮﻣﺠﺔ ﺑﻠﻐﺔ
وھ ﻲ ﺳ ﺖ ﻣ ﺆﺛﺮات ﺗﺴ ﺘﺨﺪم ﻋﻠ ﻰ أي زوج ﻣ ﻦ اﻟﻌﻨﺎﺻ ﺮ وﯾﻜ ﻮن ﻧﺎﺗﺠﮭ ﺎ اﻣ ﺎ:(Relational Operators)( اﻟﻤ ﺆﺛﺮات اﻟﻌﻼﺋﻘﯿ ﺔb
:( وھﻲ ﻛﻤﺎ ﯾﻠﻲ0 )ﻗﯿﻤﺔFalse ً( أو ﺧﻄﺌﺎ0 )أي ﻗﯿﻤﺔ ﻣﺎ ﻋﺪاTrue ًﺻﺤﯿﺤﺎ
== Equal to 7= =5 False ( 0 )
FALSE ( أو ﻗﯿﻤ ﺔ ﺧﻄ ﺄ1 )اﻟﻌ ﺪدTRUE وھﻲ ﻣﺆﺛﺮات ﯾﻨﺘﺞ ﻋﻨﮭﺎ اﻣﺎ ﻗﯿﻤﺔ ﺻﺤﯿﺢ:(Logical operators)( اﻟﻤﺆﺛﺮات اﻟﻤﻨﻄﻘﯿﺔc
. (1 ) أي ﻗﯿﻤﺔ ﻣﺎ ﻋﺪا
a b a && b a||b !a
اﻟﻤﺆﺛﺮ ﻣﻌﻨﺎه
True True True True False
&& And
True False False True
|| Or
False True False True True
! negating or anti-thesis
False False False False
| OR Bitwise Inclusive OR
وھ ﻲ اﺳ ﺘﺨﺪام اﻟﻤ ﺆﺛﺮات اﻟﺤﺴ ﺎﺑﯿﺔ واﻟﻤ ﺆﺛﺮات اﻟﺨﺎﺻ ﺔC ھﻨﺎك ﻣﯿﺰة ﻓ ﻲ ﻟﻐ ﺔ:(Compound Operators)( اﻟﻤﺆﺛﺮات اﻟﻤﺮﻛﺒﺔe
: واﻟﻤ ﺆﺛﺮات اﻟﻤﺮﻛﺒ ﺔ ھ ﻲ. وھﻲ ﻃﺮﯾﻘﺔ ﻣﺨﺘﺼﺮة ﻟﺠﻠ ﺔ اﻟﺘﺨﺼ ﯿﺺ،ﺑﺎﻟﺒﺖ ﻣﻊ اﺷﺎرة اﻟﺘﺨﺼﯿﺺ )=( ﺗﺤﺖ اﺳﻢ اﻟﻤﺆﺛﺮات اﻟﻤﺮﻛﺒﺔ
. += , -= , *= , /= , %= , &= , <<= , >>
ﻓﻤﺜﻼً اﻟﺘﻌﺒﯿﺮ x=x+9ﺗﻌﻨﻲ اﺿﻒ اﻟﻘﯿﻤﺔ 9ﻟﻠﻤﺘﻐﯿﺮ اﻟﻘﺪﯾﻢ xاﻟﻤﻮﺟ ﻮد ﻓ ﻲ اﻟﻄ ﺮف اﻻﯾﻤ ﻦ ،ﺛ ﻢ ﺧﺼ ﺺ ھ ﺬه اﻟﻘﯿﻤ ﺔ اﻟﺠﺪﯾ ﺪة ﻟﻠﻤﺘﻐﯿ ﺮ
اﻟﺠﺪﯾﺪ اﻟﻤﻮﺟﻮد ﻓﻲ اﻟﻄﺮف اﻻﯾﺴﺮ وھﻮ . x
. x+=9 وﻋﻠﻰ ھﺬا ﯾﻤﻜﻦ اﺳﺘﺨﺪام اﻟﺘﻌﺒﯿﺮ اﻟﺴﺎﺑﻖ ﺑﻄﺮﯾﻘﺔ اﻟﻤﺆﺛﺮ اﻟﻤﺮﻛﺐ = +وﻛﻤﺎ ﯾﻠﻲ :
(fﻣ ﺆﺛﺮات اﻟﺰﯾ ﺎدة واﻟﻨﻘﺼ ﺎن) (Increment Decrement Operatorsھﻨ ﺎك ﻣﯿ ﺰة ﻓ ﻲ ﻟﻐ ﺔ Cﻗ ﺪ ﻻ ﻧﺠ ﺪھﺎ ﻓ ﻲ ﺑﻌ ﺾ ﻟﻐ ﺎت
اﻟﺒﺮﻣﺠﺔ اﻻﺧﺮى وھﻲ ،ﻣﺆﺛﺮ اﻟﺰﯾﺎدة) (++وﻣﺆﺛﺮ اﻟﻨﻘﺼﺎن) (--ﺣﯿﺚ ﯾﻤﻜﻦ اﺳﺘﻌﻤﺎﻟﮭﻤﺎ ﻣﻊ اﻟﻤﺘﻐﯿﺮات ﻓﻘﻂ.
ﻣﺆﺛﺮ اﻟﺰﯾﺎدة) :(++اﻟﺘﻌﺒﯿﺮ a++ﯾﻌﻨﻲ اﺳﺘﺨﺪم اﻟﻘﯿﻤﺔ اﻟﺤﺎﻟﯿﺔ ﻟﻠﻤﺘﻐﯿﺮ aﻓﻲ ﺣﺴﺎب اﻟﺘﺨﺼﯿﺺ ،ﺛﻢ أﺿ ﻒ اﻟﻘﯿﻤ ﺔ 1اﻟ ﻰ اﻟﻤﺘﻐﯿ ﺮ . a
اﻣﺎ اﻟﺘﻌﺒﯿﺮ ++aﺑﻌﻨﻲ أﺿﻒ اﻟﻘﯿﻤﺔ 1اﻟﻰ اﻟﻤﺘﻐﯿﺮ ،aﺛﻢ اﺳﺘﺨﺪم اﻟﻘﯿﻤﺔ اﻟﺠﺪﯾﺪة ﻟﻠﻤﺘﻐﯿﺮ aﻓﻲ ﺣﺴﺎب اﻟﺘﺨﺼﯿﺺ.
ﻣﺆﺛﺮ اﻟﻨﻘﺼﺎن):(--اﻟﺘﻌﺒﯿﺮ a--ﯾﻌﻨﻲ اﺳﺘﺨﺪم اﻟﻘﯿﻤﺔ اﻟﺤﺎﻟﯿﺔ ﻟﻠﻤﺘﻐﯿﺮ aﻓﻲ ﺣﺴ ﺎب اﻟﺘﺨﺼ ﯿﺺ ،ﺛ ﻢ أﻧﻘ ﺺ اﻟﻘﯿﻤ ﺔ 1ﻣ ﻦ اﻟﻤﺘﻐﯿ ﺮ . a
اﻣﺎ اﻟﺘﻌﺒﯿﺮ --aﯾﻌﻨﻲ أﻧﻘﺺ اﻟﻘﯿﻤﺔ 1ﻣﻦ اﻟﻤﺘﻐﯿﺮ ،aﺛﻢ اﺳﺘﺨﺪم اﻟﻘﯿﻤﺔ اﻟﺠﺪﯾﺪة ﻟﻠﻤﺘﻐﯿﺮ aﻓﻲ ﺣﺴﺎب اﻟﺘﺨﺼﯿﺺ.
(gﻣﺆﺛﺮ اﻟﻔﺎﺻﻠﺔ ) : (The Comma Operator) ( ,أذا ﻛﺎن ﻟﺪﯾﻨﺎ أﻛﺜﺮ ﻣﻦ ﺗﻌﺒﯿﺮ ﻣﻔﺼﻮﻟﺔ ﻋﻦ ﺑﻌﻀﮭﺎ ﺑﻔﺎﺻﻠﺔ ﻓﺄن اﻟﻘﯿﻤﺔ اﻟﻨﮭﺎﺋﯿﺔ
ﺗﺤﺴﺐ ﻣﻦ اﻟﯿﺴﺎر اﻟﻰ اﻟﯿﻤﯿﻦ ،وﻧﻮﻋﮭﺎ ھﻮ ﻧﻮع اﻟﺘﻌﺒﯿﺮ ﺑﺎﻟﻄﺮف اﻻﯾﻤﻦ.
ﻣﺜﺎل )-:(1.8.2
;a=2
;)b= (a+=4, 12/a
ﻧﻼﺣﻆ أن اﻟﺘﻨﻔﯿﺬ ﻓﻲ اﻟﻤﺜﺎل اﻋﻼه ﯾﺘﻢ ﻛﺎﻻﺗﻲ :ﺗﻌﻄﻰ اﻟﻘﯿﻤﺔ 2ﻟﻠﻤﺘﻐﯿ ﺮ ،aﺛ ﻢ ﯾُﻨﻔ ﺬ ﻣ ﺆﺛﺮ اﻟﻔﺎﺻ ﻠﺔ ﺣﯿ ﺚ ﯾُﻨﻔ ﺬ اﻟﺘﻌﺒﯿ ﺮ اﻷول a+=4واﻟ ﺬي
ﺗﻨﺘﺞ ﻋﻨﺔ اﻟﻘﯿﻤﺔ 6واﻟﺘﻲ ﺗﺨﺼﺺ ﻟﻠﻤﺘﻐﯿﺮ aﺑﻌﺪھﺎ ﯾُﻨﻔﺬ اﻟﺘﻌﺒﯿﺮ اﻟﺜﺎﻧﻲ 12/aواﻟﺬي ﺗﻨﺘﺞ ﻋﻨﺔ اﻟﻘﯿﻤﺔ 3واﻟﺘﻲ ﺗﺨﺼﺺ اﻟﻰ اﻟﻤﺘﻐﯿﺮ . b
2 */ % multiplicative Left-to-right
3 + - additive Left-to-right
6 != == equality Left-to-right
9 | bitwise OR Left-to-right
11 || logical OR Left-to-right
14 , comma Left-to-right
Program 1 اﻟﺘﻨﻔﯿﺬ
/* my first program in C */ C is Good Language
#include <stdio.h>
main ( )
{
printf ( "C is Good Language" ) ;
}
Program 2 اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> 5–2=3
main ( )
{
int a, b ;
float result ;
a=5;
b=2;
result = a – b ;
printf ( "%d - %d = %f" ,a ,b ,result) ;
}
ﺑﻌﺪ اﻻﻃﻼع ﻋﻠﻰ اﻟﻤﺜﺎﻟﯿﻦ اﻋﻼه،ﯾﻤﻜﻨﻨﺎ اﻻن ﺷﺮح ھﯿﻜﻠﯿﺔ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻠﻐﺔ ، Cﺣﯿﺚ أن ھﺬه اﻟﮭﯿﻜﻠﯿﺔ ﺗﺘﺄﻟﻒ ﻣﻦ :
اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣﺔ
) (main
{
; Program Body
}
ﺿﻤﻦ ﻣﻠﻒ اﻟﻌﻨﻮان ،stdio.hوھﺬه اﻟﺪاﻟﺔ ﺗﺄﺧﺬ اﻟﻤﻌﻄﯿﺎت ﻣﻦ ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ وﺗﺨﺼﺼﮭﺎ ﻻﺳﻤﺎء ﻣﺘﻐﯿﺮات ،ﺣﯿﺚ ﯾﻤﻜﻦ اﺳﺘﺨﺪاﻣﮭﺎ ﻓﻲ اﻟﺒﺮﻧ ﺎﻣﺞ ﻓﯿﻤ ﺎ
ﺑﻌﺪ .
اﻟﻤﻌﻨﻰ اﻟﻤﺆﺛﺮ
) (2اﻻﺧﺮاج -:ﺗﺴﺘﺨﺪم اﻟﺪاﻟﺔ ) ( printfﻻﺧﺮاج اﻟﺒﯿﺎﻧﺎت ﻋﻠﻰ وﺣﺪة اﻻﺧﺮاج اﻟﻘﯿﺎﺳﯿﺔ)اﻟﺸﺎﺷﺔ( ،وھﺬه اﻟﺪاﻟﺔ ﻣﻮﺟ ﻮدة ﺿ ﻤﻦ ﻣﻠ ﻒ اﻟﻌﻨ ﻮان
. stdio.h
ﻣﻼﺣﻈﺔ) -:(2.4.3اﻟﺒﺮﻧﺎﻣﺞ اﻟﺠﯿﺪ ھﻮ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺗﻜﻮن ﻣﺨﺮﺟﺎﺗﮫ ﻣﻨﺴﻘﺔ وذات ﺗﻮﺻﯿﻒ ﺟﯿﺪ ﻟﻠﺒﯿﺎﻧﺎت.
أﻣﺎ : arg_1, arg_2, arg_3, ….. ,arg_nﻓﮭﻲ ﻋﻨﺎﺻﺮ اﻟﺒﯿﺎﻧﺎت ،وھ ﻲ اﺧﺘﺼ ﺎر ﻟﻜﻠﻤ ﺔ اﻻدﻟ ﺔ) (Argumentsوﯾﻤﻜ ﻦ أن ﺗﻜ ﻮن
ھﺬه اﻻدﻟﺔ ﺛﻮاﺑﺖ ﻋﺪدﯾﺔ أو ﻣﺘﻐﯿﺮات ﻣﻦ اﻟﻨﻮع )اﻟﺼﺤﯿﺢ – اﻟﺤﻘﯿﻘﻲ –اﻟﺤﺮﻓﻲ( اﻟﻤﻄﻠﻮب ﻃﺒﺎﻋﺘﮭﺎ ﻋﻠﻰ اﻟﺸﺎﺷﺔ ،وﻋﻠ ﻰ أن ﺗﻔﺼ ﻞ اﻻدﻟ ﺔ ﻋ ﻦ
ﺑﻌﻀﮭﺎ ﺑﻮاﺳﻄﺔ ﻓﻮاﺻﻞ .
ﻣﻼﺣﻈﺔ) -:(2.4.4ھﻨﺎك ﺑﻌﺾ اﻟﺮﻣﻮز اﻟﺨﺎﺻﺔ ،ﯾﻄﻠﻖ ﻋﻠﯿﮭﺎ أﺣﯿﺎﻧﺎً )رﻣﻮز اﻟﮭﺮوب( ،و اﻟﻤﻤﻜﻦ اﺳﺘﺨﺪاﻣﮭﺎ ﻣﻊ داﻟﺔ اﻻﺧﺮاج ) ( printfﻟﻠﺘﺤﻜﻢ
ﻓﻲ اﻟﻤﺨﺮﺟﺎت أو اﻟﻄﺒﺎﻋﺔ ﻋﻠﻰ اﻟﺸﺎﺷﺔ ،وھﺬه اﻟﺮﻣﻮز ﯾﻤﻜﻦ أن ﺗﻮﺿﻊ ﺿﻤﻦ اﻟﺘﻮﺻﯿﻔﺎت) (Formatأو ﺑﺼﻮرة ﻣﻨﻔﺮدة وﻓﻲ ﺣﺎﻟﺔ ﻛﺘﺎﺑﺘﮭﺎ ﺑﺼ ﻮرة
ﻣﻨﻔﺮدة ﻓﯿﺠﺐ وﺿﻌﮭﺎ داﺧﻞ ﻋﻼﻣﺔ اﻟﺘﻨﺼﯿﺺ اﻟﻤﺰدوﺟﺔ)" "( وھﻲ ﻛﺎﻻﺗﻲ :
\n اﻻﻧﺘﻘﺎل اﻟﻰ ﺳﻄﺮ ﺟﺪﯾﺪ \f اﻻﻧﺘﻘﺎل اﻟﻰ ﺻﻔﺤﺔ ﺟﺪﯾﺪة
ﻣﺜﺎل)-: (2.4.5
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h Hello World! I'm a C program
) ( main
{
;)" !printf ("Hello World
; )"printf ("I'm a C program
}
ﻧﻼﺣﻆ ﻣﻦ ﺧﻼل ھﺬا اﻟﻤﺜﺎل أن اﻟﺘﻔﯿﺬ ﻗﺪ أﻇﮭﺮ اﻟﻄﺒﺎﻋﺔ ﻟﻠﻌﺒﺎرﺗﯿﻦ ﺑﺴﻄﺮ واﺣﺪ ،وھﺬا ﺗﻨﺴﯿﻖ ﻏﯿﺮ ﺟﯿ ﺪ ﻟﻠﻄﺒﺎﻋ ﺔ اذ اﻧﻨ ﺎ ﻧﺮﯾ ﺪ ﻃﺒﺎﻋ ﺔ ﻛ ﻞ ﻋﺒ ﺎرة ﺑﺴ ﻄﺮ
واﺣﺪ ﻣﺴﺘﻘﻞ ﻋﻦ اﻟﺴﻄﺮ اﻻﺧﺮ ،ﻟﺬﻟﻚ ﺳﻮف ﻧﺴﺘﺨﺪم اﻟﺮﻣﻮز \nﻟﮭﺬا اﻟﻐﺮض .
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h !Hello World
) ( main I'm a C program
{
;)" printf ("Hello World!\n
; )"printf ("I'm a C program
}
ﻣﺜﺎل) -:(2.4.6أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﺤﺴﺎب وﻃﺒﺎﻋﺔ ﻣﺴﺎﺣﺔ وﻣﺤﯿﻂ داﺋﺮة ﻧﺼﻒ ﻗﻄﺮھﺎ . r =5.2
Program اﻟﺘﻨﻔﯿﺬ
/* calculate area and circumference */ The Area of circle =84.948663
>#include <stdio.h The Circumference of circle =32.672563
)( main
{
; const double PI=3.1415926
;float r=5.2
; double area ,circumference
; area = PI * r * r
; circumference = 2 * PI * r
; ) printf("The Area of circle =%f" ,area
; )printf("\n The Circumference of circle =%f",circumference
}
. ﺛﻢ ﺣﺴﺎب وﻃﺒﺎﻋﺔ ﻣﺤﯿﻂ وﻣﺴﺎﺣﺔ ھﺬا اﻟﻤﺴﺘﻄﯿﻞ، اﻟﻤﻄﻠﻮب ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻻدﺧﺎل اﻟﻄﻮل واﻟﻌﺮض ﻟﻤﺴﺘﻄﯿﻞ ﻣﺎ-:(2.4.7)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> Length= 20
main() Width= 15
{ Perimeter is 70
int length, width ; Area is 300
int perimeter, area ;
printf("Length =") ;
scanf("%d",&length) ;
printf("\n Width =") ;
scanf("%d",&width) ;
perimeter = 2*(length+width) ;
area = length*width ;
printf("Perimeter is %d " ,perimeter) ;
printf("\n Area is %d", area) ;
}
. وﺣﺴﺎب وﻃﺒﺎﻋﺔ ﻣﻌﺪل اﻟﻄﺎﻟﺐ،( 77 82 69 95 ) أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة درﺟﺎت ﻃﺎﻟﺐ ﻓﻲ أرﺑﻌﺔ ﻣﻮاد-:(2.4.8)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> Enter Four Degrees : 77 82 69 95
main() The Average of Student is 80.75
{
int d1, d2, d3, d4, sum = 0 ;
float average ;
printf("Enter Four Degree : ") ;
scanf("%d%d%d%d",&d1,&d2,&d3,&d4) ;
sum =(d1+d2+d3+d4) ;
average = sum/4 ;
printf("\n") ;
printf("The Average of Student is %f ", average ) ;
}
: ﻟﺬﻟﻚ ﯾﻤﻜﻦ أﻋﺎدة اﻟﻤﺜﺎل اﻋﻼه ﺑﺎﻟﺒﺮﻧﺎﻣﺞ اﻻﺗﻲ، داﺋﻤﺎ ﯾﺒﺤﺚ ﻋﻦ ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺠﺔ ﺑﺄﻗﻞ اﻟﺨﻄﻮات، اﻟﻤﺒﺮﻣﺞ اﻟﺠﯿﺪ-:(2.4.9)ﻣﻼﺣﻈﺔ
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> Enter Four Degrees : 77 82 69 95
main() The Average of Student is 80.75
{
int d1, d2, d3, d4 ;
cout << "Enter Four Degree : " ;
scanf("%d%d%d%d",&d1,&d2,&d3,&d4) ;
printf("\n The Average of Student is %f " << (d1+d2+d3+d4)/4 ;
}
ﺗﻤﺮﯾﻦ -: 2أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﯾﻘﺮأ درﺟﺔ اﻟﺤﺮارة ﺑﺎﻟﺪرﺟﺔ اﻟﻔﮭﺮﻧﮭﺎﯾﺘﯿﺔ ،ﺛﻢ ﯾﻄﺒﻌﮭﺎ ﺑﺎﻟﺪرﺟﺔ اﻟﻤﺌﻮﯾﺔ ﻣﺴﺘﺨﺪﻣﺎً اﻟﻤﻌﺎدﻟﺔ )C = ( F – 32
ﺗﻤﺮﯾﻦ -: 3أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻻدﺧﺎل ﻗﯿﻢ ﺣﻘﯿﻘﯿﺔ ﻟﻠﻤﺘﻐﯿﺮات ، x , y , z , wوﺣﺴﺎب وﻃﺒﺎﻋﺔ ﻛﻞ ﻣﻤﺎ ﯾﺎﺗﻲ :
ﺗﻤ ﺮﯾﻦ -: 4أﻛﺘ ﺐ ﺑﺮﻧﺎﻣﺠ ﺎً ﻟﻘ ﺮاءة اﻟﻌﺠﻠ ﺔ اﻟﺜﺎﺑﺘ ﺔ Aواﻟ ﺰﻣﻦ ، Tﺛ ﻢ أﺣﺴ ﺐ وأﻃﺒ ﻊ اﻟﻤﺴ ﺎﻓﺔ Dواﻟﺴ ﺮﻋﺔ اﻟﻨﮭﺎﺋﯿ ﺔ ، Vاذا ﻋﻠﻤ ﺖ أن
D=0.5Aوأن اﻟﺴﺮﻋﺔ اﻟﻨﮭﺎﺋﯿﺔ ھﻲ . V=AT
Program
>#include <stdio.h
) ( main
{
; short a,b,c
; short d,e
; d=e=30
; a=4
; b=--a+1
; c=++a + b++
;) printf( "A=%d \t B=%d \t C=%d\n",a,b,c
; c+=--a + --b
; )a=b=c-(a*b
; d/=a+b
; e=e/a +b
; )printf( "\n D=%d \t E=%f" ,d,e
}
ﺗﻤﺮﯾﻦ -: 6أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻻدﺧﺎل اﻟﺠﻨﺲ) (Sexوﻓﺼﯿﻠﺔ اﻟﺪم ﻟﺰوﺟﯿﻦ ،وأﻇﮭﺎر اﻟﻨﺘﺎﺋﺞ ﻛﺎﻻﺗﻲ
SEX BLOOD SPECIES
M A+
F O+
ﻣﺜﺎل)-: (3.1.1
Program اﻟﺘﻨﻔﯿﺬ
>#include<stdio.h 15 اﻟﺘﻨﻔﯿﺬ:1
) ( main The number is Positive
{
;int x
; )scanf("%d" ,&x
)if (x > 0 -6 اﻟﺘﻨﻔﯿﺬ:2
; )"printf( " The number is Positive
}
ﻧﻼﺣﻆ ﻣﻦ ﺧﻼل اﻟﺘﻨﻔﯿﺬ 1ﻟﻠﺒﺮﻧﺎﻣﺞ أﻋﻼه ،ﻋﻨﺪ إدﺧﺎل ، x=15ﻓﺎن اﻟﺸﺮط ﻣﺘﺤﻘﻖ وﺑﺎﻟﺘﺎﻟﻲ ﻇﮭﺮت ﻟﻨﺎ اﻟﻌﺒﺎرة
The number is Positive
ﺑﯿﻨﻤﺎ ﻋﻨﺪ اﻟﺘﻨﻔﯿﺬ، 2أي ﻋﻨﺪ ادﺧﺎل x= -6ﻟﻢ ﺗﻈﮭﺮ ﻟﻨﺎ أي ﻋﺒﺎرة.
ﻣﺜﺎل)-: (3.1.2
Program اﻟﺘﻨﻔﯿﺬ
>#include<stdio.h 15 اﻟﺘﻨﻔﯿﺬ:1
) ( main The number is Positive
{
;int x
; )scanf("%d" ,&x
)if (x > 0 -6 اﻟﺘﻨﻔﯿﺬ:2
; ) "printf( " The number is Positive The number is Negative
)if (x < 0
; ) "printf( "The number is Negative
}
ﻧﻼﺣﻆ ﻣﻦ ﺧﻼل اﻟﻤﺜﺎل اﻋﻼه ،ﻓﻲ اﻟﺘﻨﻔﯿﺬ اﻻول ﻇﮭﺮت ﻟﻨﺎ اﻟﻌﺒﺎرة The number is Positiveﺑﯿﻨﻤﺎ ﻓﻲ اﻟﺘﻨﻔﯿﺬ اﻟﺜﺎﻧﻲ ﻇﮭﺮت ﻟﻨﺎ اﻟﻌﺒﺎرة
،The number is Negativeھﻨﺎ ﺗﻢ اﺳﺘﺨﺪام اﻟﺘﺮﻛﯿﺐ اﻟﺸﺮﻃﻲ اﻟﺒﺴﯿﻂ ﻣﺮﺗﯿﻦ.
ﻣﻼﺣﻈﺔ) -:(3.1.3اذا ﻛﺎن اﻟﻤﻄﻠﻮب ﺗﻨﻔﯿﺬ أﻛﺜﺮ ﻣﻦ ﺟﻤﻠﺔ ﺿﻤﻦ ﺷﺮﻃﺎً ﻣﺎ ،ﻓﯿﺠﺐ وﺿﻊ ھﺬه اﻟﺠﻤﻞ ﺿﻤﻦ اﻟﻘﻮﺳﯿﻦ { } ،وھ ﺬا ﻣ ﺎ اﺻ ﻄﻠﺢ ﻋﻠ ﻰ
ﺗﺴﻤﯿﺘﮫ اﻟﺠﻤﻠﺔ اﻟﻤﺮﻛﺒﺔ أو اﻟﺒﻠﻮك .
{
;statement_1
;statement_2
…
;statement_n
}
ﻣﺜﺎل) -:(3.1.4أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة ﻋﺪدﯾﻦ ﺣﻘﯿﻘﯿﯿﻦ ،ﺛﻢ رﺗﺐ ھﺬﯾﻦ اﻟﻌﺪدﯾﻦ ﺗﺼﺎﻋﺪﯾﺎً .
Program اﻟﺘﻨﻔﯿﺬ
>#include<stdio.h 5.7 3.94 اﻟﺘﻨﻔﯿﺬ:1
) ( main
{ 3.94 , 5.7
;float a,b,temp
; )scanf("%f%f" ,&a ,&b
)if (a>b
{ -1.6 8.17 اﻟﺘﻨﻔﯿﺬ:2
; temp=a
; a=b -1.6 , 8.17
; b=temp
}
; ) printf( "%f , %f ",a ,b
}
ﻧﻼﺣ ﻆ ﻣ ﻦ ﺧ ﻼل اﻟﻤﺜ ﺎل أﻋ ﻼه ،ﻋﻨ ﺪ اﻟﺘﻨﻔﯿ ﺬ اﻻول ﻗ ﺪ ﺗﺤﻘ ﻖ اﻟﺸ ﺮط وﺑﺎﻟﺘ ﺎﻟﻲ ﺗ ﻢ اﺟ ﺮاء اﻟﺘﺒ ﺪﯾﻞ وﻇﮭ ﺮت اﻟﻨﺘﯿﺠ ﺔ ،ﺑﯿﻨﻤ ﺎ ﻓ ﻲ اﻟﺘﻨﻔﯿ ﺬ اﻟﺜ ﺎﻧﻲ ﻟ ﻢ ﯾﺘﺤﻘ ﻖ
اﻟﺸﺮط)أي ﻟﻢ ﯾﺘﻢ أﺟﺮاء اﻟﺘﺒﺪﯾﻞ( وﺑﺎﻟﺮﻏﻢ ﻣﻦ ذﻟﻚ ﻇﮭﺮت ﻟﻨﺎ اﻟﻨﺘﯿﺠﺔ ﺻﺤﯿﺤﺔ أﯾﻀﺎً .
ﻣﺜﺎل) -: (3.2.1اﻟﻤﻄﻠﻮب ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺠﺎً ﯾﺘﻀﻤﻦ أدﺧﺎل ﻋﺪد ﺻﺤﯿﺢ ،وﻣﻌﺮﻓﺔ ﻓﯿﻤﺎ أذا ﻛﺎن ھﺬا اﻟﻌﺪد زوﺟﻲ ام ﻓﺮدي.
Program اﻟﺘﻨﻔﯿﺬ
>#include<stdio.h 8 اﻟﺘﻨﻔﯿﺬ:1
) ( main The number is Even
{
;int x
; )scanf("%d" ,&x 11 اﻟﺘﻨﻔﯿﺬ:2
)if (x%2==0
; )"printf("The number is Even The number is Odd
else
; )"printf("The number is Odd
}
ﻧﻼﺣﻆ ﻋﻨﺪ اﻟﺘﻨﻔﯿﺬ،1أي ﻋﻨﺪ ادﺧﺎل ، x=8ﻓﺎن اﻟﺸﺮط ﻣﺘﺤﻘﻖ وﺑﺎﻟﺘﺎﻟﻲ ﻇﮭﺮت ﻟﻨﺎ اﻟﻌﺒﺎرة The number is Evenﺑﯿﻨﻤ ﺎ ﻓ ﻲ اﻟﺘﻔﯿ ﺬ،2أي ﻋﻨ ﺪ ادﺧ ﺎل
، x=11ﻓﺎن اﻟﺸﺮط ﻏﯿﺮ ﻣﺘﺤﻘﻖ ورﻏﻢ ذﻟﻚ ﻇﮭﺮت ﻟﻨﺎ اﻟﻌﺒﺎرة .The number is Odd
ﻣﻼﺣﻈﺔ) (1) -:(3.2.2اﻟﺘﺮﻛﯿﺐ اﻟﺸﺮﻃﻲ اﻟﻜﺎﻣﻞ ﯾﻜﺎﻓﺊ ﺗﺮﻛﯿﺒﯿﻦ ﺷﺮﻃﯿﯿﻦ ﺑﺴﯿﻄﯿﻦ .
) (2ﯾﻤﻜ ﻦ اﺳ ﺘﺨﺪام أﻛﺜ ﺮ ﻣ ﻦ ﺗﺮﻛﯿ ﺐ ﺷ ﺮﻃﻲ ﻛﺎﻣ ﻞ ﺑﺼ ﻮرة ﻣﺘﺪاﺧﻠ ﺔ ﺿ ﻤﻦ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻮاﺣ ﺪ ،وھ ﺬا ﻣ ﺎ أﺻ ﻄﻠﺢ ﻋﻠ ﻰ ﺗﺴ ﻤﯿﺘﺔ
اﻟﺘﺮﻛﯿﺐ اﻟﺸﺮﻃﻲ اﻟﻤﺘﺪاﺧﻞ ) . ( Nested Conditional Structure
ﻋﻤﻞ اﻟﻤﺆﺛﺮ اﻟﺸﺮﻃﻲ )? ( -:ﻣﺸﺎﺑﮫ إﻟﻰ ﻋﻤﻞ اﻟﺘﺮﻛﯿﺐ اﻟﺸﺮﻃﻲ اﻟﻜﺎﻣﻞ . if…else
=Y
>#include <stdio.h
>#include <stdio.h
) ( main
{
) ( main
; float x ,y
{
; )scanf("%d" ,&x
; float x ,y
)if(x>=0
; )scanf("%d" ,&x
; y= 5-x*x
; y= (x>=0) ? 5-x*x : 2*x*x*x
else
; )printf(" Y =%f ", y
; y= 2*x*x*x
}
; )printf(" Y =%f ", y
}
ﻣﺜﺎل) -:(3.3.2أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة ﻋﺪدﯾﻦ ﺻﺤﯿﺤﯿﻦ ،ﺛﻢ ﯾﻄﺒﻊ اﻟﻤﺘﻐﯿﺮ اﻟﺬي ﯾﺤﺘﻮي أﻛﺒﺮ ﻗﯿﻤﺔ .
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h 2 7
) ( main The Maximum Number = 7
{
; int a,b,max
;)scanf("%d%d" ,&a ,&b
; max= (a>b)? a : b
; )printf( "The Maximum Number =&d ", max
}
. ( char ) ( أو ﻣﻦ اﻟﻨﻮع اﻟﺤﺮﻓﻲint ) ﺗﻤﺜﻞ ﻗﯿﻤﺔ اﻟﺘﻌﺒﯿﺮ وﯾﻤﻜﻦ أن ﺗﻜﻮن ﻋﺪداً ﻣﻮﺟﺒﺎً أو ﺳﺎﻟﺒﺎً ﻣﻦ اﻟﻨﻮع اﻟﺼﺤﯿﺢ: value
واذا ﻟ ﻢ،(cases)( ﻟﺘﻔﺎدي اﺳﺘﻤﺮار ﺑﻘﯿﺔ اﻟﺤﺎﻻتcase) ﺗﺴﺘﻌﻤﻞ ﻋﻨﺪ آﺧﺮ ﻛﻞ ﻣﺠﻤﻮﻋﺔ ﺟﻤﻞ ﻣﻦ ﺟﻤﻞ اﻟﺤﺎﻟﺔ، وھﻲ ﻋﺒﺎرة ﺗﻮﻗﻒ: break
. ﺗﺴﺘﻌﻤﻞ ﺑﻌﺪ أي ﺣﺎﻟﺔ ﻓﺎن اﻟﺘﻌﺒﯿﺮ ﯾﻨﺘﻘﻞ اﻟﻰ اﻟﺤﺎﻟﺔ اﻟﻤﻮاﻟﯿﺔ ﻟﮭﺬه اﻟﺤﺎﻟﺔ
( ﻻ ﺗﺘﺤﻘ ﻖ ﻣ ﻊ أيexpression) وﺗﻨﻔﺬ ﻋﻨﺪﻣﺎ ﯾﻜ ﻮن ﻗﯿﻤ ﺔ،( وﺗﻌﻨﻲ ﺣﺎﻟﺔ اﺳﻘﺎط وھﻲ اﺧﺘﯿﺎرﯾﺔ )ﯾﻤﻜﻦ ﻋﺪم ذﻛﺮھﺎ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ: default
. (value) ﻗﯿﻤﺔ
أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻻدﺧﺎل ﻋﺪدﯾﻦ ﻣﻦ اﻟﻨﻮع اﻟﺤﻘﯿﻘﻲ و ﻣ ﺆﺛﺮ ﺣﺴ ﺎﺑﻲ ﯾﺸ ﯿﺮ اﻟ ﻰ اﻟﻌﻤﻠﯿ ﺔ اﻟﺤﺴ ﺎﺑﯿﺔ، switch ﺑﺎﺳﺘﺨﺪام ﺗﺮﻛﯿﺐ اﻻﻧﺘﻘﺎء-:(3.4.1)ﻣﺜﺎل
. ﻣﻊ ﻃﺒﺎﻋﺔ اﻟﺮﺳﺎﻟﺔ اﻟﻤﻨﺎﺳﺒﺔ أذا ﻟﻢ ﯾﻜﻦ اﻟﻤﺆﺛﺮ اﻟﻤُﺪﺧﻞ ﯾﺸﯿﺮ اﻟﻰ اﺣﺪ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺴﺎﺑﯿﺔ اﻻرﺑﻌﺔ، (/ , * , - , +) اﻟﻤﺴﺘﺨﺪﻣﺔ
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> : 1 اﻟﺘﻨﻔﯿﺬ
main ( ) Enter Two Real Numbers : 2.5 1.7
{ Enter Operator : *
float a , b ; 2.5 * 1.7 = 4.25
char op ;
printf(" Enter Two Real Numbers : ") ; : 2 اﻟﺘﻨﻔﯿﺬ
scanf("%f%f" ,&a ,&b) ; Enter Two Real Numbers : -0.9 4.11
printf(" Enter Operator : ") ; Enter Operator : +
scanf("%c",&op) ; -0.9 + 4.11 = 3.21
switch (op)
{ : 3 اﻟﺘﻨﻔﯿﺬ
case '+' : printf( "%a + %f = %f" ,a,b,a+b ) ; Enter Two Real Numbers : 1.5 7.67
break ; Enter Operator : ^
case '-' : printf( "%a - %f = %f" ,a,b,a-b ) ; Error Input Operator
break
case'*' :printf( "%a * %f =%f",a,b,a*b ); : 4 اﻟﺘﻨﻔﯿﺬ
break ; Enter Two Real Numbers : 2.6 19.2
case '/' : if (b==0) Enter Operator : /
printf(" Error Divide by Zero ") ; 2.6 / 19.2 = 0.135416
else
printf( "%a / %f = %f" ,a ,b ,a/b ) ;
break ;
Default : printf(" Error Input Operator ") ;
}
ﻣﺜﺎل) -:(3.4.2أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة ﻣﺘﻐﯿﺮ ﺻﺤﯿﺢ ،xﺛﻢ أﺣﺴﺐ وأﻃﺒﻊ ﻗﯿﻤﺔ yﺣﯿﺚ أن
=y
Program اﻟﺘﻨﻔﯿﺬ
اﻟﺘﻨﻔﯿﺬ : 1
>#include <stdio.h
Enter Integer Number : 2
) ( main
Y= 20
{
; int x, y
;)" printf(" Enter Integer Number :
اﻟﺘﻨﻔﯿﺬ : 2
; )scanf("%d",&x
Enter Integer Number : -6
)switch (x
Error Data out the Range
{
; case -3: y=3*x-7
اﻟﺘﻨﻔﯿﺬ : 3
; )printf("\n Y =%f ", y
Enter Integer Number : 4
; break
Y= - 132
case 2 :
; case 5 : y=5*x*x
اﻟﺘﻨﻔﯿﺬ : 4
; )printf("\n Y =%f ", y
Enter Integer Number : -3
; break
Y= -16
case -4 :
; case 4 : y=x-4*x*x*x
اﻟﺘﻨﻔﯿﺬ : 4
; )printf("\n Y =%f ", y
Enter Integer Number : 5
; break
Y= 125
;) "Default : printf( "\n Error Data out the Range
}
ﻧﻼﺣﻆ ﻓﻲ اﻟﻤﺜﺎل اﻋﻼه ،اﻧﮫ ﺗﻢ ادراج اﻟﺤﺎﻻت اﻟﺘﻲ ﻟﮭﺎ ﻧﻔﺲ اﻟﻤﻌﺎدﻟﺔ اﻟﺤﺎﻟﺔ ﺗﻠﻮ اﻻﺧﺮى ،واﻻﻛﺘﻔﺎء ﺑﺬﻛﺮ اﻟﻤﻌﺎدﻟ ﺔ وﻋﺒ ﺎرة اﻟﻄﺒﺎﻋ ﺔ ﻓ ﻲ ﻧﮭﺎﯾ ﺔ اﻟﺤﺎﻟ ﺔ
اﻻﺧﯿﺮة ﻣﻦ اﻟﺤﺎﻻت اﻟﺘﻲ ﻟﮭﺎ ﻧﻔﺲ اﻟﻤﻌﺎدﻟﺔ .
ﺗﻤﺮﯾﻦ : 1أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﯾﻘﺮأ ﺛﻼث ﻣﺘﻐﯿﺮات ﻣﻦ اﻟﻨﻮع اﻟﺤﻘﯿﻘﻲ ،ﺛﻢ ﯾﻄﺒﻊ ھﺬه اﻟﻤﺘﻐﯿﺮات ﺑﺘﺮﺗﯿﺐ ﺗﺼﺎﻋﺪي .
ﺗﻤﺮﯾﻦ : 3أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻻدﺧﺎل ﻣﺘﻐﯿﺮﯾﻦ ﻣﻦ اﻟﻨﻮع اﻟﺼﺤﯿﺢ وﻣﺘﻐﯿﺮ ﺣﺮﻓﻲ ﯾﺪل ﻋﻠﻰ اﻟﺤﺮف اﻷول ﻣﻦ اﻟﻌﻤﻠﯿﺔ اﻟﺤﺴﺎﺑﯿﺔ
) (Addition, Subtraction, Multiplication, Divisionﺳﻮاء ﻛﺎن اﻟﺤﺮف ﺻﻐﯿﺮاً أو ﻛﺒﯿﺮاً ،ﺛﻢ أﺣﺴﺐ وأﻃﺒﻊ ﻧﺎﺗﺞ اﻟﻌﻤﻠﯿﺔ اﻟﺤﺴﺎﺑﯿﺔ .
ﺗﻤﺮﯾﻦ : 4اﻟﻤﻄﻠﻮب ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻟﻘﺮاءة اﻟﻤﺮﺗﺐ اﻷﺳﺎﺳﻲ ﻟﺒﺎﺋﻊ وﻣﻘﺪار ﻣﺒﯿﻌﺎﺗﮫ ،ﺛﻢ ﺣﺴﺎب وﻃﺒﺎﻋﺔ اﻟﺮاﺗﺐ اﻟﺼﺎﻓﻲ ﻟﻠﺒﺎﺋﻊ ،ﻋﻠﻤﺎً أن
اﻟﺮاﺗﺐ اﻟﺼﺎﻓﻲ = اﻟﺮاﺗﺐ اﻷﺳﺎس +اﻟﻤﻜﺎﻓﺌﺔ اﻟﻤﺌﻮﯾﺔ .ﺣﯿﺚ أن اﻟﻤﻜﺎﻓﺌﺔ اﻟﻤﺌﻮﯾﺔ ﺗﺤﺴﺐ ﺑﺎﻟﺼﯿﻐﺔ اﻟﺘﺎﻟﯿﺔ
2% .aﻣﻦ ﻣﺮﺗﺒﺔ اﻷﺳﺎﺳﻲ ،أذا ﻛﺎﻧﺖ ﻣﺒﯿﻌﺎﺗﮫ أﻗﻞ أو ﺗﺴﺎوي ﺛﻼث أﺿﻌﺎف ﻣﺮﺗﺒﺔ اﻷﺳﺎﺳﻲ.
3% .bﻣﻦ ﻣﺮﺗﺒﺔ اﻷﺳﺎﺳﻲ ،أذا ﻛﺎﻧﺖ ﻣﺒﯿﻌﺎﺗﮫ أﻛﺜﺮ ﻣﻦ ﺛﻼث أﺿﻌﺎف ﻣﺮﺗﺒﺔ اﻷﺳﺎﺳﻲ.
5% .cﻣﻦ ﻣﺮﺗﺒﺔ اﻷﺳﺎﺳﻲ ،أذا زادت ﻣﺒﯿﻌﺎﺗﮫ ﻋﻠﻰ ﺧﻤﺴﺔ أﺿﻌﺎف ﻣﺮﺗﺒﺔ اﻷﺳﺎﺳﻲ.
ﻋﻤﻞ اﻟﺤﻠﻘﺔ : whileأﺧﺘﺒﺮ اﻟﺸﺮط ) (conditionأوﻻً ،ﻓﺄذا ﻛﺎن اﻟﺸﺮط ﺻﺤﯿﺤﺎً ،ﻧﻔﺬ اﻟﺠﻤﻠﺔ ) ،(statementﻛﺮر ھﺬا اﻻﺧﺘﺒﺎر واﻟﺘﻨﻔﯿﺬ ﻟﻐﺎﯾﺔ أن
ﯾﺼﺒﺢ اﻟﺸﺮط ﻏﯿﺮ ﺻﺤﯿﺢ )ﺧﺎﻃﺌﺎً( .
ﻣﻼﺣﻈﺔ) (1) -: (4.1.1ﯾﻤﻜﻦ ﺗﻜﺮار ﺗﻨﻔﯿﺬ أﻛﺜﺮ ﻣﻦ ﺟﻤﻠﺔ ﺿﻤﻦ اﻟﺤﻠﻘﺔ ، whileﺑﺸﺮط أن ﺗﻮﺿﻊ ھﺬه اﻟﺠﻤﻞ ﺿﻤﻦ اﻟﺠﻤﻠﺔ اﻟﻤﺮﻛﺒﺔ ) اﻟﺒﻠﻮك ( .
) (2ﺗﺴﺘﺨﺪم اﻟﺤﻠﻘﺔ whileﻋﻨﺪﻣﺎ ﯾﻜﻮن ﻋﺪد اﻟﺘﻜﺮارات ﻣﻌﻠﻮم أو ﻏﯿﺮ ﻣﻌﻠﻮم .
) (3ﯾﻤﻜﻦ اﺳﺘﺨﺪام أﻛﺜﺮ ﻣﻦ ﺣﻠﻘﺔ ﺗﻜﺮارﯾﺔ ﺑﺼﻮرة ﻣﺘﺪاﺧﻠﺔ ﺿ ﻤﻦ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻮاﺣ ﺪ ،وھ ﺬا ﻣ ﺎ أﺻ ﻄﻠﺢ ﻋﻠ ﻰ ﺗﺴ ﻤﯿﺘﺔ اﻟﺤﻠﻘ ﺎت
اﻟﺘﻜﺮارﯾﺔ اﻟﻤﺘﺪاﺧﻠﺔ ) . ( Nested Iteration Loop
ﻣﺜﺎل)-:(4.1.2
Program اﻟﺘﻨﻔﯿﺬ
/*custom countdown using while*/ Enter the starting number : 8
>#include <stdio.h !8, 7, 6, 5, 4, 3, 2, 1, FIRE
)( main
{
; int n
; ) " printf( "Enter the starting number :
; )scanf("%d",&n
)while (n>0
{
; )printf( "%d,",n
;--n
}
; ) "!printf ( "FIRE
}
ﻧﻼﺣﻆ ﻣﻦ ﺧﻼل ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧ ﺎﻣﺞ اﻋ ﻼه أﻧ ﮫ ﺗ ﻢ ﺗﺨﺼ ﯿﺺ اﻟﻘﯿﻤ ﺔ 8ﻟﻠﻤﺘﻐﯿ ﺮ ، nﺛ ﻢ اﺧﺘﺒ ﺎر اﻟﺸ ﺮط )، (n>0ﺣﯿ ﺚ أن اﻟﺸ ﺮط ﻛ ﺎن ﺻ ﺤﯿﺤﺎً ﻓ ﺘﻢ ﻃﺒﺎﻋ ﺔ
اﻟﻘﯿﻤﺔ 8ﺛﻢ أﺻﺒﺤﺖ ﻗﯿﻤﺔ n=7ﻣﻦ ﺧﻼل ﻣﺆﺛﺮ اﻟﻨﻘﺼﺎن --nوﺑﻘﻲ اﻟﺸﺮط ﺻﺤﯿﺤﺎً وھﻜﺬا ﺗﻢ ﺗﻜﺮار اﻟﻌﻤﻠﯿﺔ اﻟﻰ أن أﺻﺒﺤﺖ ﻗﯿﻤﺔ n=0ﻋﻨﺪﺋﺬ أﺻ ﺒﺢ
اﻟﺸﺮط ﻏﯿﺮ ﺻﺤﯿﺢ وﺑﺎﻟﺘﺎﻟﻲ ﺗﻢ اﻟﺨﺮوج ﻣﻦ اﻟﺤﻠﻘﺔ ﻧﮭﺎﺋﯿﺎً ،واﻻﻧﺘﻘﺎل اﻟﻰ ﺗﻨﻔﯿﺬ اﻟﻌﺒﺎرة !. FIRE
4.0,4.5,5.0,5.5,…,9.5,10 ﻣﺜ ﺎل) -:(4.1.3أﻛﺘ ﺐ ﺑﺮﻧﺎﻣﺠ ﺎً ﻟﺤﺴ ﺎب وﻃﺒﺎﻋ ﺔ ﻣﺠﻤ ﻮع اﻷﻋ ﺪاد
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h The Total = 87.00
) ( main
{
; float a=4.0 , sum=0.0
)while (a<=10
{
; sum+=a
; a+=0.5
}
; )printf(" The Total =%f ",sum
}
ﻣﺜﺎل) -:(4.1.4أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﺤﺴﺎب وﻃﺒﺎﻋﺔ اﻟﻤﻀﺮوب) (factorialﻟﻸﻋﺪاد ﻣﻦ 1اﻟﻰ ،10ﺣﯿﺚ أن ﻣﻀﺮوب اﻟﻌﺪد (n! )nﯾﺤﺴﺐ ﻛﺎﻻﺗﻲ :
n!=n(n-1)(n-2)…3.2.1
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h 1!= 1
) ( main 2!= 2
{ 3!= 6
; long factorial 4!= 24
; int k ,a=1 5!= 120
)while (a<=10 6!= 720
{ 7!= 5040
; factorial=1 8!= 40320
; k=1 9!= 362880
)while (k<=a 10!= 3628800
{
; factorial*=k
; ++k
}
; )printf("%d!=%d\n ",a ,factorial
; ++a
}
}
ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻋﻼه ﺗﻢ ﺗﻨﻔﯿ ﺬ ﺣﻠﻘﺘ ﯿﻦ ﺗﻜ ﺮارﯾﺘﯿﻦ ،اﻟﺤﻠﻘ ﺔ أﻻوﻟ ﻰ واﻟﺘ ﻲ ﺗﺴ ﻤﻰ ﺑﺎﻟﺤﻠﻘ ﺔ اﻟﺨﺎرﺟﯿ ﺔ وھ ﻲ ﺗﻨﻔﯿ ﺬ اﻟﺠﻤﻠ ﺔ اﻟﻤﺮﻛﺒ ﺔ ﺑ ﯿﻦ اﻟﻘﻮﺳ ﯿﻦ اﻟﺘ ﺎﺑﻌﯿﻦ ﻟﮭ ﺎ
ﻃﺎﻟﻤﺎ أن اﻟﻌﺪد aﻟﻢ ﯾﺘﺠﺎوز ،10ﺗﺄﺗﻲ ﺑﻌﺪھﺎ اﻟﺤﻠﻘﺔ اﻟﺜﺎﻧﯿﺔ واﻟﺘﻲ ﺗﺴﻤﻰ اﻟﺤﻠﻘﺔ اﻟﺪاﺧﻠﯿﺔ وھﻲ أﯾﺠﺎد ﻣﻀﺮوب اﻟﻌﺪد ،وذﻟﻚ ﻣﻦ ﺧﻼل اﻟﺠﻤﻠﺘﯿﻦ
; factorial*=k
; ++k
ﻋﻤ ﻞ اﻟﺤﻠﻘ ﺔ : do…whileھ ﺬه اﻟﺤﻠﻘ ﺔ ﻣﺸ ﺎﺑﮫ ﻟﻠﺤﻠﻘ ﺔ اﻟﺘﻜﺮارﯾ ﺔ whileوﺗﺨﺘﻠ ﻒ ﻋﻨﮭ ﺎ ﻓ ﻲ أﻣ ﺮﯾﻦ ،أوﻻً أن اﻟﺤﻠﻘ ﺔ do…whileﺗﺒ ﺪأ اﻟﺘﻨﻔﯿ ﺬ
ﻟﻠﺠﻤﻠﺔ) (statementﺛﻢ ﺗﺘﺤﻘﻖ ﻣﻦ اﻟﺸﺮط ﺑﻌﺪ ذﻟﻚ ،ﺛﺎﻧﯿﺎ ﯾﺘﻢ اﻟﺘﻔﯿﺬ ﻓﻲ ھﺬه اﻟﺤﻠﻘﺔ ﻣﺮة واﺣﺪة ﻋﻠﻰ اﻻﻗﻞ ﺣﺘﻰ وﻟﻮ ﻛﺎن اﻟﺸﺮط ﻏﯿﺮ ﻣﺘﺤﻘﻖ .
ﻣﺜﺎل) -:(4.2.1أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻻدﺧﺎل وﻃﺒﺎﻋﺔ ﻋﺪد ﺻﺤﯿﺢ،أوﻗﻒ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻨﺪ أدﺧﺎل ﻋﻨﺪ ادﺧﺎل اﻟﻘﯿﻤﺔ .0
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h Enter number (0 to end): 1254
) ( main You entered: 1254
{ Enter number (0 to end): 160277
; unsigned long n You entered: 160277
do Enter number (0 to end): 33385
{ You entered: 33385
; ) " printf( " Enter number (0 to end): Enter number (0 to end): 0
; )scanf("%d%,&n You entered: 0
; )printf( " You entered: %d\n" ,n
; )}while (n != 0
}
-:(4.2.2)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> : 1 اﻟﺘﻨﻔﯿﺬ
main ( ) Enter the starting number : 8
{ 8, 7, 6, 5, 4, 3, 2, 1, FIRE!
int n ;
printf( "Enter the starting number : " ) ;
scanf("%d%,&n) ; : 2 اﻟﺘﻨﻔﯿﺬ
do Enter the starting number : 0
{ 0, FIRE!
printf( "%d , " , n) ;
--n;
} while (n>0)
printf( "FIRE!" ) ;
}
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> The Total = 87.00
main ( )
{
float a=4.0 , sum=0.0 ;
do
{
sum+=a ;
a+=0.5 ;
} while (a<=10) ;
printf( " The Total =%f " ,sum ) ;
}
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> 1!= 1
main ( ) 2!= 2
{ 3!= 6
long factorial ; 4!= 24
int k ,a=1 ; 5!= 120
do 6!= 720
{ 7!= 5040
factorial=1 ; 8!= 40320
k=1 ; 9!= 362880
do 10!= 3628800
{
factorial*=k ;
++k ;
} while (k<=a)
printf("%d!=%d\n ",a ,factorial) ;
++a ;
} while (a<=10)
}
f o r( i n i t i a l i za t i o n ; c o n d i t i o n ; i n c re a s e ) اﻟﺼﯿﻐﺔ اﻟﻌﺎﻣ ﺔ
statement ;
ﺛﺎﻧﯿ ﺎً أﺧﺘﺒ ﺮ اﻟﺸ ﺮط،(( واﻟﺬي ﯾﻤﺜﻞ اﻟﻘﯿﻤﺔ اﻷوﻟﯿﺔ ﻟﻌﺪاد اﻟﺤﻠﻘ ﺔ)ﻋ ﺪاد اﻟﺤﻠﻘ ﺔ ھ ﻮ ﻋﺒ ﺎرة ﻋ ﻦ ﻣﺘﻐﯿ ﺮinitialization) أوﻻً ﻧﻔﺬ: for ﻋﻤﻞ اﻟﺤﻠﻘﺔ
( واﻟﺬي ﯾﻤﺜﻞ ﻣﻘﺪار اﻟﺰﯾﺎدة أو اﻟﻨﻘﺼﺎن ﺑﻤﻘ ﺪار ﻣﻌ ﯿﻦ ﻓ ﻲincrease) ﺛﺎﻟﺜﺎً ﻧﻔﺬ،(statement) ﻧﻔﺬ اﻟﺠﻤﻠﺔ،ً ﻓﺄذا ﻛﺎن اﻟﺸﺮط ﺻﺤﯿﺤﺎ، (condition)
. (ً ﻛﺮر اﻟﺨﻄﻮات ﺛﺎﻧﯿﺎً وﺛﺎﻟﺜﺎً ﻟﻐﺎﯾﺔ أن ﯾﺼﺒﺢ اﻟﺸﺮط ﻏﯿﺮ ﺻﺤﯿﺢ )ﺧﺎﻃﺌﺎ،ﻋﺪاد اﻟﺤﻠﻘﺔ
-:(4.3.1)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
/*countdown using a for loop */ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, FIRE!
#include <stdio.h>
int main ( )
{
int k ;
for (k=10; k>0; k--)
printf("%d,",k);
printf( "FIRE!") ;
}
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> 1!= 1
main ( ) 2!= 2
{ 3!= 6
long factorial ; 4!= 24
int k ,a ; 5!= 120
for (a=1;a<=10;a++) 6!= 720
{ 7!= 5040
factorial=1 ; 8!= 40320
for(k=1;k<=a;k++) 9!= 362880
factorial*=k ; 10!= 3628800
printf("%d!=%d\n ",a ,factorial) ;
}
}
4.0,4.5,5.0,5.5,…,9.5,10 أﻛﺘ ﺐ ﺑﺮﻧﺎﻣﺠ ﺎً ﻟﺤﺴ ﺎب وﻃﺒﺎﻋ ﺔ ﻣﺠﻤ ﻮع اﻷﻋ ﺪاد-: (4.3.3)ﻣﺜ ﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> The Total = 87.00
main ( )
{
float a , sum=0.0 ;
for( a=4.0;a<=10;a+=0.5)
sum+=a ;
printf( " The Total = %f", sum ) ;
}
ﻣﺜﺎل) -:(4.3.4اﻟﻤﻄﻠﻮب ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺠﺎً ﻟﺤﺴﺎب وﻃﺒﺎﻋﺔ اﻟﻤﻌﺪل ﻟﻤﺠﻤﻮﻋﺔ ﻣﻦ اﻻﻋﺪاد اﻟﺤﻘﯿﻘﯿﺔ واﻟﺘﻲ ﻋﺪدھﺎ . n
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h Enter The Size of The List : 7
) ( main The Data : 12.5 -10.04 35 1.432 7.7 101.1 34.567
{ The Average of all Numbers = 26.037
; int n, counter
; float number, sum, average
; sum=0.0
; ) " printf( "Enter The Size of The List :
; )scanf("%d",&number
; )" printf("\nThe Data :
)for( counter=0;counter<n;counter++
{
; )scanf("%",&number
; sum+=number
}
; average=sum/n
; ) printf( "\n The Average of all Numbers =%f ",average
}
ﻓﻲ ﺑﻌﺾ اﻟﺒﺮأﻣﺞ ﯾﺘﻌﯿﻦ ﻋﻠﯿﻨﺎ ﺗﺤﻮﯾﻞ اﻟﻤﺴﺎر اﻟﺘﺘﺎﺑﻌﻲ ﻻواﻣﺮ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟ ﻰ اﻟﺨ ﺮوج ﻣ ﻦ اﻟﺤﻠﻘ ﺎت اﻟﺘﻜﺮارﯾ ﺔ أو اﻟﺮﺟ ﻮع اﻟﯿﮭ ﺎ أو اﻟﺨ ﺮوج ﻧﮭﺎﺋﯿ ﺎً
ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ ،اﻟﺠﻤﻞ اﻟﺘﻔﺮﻋﯿﺔ ﺗﺴﺎﻋﺪﻧﺎ ﻓﻲ ھﺬه اﻟﻌﻤﻠﯿﺔ ،وﻟﻜﻦ ﯾﺠﺐ أن ﯾﻜﻮن أﺳﺘﺨﺪام ھﺬه اﻟﺠﻤﻞ ﻣﺤ ﺪود،ﻻﻧ ﮫ اﺣﯿﺎﻧ ﺎ وﻓ ﻲ اﻟﺒ ﺮأﻣﺞ اﻟﻜﺒﯿ ﺮة ﺗﺴ ﺒﺐ ﻟﻨ ﺎ
ﻣﺸﺎﻛﻞ أﺛﻨﺎء اﻟﺘﻨﻔﯿﺬ .ﻣﻦ ھﺬه اﻟﺠﻤﻞ ھﻲ :
) (1ﺟﻤﻠﺔ أﻗﻄﻊ : Breakﺗﺴﺘﺨﺪم ھﺬه اﻟﺠﻤﻠﺔ ﻟﻠﺨﺮوج ﻣﻦ اﻟﺤﻠﻘﺎت اﻟﺘﻜﺮارﯾﺔ ،ﺣﯿﺚ ﯾﺘﻢ أﻧﮭﺎء اﻟﺘﻜﺮار ﻣﺘﻰ ﻣﺎ وﺻ ﻞ اﻟﺘﻨﻔﯿ ﺬ اﻟ ﻰ ھ ﺬه اﻟﺠﻤﻠ ﺔ.
ﻧﺘﺬﻛﺮ ﺑﺄن ھﺬه اﻟﺠﻤﻠﺔ اﺳﺘﺨﺪﻣﺖ ﻟﻨﻔﺲ اﻟﻤﻌﻨﻰ ﻓﻲ ﻣﻮﺿﻮع اﻟﺘﺮﻛﯿﺐ اﻻﻧﺘﻘﺎﺋﻲ . switch
ﻣﺜﺎل)-: (4.4.1
Program اﻟﺘﻨﻔﯿﺬ
/*break loop example*/ !10, 9, 8, 7, 6, 5, 4, 3, countdown aborted
>#include <stdio.h
) ( main
{
; int n
)for (n=10; n>0; n--
{
; )printf("%d ," ,n
)if (n==3
{
; )"!printf("countdown aborted
; break
}
}
}
ﺗﻢ اﻟﺘﻔﯿﺬ ﺑﻄﺒﺎﻋﺔ اﻻﻋﺪاد ﻣﻦ 10وﻟﻐﺎﯾﺔ 3ﺛﻢ ﻃﺒﻌ ﺖ اﻟﻌﺒ ﺎرة ! countdown abortedﺑﻌ ﺪھﺎ ﺗ ﻢ اﻟﺘﻮﻗ ﻒ واﻟﺨ ﺮوج ﻣ ﻦ اﻟﺤﻠﻘ ﺔ اﻟﺘﻜﺮارﯾ ﺔ وذﻟ ﻚ ﻟﻜ ﻮن
اﻟﺸﺮط ﻗﺪ ﺗﺤﻘﻖ ﻓﻲ اﻟﺘﺮﻛﯿﺐ اﻟﺸﺮﻃﻲ اﻟﺒﺴﯿﻂ . if
) (2ﺟﻤﻠﺔ اﻻﺳ ﺘﻤﺮار : Continueﺗﺴ ﺘﺨﺪم ھ ﺬه اﻟﺠﻤﻠ ﺔ ﺑﺎﻻﺳ ﺘﻤﺮار ﻓ ﻲ ﺗﻮﺟﯿ ﮫ اﻟ ﺘﺤﻜﻢ اﻟ ﻰ ﻧﮭﺎﯾ ﺔ اﻟﺤﻠﻘ ﺔ وﺑﺎﻟﺘ ﺎﻟﻲ اﻟﺮﺟ ﻮع اﻟ ﻰ ﺑﺪاﯾ ﺔ اﻟﺤﻠﻘ ﺔ
وأﻛﻤﺎل ﺗﻨﻔﯿﺬھﺎ ﺣﺘﻰ اﻟﻨﮭﺎﯾﮫ .
ﻣﺜﺎل)-: (4.4.2
Program اﻟﺘﻨﻔﯿﺬ
/* continue loop example*/ !10, 9, 8, 7, 6, 4, 3, 2, 1, FIRE
>#include <stdio.h
) ( main
{
; int n
)for (n=10; n>0; n--
{
)if (n==5
; continue
; )printf("%d ," ,n
}
; )"!printf( "FIRE
}
) (3ﺟﻤﻠﺔ ﺧﺮوج : Exitوﺗﻌﻨﻲ اﻟﺨﺮوج ﻧﮭﺎﺋﯿ ﺎً ﻣ ﻦ اﻟﺒﺮﻧ ﺎﻣﺞ وﺗﺮﺟ ﻊ ﺑﺎﻟﻘﯿﻤ ﺔ ﺻ ﻔﺮاً اذا ﻛ ﺎن اﻟﺒﺮﻧ ﺎﻣﺞ ﻧﻔ ﺬ ﻋﻠ ﻰ أﺣﺴ ﻦ ﻣ ﺎ ﯾ ﺮام ،وﺑ ﺄي ﻗﯿﻤ ﺔ ﻻ
ﺗﺴﺎوي ﺻﻔﺮاً اذا ﻛﺎن ھﻨﺎك ﺧﻄﺄ.
ﻣﺜﺎل)-: (4.4.3
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h
) ( main Enter value : 9
{ Enter value : 4
;int i, number, sum=0 Enter value : 6
)for (i=1;i<10;i++ Enter value : 8
{ Enter value : 1
; ) "printf("\nEnter value : Enter value : 12
; )scanf("%d",&number Enter value : -7
)if (number< 0 This is negative
{
; )" printf("This is negative
;) (exit
}
; sum+=number
}
; )printf("The sum of positive numbers %d", sum
}
ﻋﻨﺪﻣﺎ ﯾﻜﻮن اﻟﺸﺮط اﻟﻤﻮﺟﻮد ﻓﻲ اﻟﺘﺮﻛﯿﺐ اﻟﺸﺮﻃﻲ اﻟﺒﺴﯿﻂ ifﺻﺤﯿﺤﺎً ﺗﻄﺒﻊ اﻟﺮﺳﺎﻟﺔ اﻟﻤﻄﻠﻮﺑﺔ،ﺛﻢ ﺗﻨﻔﺬ ﺟﻤﻠ ﺔ اﻟﺨ ﺮوج )( exitاﻟﺘ ﻲ ﺗﻌﻨ ﻲ اﻟﺨ ﺮوج
ﻟﯿﺲ ﻓﻘﻂ ﻣﻦ اﻟﺤﻠﻘﺔ forﺑﻞ اﻟﺨﺮوج ﻧﮭﺎﺋﯿﺎً ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ وﺑﺎﻟﺘﺎﻟﻲ ﻟﻦ ﺗﻨﻔﺬ اﻟﺠﻤﻠﺔ اﻟﻤﻮاﻟﯿ ﺔ ﻟﮭ ﺬه اﻟﺤﻠﻘ ﺔ ،وﻋﻠﯿ ﺔ ﻟ ﻦ ﯾﻄﺒ ﻊ اﻟﺒﺮﻧ ﺎﻣﺞ ﻣﺠﻤ ﻮع اﻻﻋ ﺪاد
اﻟﻤﻮﺟﺒﺔ اﻟﻤﺪﺧﻠﺔ ،وھﺬا ﻣﺎ ﻧﺸﺎھﺪة ﻓﻲ اﻟﺘﻨﻔﯿﺬ اﻋﻼه .
) (4ﺟﻤﻠﺔ أذھﺐ اﻟﻰ : gotoﺗﺴﺘﺨﺪم ھﺬه اﻟﺠﻤﻠﺔ ﺑﺘﺤﻮﯾﻞ اﻟﻤﺴﺎر اﻟﺘﺘﺎﺑﻌﻲ ﻻواﻣﺮ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻰ ﺟﻤﻠﺔ ﻣﻌﯿﻨﺔ.
ﻣﺜﺎل)-: (4.4.4
Program اﻟﺘﻨﻔﯿﺬ
/*goto loop example*/ !10, 9, 8, 7, 6, 5, 4, 3, 2, 1, FIRE
>#include <stdio.h
) ( main
{
; int n=10
last :
; )printf("%d ," ,n
;n--
)if (n>0
; goto last
; ) "printf( "FIRE!\n
}
ﻧﻼﺣﻆ أن اﻟﺸﺮط ﻛﻠﻤﺎ ﻛﺎن ﺻﺤﯿﺤﺎً ﻓﺄن اﻟﻌﺒﺎرة gotoﻣﺘﺤﻘﻘﺔ وﺑﺎﻟﺘﺎﻟﻲ ﻓﺎن اﻟﺘﻔﯿﺬ ﯾﻨﺘﻘﻞ اﻟﻰ اﻟﻌﻨﻮان last :اﻟ ﻰ أن ﯾﺼ ﺒﺢ اﻟﺸ ﺮط ﻏﯿ ﺮ ﺻ ﺤﯿﺢ
ﻋﻨﺪﺋﺬ ﯾﻨﺘﻘﻞ اﻟﺘﻨﻔﯿﺬ اﻟﻰ ﻃﺒﺎﻋﺔ اﻟﻌﺒﺎرة !. FIRE
ﺗﻤﺎرﯾﻦ ) اﻟﻔﺼﻞ اﻟﺮاﺑﻊ(
ﺗﻤﺮﯾﻦ : 1أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﺤﺴﺎب وﻃﺒﺎﻋﺔ ﺣﺎﺻﻞ ﺟﻤﻊ ﻣﺮﺑﻌﺎت اﻻﻋﺪاد اﻟﺼﺤﯿﺤﺔ اﻟﻔﺮدﯾﺔ اﻟﻮاﻗﻌﺔ ﺑﯿﻦ ﻋﺪدﯾﻦ ﯾﺘﻢ ادﺧﺎﻟﮭﻤﺎ ﻋﻦ ﻃﺮﯾﻖ ﻟﻮﺣﮫ
اﻟﻤﻔﺎﺗﯿﺢ .
ﺗﻤﺮﯾﻦ : 2اﻟﻤﻄﻠﻮب ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻻﯾﺠﺎد ﺟﻤﯿﻊ اﻻﻋﺪاد اﻻوﻟﯿﺔ اﻟﻮاﻗﻌﺔ ﺑﯿﻦ 1و . 100
ﺗﻤﺮﯾﻦ : 4ﻓﺼﻞ دراﺳﻲ ﺑﮫ ﻋﺪد ﻏﯿﺮ ﻣﻌﺮوف ﻣﻦ اﻟﻄﻼب ،أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة رﻗﻢ اﻟﻄﺎﻟﺐ IDوﺟﻨﺴﺔ SEXودرﺟﺎﺗﮫ ﻓﻲ ﺛﻼث اﻣﺘﺤﺎﻧﺎت T1
، , T2 , T3أوﻗﻒ ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻨﺪ ادﺧﺎل رﻗﻢ اﻟﻄﺎﻟﺐ ﻗﯿﻤﺔ ﺳﺎﻟﺒﺔ ،اﻟﻤﻄﻠﻮب :
ﻣﻼﺣﻈﺔ -:ﻓﻲ ﻟﻐﺔ Cﯾﻮﺟﺪ اﻻﻣﺮ #defineاﻟﺬي ﯾﻌﺘﺒﺮ ﻣﻦ أواﻣﺮ اﻟﻤﻌ ﺎﻟﺞ اﻷوﻟ ﻲ ) (Preprocessorواﻟ ﺬي ﯾﻘ ﻮم ﺑﺄﻧﺸ ﺎء ﻣﻌﺮﻓ ﺎت ﺗﺴ ﻤﻰ اﻟﺜﻮاﺑ ﺖ
اﻟﺮﻣﺰﯾﺔ) (Symbolic Constantsﺣﯿﺚ ﯾﻤﻜﻦ وﺿﻌﺔ ﻓﻲ أي ﻣﻜﺎن ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ وﻟﻜﻦ ﻣﻦ اﻷﻓﻀﻞ ﻣﺎ ﯾﻮﺿ ﻊ ﻓ ﻲ أوﻟ ﮫ،أي ﺑﻌ ﺪ ﺟﻤ ﻞ . #include
ﻓﻲ ﻛﺜﯿﺮ ﻣﻦ اﻟﺒﺮاﻣﺞ ﯾﺴﺘﺨﺪم ھﺬا اﻻﻣﺮ ﻓﻲ اﻻﻋﻼن ﻋﻦ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ .
ﺣﯿﺚ
: Typeﯾﻤﺜﻞ ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ.
: Array_nameﯾﻤﺜﻞ اﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ.
: indexﯾﻤﺜﻞ ﻋﺪد ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ .
; ]int billy[5 ﻣﺜﺎل) -: (5.1.1ﯾﻤﻜﻦ اﻻﻋﻼن ﻋﻦ 5ﻗﯿﻢ ﺻﺤﯿﺤﺔ ﻓﻲ ﻣﺼﻔﻮﻓﺔ ﻣﺎ وﺑﺪون اﺳﺘﺨﺪام 5ﻣﺘﻐﯿﺮات ﻣﺨﺘﻠﻔﺔ .ﻓﻤﺜﻼً
ﺣﯿﺚ أن اﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ ھﻨﺎ billyوﻋﻨﺎﺻﺮھﺎ ﻣ ﻦ اﻟﻨ ﻮع اﻟﺼ ﺤﯿﺢ ،ﻧﻼﺣ ﻆ اﻟﺸ ﻜﻞ اﻟﺘ ﺎﻟﻲ واﻟ ﺬي ﯾُﻈﮭ ﺮ ﻛﯿ ﻒ ﯾ ﺘﻢ ﺣﺠ ﺰ ﻣﻮاﻗ ﻊ ﻓ ﻲ اﻟ ﺬاﻛﺮة
ﻟﻌﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ . billy
ﺣﯿﺚ ان ﻛﻞ ﺧﺎﻧﺔ ﺗﻀﻢ ﻋﻨﺼﺮ ﻣﻦ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ واﻟﺬي ﯾﻜﻮن ﻣﻦ اﻟﻨﻮع اﻟﺼﺤﯿﺢ ،دﻟﯿﻞ) (indexھﺬه اﻟﻘﯿﻢ رُﻗﻢ ﻣﻦ 0اﻟﻰ ، 4ﻻﻧﮫ داﺋﻤﺎً ﻓ ﻲ ﻟﻐ ﺔ
Cاﻟﻌﻨﺼ ﺮ اﻷول ﻓ ﻲ اﻟﻤﺼ ﻔﻮﻓﺔ ﯾﻜ ﻮن دﻟﯿﻠ ﺔ . 0ﻓﻤ ﺜﻼً اﻟﻌﻨﺼ ﺮ اﻻول ﻓ ﻲ اﻟﻤﺼ ﻔﻮﻓﺔ ھ ﻮ ] billy[0ﺑﯿﻨﻤ ﺎ اﻟﻌﻨﺼ ﺮ اﻟﺜ ﺎﻧﻲ ھ ﻮ ] billy[1وھ ﺬا اﻟ ﻰ
اﻟﻌﻨﺼﺮ اﻻﺧﯿﺮ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ وھﻮ ] . billy[4ﻛﻤﺎ ﻧﻼﺣﻆ ﻓﻲ اﻟﺸﻜﻞ اﻻﺗﻲ :
اﻟﻘﯿﻢ اﻷﺑﺘﺪاﺋﯿﺔ ﻟﻠﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪ اﻟﻮاﺣﺪ) -: (Initial Valuesﯾﻤﻜﻦ ﺗﺨﺼﯿﺺ أو ﺷﺤﻦ ﻗﯿﻢ ﻣﺒﺪﺋﯿﺔ ﻷي ﻣﺼﻔﻮﻓﺔ ﻋﻦ ﻃﺮﯾﻖ :
ﺣﯿﺚ value_1,value_2,…,value_nﺗﻤﺜﻞ ﻗﯿﻢ اﻟﻤﺼﻔﻮﻓﺔ ﻋﻠﻰ اﻟﺘﺮﺗﯿﺐ .ھﻨﺎ ﻋﺪد اﻟﻌﻨﺎﺻﺮ ھﻮ nواﻟﺬي ﯾﻤﺜﻞ . index
. int billy[5]={ 16, 2, 77, 40, 12071 } ; ﻟﺘﻜﻦ ﻟﺪﯾﻨﺎ اﻟﻤﺼﻔﻮﻓﺔ-: (5.1.2)ﻣﺜﺎل
: ﻛﻤﺎ ﻧﻼﺣﻆ ﻓﻲ اﻟﺸﻜﻞ اﻻﺗﻲ، billy[0]=16 , billy[1]=2 , billy[2]=77 , billy[3]=40 , billy[4]=12071 ھﻨﺎ
ﺛ ﻢ ﻃﺒﺎﻋ ﺔ ﻗ ﯿﻢ اﻟﻤﺼ ﻔﻮﻓﺔbilly ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﯾﺘﻢ ﺗﺨﺼﯿﺺ أرﺑﻌﺔ ﻗﯿﻢ ﻣﻦ اﻟﻨﻮع اﻟﺼﺤﯿﺢ اﻟﻰ ﻣﺼ ﻔﻮﻓﺔ ذات ﺑﻌ ﺪ واﺣ ﺪ أﺳ ﻤﮭﺎ-: (5.1.4)ﻣﺜﺎل
. ﻣﻊ ﻣﺠﻤﻮع ﺗﻠﻚ اﻟﻘﯿﻢ
Program اﻟﺘﻨﻔﯿﺬ
/*arrays example*/ billy[0]= 16
#include <stdio.h> billy[1]= 2
#define M 5 billy[2]= 77
main () billy[3]= 40
{ billy[4]= 12071
int billy [M] = {16, 2, 77, 40, 12071}; The sum = 12206
int n, result=0;
for ( n=0 ; n<5 ; n++ )
{
printf( " billy[%d]=%d\n", n, billy[n]) ;
result += billy[n];
}
printf( " The sum =%d ", result) ;
}
. اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﯾﺘﻢ ﻓﯿﺔ ادﺧﺎل وﻃﺒﺎﻋﺔ ﻋﻨﺎﺻﺮ ﻣﺼﻔﻮﻓﮫ ذات ﺑﻌﺪ واﺣﺪ وأﯾﺠﺎد وﻃﺒﺎﻋﺔ أﺻﻐﺮ ﻋﻨﺼﺮ ﻓﻲ ھﺬه اﻟﻤﺼﻔﻮﻓﮫ-: (5.1.5)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> mat[0]= 3
#define LEN 5 mat[1]= 8
main ( ) mat[2]= 7
{ mat[3]= 2
int i, min ,pos , mat[LEN] ; mat[4]= 4
for(i=0 ; i< LEN ; i++)
{ The Smallest is mat[3]= 2
scanf("%d",&mat[i]) ;
printf( " mat[%d]=%d\n", i, mat[i]) ;
}
min=mat[0] ;
for(i=1 ; i< LEN ; i++)
if (mat[i] < min)
{
min=mat[i] ;
pos=i ;
}
printf( " The Smallest is mat[%d]=",pos, min) ;
}
ﻣﺜﺎل) -: (5.1.6أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة ﻗﯿﻢ ﺣﻘﯿﻘﯿﺔ ﻟﻤﺼﻔﻮﻓﺔ aﻋﺪد ﻋﻨﺎﺻﺮھﺎ ، 6ﺛﻢ رﺗﺐ ھﺬه اﻟﻌﻨﺎﺻﺮ ﺗﺼﺎﻋﺪﯾﺎً وﺿﻌﮭﺎ ﻓﻲ ﻣﺼﻔﻮﻓﮫ ﺟﺪﯾﺪة . b
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h a[0]= 2.5
#define M 6 a[1]= 9.1
) ( main a[2]= 6.06
{ a[3]= 2.51
; int i, j ,n1 , n2 a[4]= 0.05
; ]float temp, a[M a[5]= 3.0
)for(i=0 ; i< M ; i++
{ The Sorted Array as following :
; )]scanf("%f", a[i b[0]= 0.05
; )]printf( " a[%d]=%f\n", i, a[i b[1]= 2.50
} b[2]= 2.51
; n1=M-1 b[3]= 3.00
)for(i=1 ; i< n1 ; i++ b[4]= 6.06
{ b[5]= 9.10
; n2=i+1
)for(j=n2 ; j< M ; j++
{
)if(a[j]-a[i]< 0
{
; ]temp=a[i
; ]a[i]=a[j
; a[j]=temp
}
}
}
; )" printf(" The Sorted Array as following :\n
)for(i=0 ; i<M ; i++
; )]printf( " b[%d]=%f\n", i, a[i
}
) (5.2اﻟﻤﺼ ﻔﻮﻓﺎت ﻣﺘﻌ ﺪدة اﻻﺑﻌ ﺎد -:ﺳ ﻮف ﻧﺨﺼ ﺺ دراﺳ ﺘﻨﺎ ﻓ ﻲ ھ ﺬا اﻟﺒﻨ ﺪ ﺣ ﻮل اﻟﻤﺼ ﻔﻮﻓﺎت ذات اﻟﺒﻌ ﺪﯾﻦ ) اﻟﻤﺼ ﻔﻮﻓﺎت اﻟﻤﻜﻮﻧ ﺔ ﻣ ﻦ
ﺻﻔﻮف واﻋﻤﺪة ( ﻓﻘﻂ ،ﺣﯿﺚ ﯾﻤﻜﻦ أن ﺗﻌﻤﻢ اﻟﺪراﺳﮫ اﻟﻰ ﻣﺼﻔﻮﻓﺎت ذات أﺑﻌﺎد أﻛﺜﺮ .
ﺣﯿﺚ
: Typeﯾﻤﺜﻞ ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ .
: Array_nameﯾﻤﺜﻞ أﺳﻢ اﻟﻤﺼﻔﻮﻓﺔ .
: index_1ﯾﻤﺜﻞ ﻋﺪد اﻟﺼﻔﻮف ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ .
: index_2ﯾﻤﺜﻞ ﻋﺪد اﻻﻋﻤﺪة ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ .
ﻓﻲ ھﺬا اﻟﻤﺜﺎل ،ﺗﻢ اﻻﻋﻼن ﻋﻦ ﻣﺼﻔﻮﻓﺔ أﺳﻤﮭﺎ jimmyواﻟﺘﻲ ﺗﺘﻀﻤﻦ 3ﺻﻔﻮف و 5أﻋﻤﺪة ) أي أن ﻋﺪد ﻋﻨﺎﺻﺮھﺎ 15ﻋﻨﺼﺮاً (.
ھﻮ اﻟﻌﻨﺼﺮ اﻟﻮاﻗﻊ ﻓ ﻲ اﻟﺼ ﻒ اﻟﺜ ﺎﻧﻲ اﻟﻌﻤ ﻮدjimmy[1][3] ﻓﻤﺜﻼً اﻟﻌﻨﺼﺮ. ﻓﻲ اﻟﺬاﻛﺮةjimmy ﻧﻼﺣﻆ ﻓﻲ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ ﻣﻮاﻗﻊ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ
.اﻟﺮاﺑﻊ
: ﯾﻤﻜﻦ ﺗﺨﺼﯿﺺ أو ﺷﺤﻦ ﻗﯿﻢ ﻣﺒﺪﺋﯿﺔ ﻷي ﻣﺼﻔﻮﻓﺔ ﻋﻦ ﻃﺮﯾﻖ-: (Initial Values)اﻟﻘﯿﻢ اﻷﺑﺘﺪاﺋﯿﺔ ﻟﻠﻤﺼﻔﻮﻓﺔ ذات اﻟﺒﻌﺪﯾﻦ
Type Array_name [index_1][index_2]={ { list of first row},{list of second row},…,{list of last row] } ;
-: (5.2.4)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15
#define WIDTH 5
#define HEIGHT 3 jimmy[0][0]= 1
main ( ) jimmy[0][1]= 2
{ jimmy[0][2]= 3
int jimmy [HEIGHT][WIDTH]; jimmy[0][3]= 4
int n,m; jimmy[0][4]= 5
for (n=0 ;n<HEIGHT ;n++) jimmy[1][0]= 2
for (m=0 ;m<WIDTH ;m++) jimmy[1][1]= 4
{ jimmy[1][2]= 6
scanf("%d",&jimmy[n][m]) ; jimmy[1][3]= 8
} jimmy[1][4]= 10
for (n=0 ;n<HEIGHT ;n++) jimmy[2][0]= 3
for (m=0 ;m<WIDTH ;m++) jimmy[2][1]= 6
{ jimmy[2][2]= 9
printf( "jimmy[%d][%d]=%d\n" ,n ,m ,jimmy[n][m]) ; jimmy[2][3]= 12
} jimmy[2][4]= 15
}
ﻟﺬﻟﻚ ﯾﻤﻜﻦ اﻟﺤﺼﻮل ﻋﻠﻰ ھﺬه اﻟﻌﻨﺎﺻ ﺮ ﻣ ﻦ ﺧ ﻼل ﺗﻠ ﻚ واﻟﻌﻼﻗ ﺔ وﻋ ﺪم اﺳ ﺘﺨﺪام، ﻧﻼﺣﻆ أن ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ ﺗﺮﺗﺒﻂ ﺑﻌﻼﻗﺔ ﻣﺎ
: ﻟﺬﻟﻚ ﻓﺄن اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ ﯾﻤﻜﻦ ﻛﺘﺎﺑﺘﺔ ﺑﺎﻟﻄﺮﯾﻘﺔ اﻻﺗﯿﺔ، واﻟﺘﻲ ﻣﻦ ﺧﻼﻟﮭﺎ ﻗﺪ ﯾﺤﺚ ﺧﻄﺎء ﻓﻲ ادﺧﺎل ﺑﻌﺾ اﻟﻘﯿﻢcin>> داﻟﺔ اﻻدﺧﺎل
-: (5.2.5)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <iostream.h> jimmy[0][0]= 1
#define WIDTH 5 jimmy[0][1]= 2
#define HEIGHT 3 jimmy[0][2]= 3
int main () jimmy[0][3]= 4
{ jimmy[0][4]= 5
int jimmy [HEIGHT][WIDTH]; jimmy[1][0]= 2
int n,m; jimmy[1][1]= 4
for (n=0 ;n<HEIGHT ;n++) jimmy[1][2]= 6
for (m=0 ;m<WIDTH ;m++) jimmy[1][3]= 8
{ jimmy[1][4]= 10
jimmy[n][m]=(n+1)*(m+1); jimmy[2][0]= 3
} jimmy[2][1]= 6
for (n=0 ;n<HEIGHT ;n++) jimmy[2][2]= 9
for (m=0 ;m<WIDTH ;m++) jimmy[2][3]= 12
{ jimmy[2][4]= 15
printf( "jimmy[%d][%d]=%d\n" ,n ,m ,jimmy[n][m]) ;
}
}
. ﺛﻢ ﯾﻘﻮم ﺑﺎﺟﺮاء ﻋﻤﻠﯿﺔ اﻟﺠﻤﻊ ﻋﻠﻰ اﻟﻤﺼﻔﻮﻓﺘﯿﻦ، اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﯾﻘﻮم ﺑﻌﻤﻠﯿﺔ أدﺧﺎل ﻣﺼﻔﻮﻓﺘﯿﻦ ﻣﻦ اﻟﻨﻮع اﻟﺼﺤﯿﺢ-: (5.2.6)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> 2 7 -1 9 0 -3 1 8 3 -1 5 1 19 0 22 0 8 4
#define R 3
#define C 3 Addition of two arrays :
main ()
{ 9 8 -3
int a[R][C] , b[R][C] ,add[R][C] , mult[R][C] ; 9 2 6
int i, j , k ; 19 22 12
for(i=0 ; i< R ; i++)
for(j=0 ; j< C ; j++)
scanf("%d%d" ,&a[i][j],&b[i][j]) ;
for(i=0 ; i< R ; i++)
for(j=0 ; j< C ; j++)
add[i][j]= a[i][j]+b[i][j] ;
printf( "Addition of two arrays :\n" ) ;
for(i=0 ; i< R ; i++)
{
for(j=0 ; j< C ; j++)
printf("%d \t",add[i][j]) ;
printf("\n");
}
}
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h The product = 48
#define R 3 Maximum element in Array = 22
#define C 3
)( int main
{
; }}int a[R][C]={{2,-1,0},{1,3,5},{19,22,8
; int i, j ,max , product
; ]max=a[0][0
; product =1
)for(i=0 ; i< R ; i++
)for(j=0 ; j< C ; j++
{
)if(i==j
; ]product*= a[i][j
)if(a[i][j] >max
; ]max= a[i][j
}
; )printf( "The product = %d\n", product
; ) printf(" Maximum element in Array =%d ",max
}
ﻧﻼﺣﻆ ﻣﻦ ﺧﻼل اﻟﺒﺮﻧﺎﻣﺞ اﻋﻼه ،اﻧﮫ ﺗﻢ ادﺧﺎل ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ﺑﺼﻮرة ﻣﺒﺎﺷﺮة،ﺑﻌﺪھﺎ وﺿﻊ اﻟﺸﺮط اﻻول اﻟﺘﺎﺑﻊ ﻟﻠﺘﺮﻛﯿﺐ اﻟﺸﺮﻃﻲ اﻟﺒﺴ ﯿﻂ اﻻول
واﻟﻤﺘﻀﻤﻦ ﺣﺴﺎب ﺣﺎﺻﻞ ﺿﺮب ﻋﻨﺎﺻﺮ اﻟﻘﻄﺮ اﻟﺮﺋﯿﺴﻲ ،ﺑﯿﻨﻤﺎ اﻟﺸﺮط اﻟﺜﺎﻧﻲ اﻟﻤﻮﺟﻮد ﻓﻲ اﻟﺘﺮﻛﯿﺐ اﻟﺸﺮﻃﻲ اﻟﺜﺎﻧﻲ ﻓﯿﺘﻀﻤﻦ اﯾﺠﺎد أﻛﺒﺮ ﻋﻨﺼ ﺮ ﻓ ﻲ
اﻟﻤﺼﻔﻮﻓﺔ.
ﺣﯿﺚ ﺗﻢ اﻻﻋ ﻼن ﻋ ﻦ ﻣﺼ ﻔﻮﻓﺔ ﻣ ﻦ اﻟﻨ ﻮع اﻟﺤﺮﻓ ﻲ) (charوأﺳ ﻤﮭﺎ ) (mywordوﺗﺘﻀ ﻤﻦ اﻟﺤ ﺮوف ' 'H' , 'e' , 'l' , 'l' , 'oﺑﺎﻻﺿ ﺎﻓﺔ اﻟ ﻰ اﻟﺮﻣ ﺰ
' '\0واﻟﺬي ﯾﺴﻤﻰ اﻟﺮﻣﺰ اﻟﺼﻔﺮي ،ﯾﺠﺐ أن ﯾﻜﻮن ھﺬا اﻟﺮﻣﺰ ﻣﻮﺟﻮد ﻓﻲ ﻧﮭﺎﯾﺔ أي ﻣﺼ ﻔﻮﻓﺔ ﺣﺮﻓﯿ ﺔ ،ﺣﯿ ﺚ أن اﻟﻐ ﺮض ﻣﻨ ﮫ ھ ﻮ ﻣﻌﺮﻓ ﺔ ﻣﺘ ﺮﺟﻢ اﻟﻠﻐ ﺔ
ﺑﻨﮭﺎﯾﺔ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ ،وﻋﻠﯿﮫ ﯾﺠﺐ ﺣﺠﺰ ﻟﮫ ﻣﻜﺎن ﻓﻲ اﻟﺬاﻛﺮة ،أي أن دﻟﯿﻞ اﻟﻤﺼ ﻔﻮﻓﺔ) (indexﯾﻀ ﺎف ﻟ ﮫ 1ﻋﻨ ﺪ اﻻﻋ ﻼن ﻋ ﻦ اﻟﻤﺼ ﻔﻮﻓﺔ.ﻻﺣ ﻆ
أن اﻟﺪﻟﯿﻞ ﻓﻲ اﻟﻤﺼﻔﻮﻓﺔ mywordھﻮ .6
ﻣﻼﺣﻈﺔ) -: (5.3.1ﯾﻤﻜ ﻦ ﻛﺘﺎﺑ ﺔ اﻟﻤﺼ ﻔﻮﻓﺔ اﻟﺤﺮﻓﯿ ﺔ ﺑﺼ ﯿﻐﺔ اﻟﺴﻠﺴ ﻠﺔ اﻟﺤﺮﻓﯿ ﺔ ،وﻟﻜ ﻦ ﯾﺠ ﺐ اﻻﻧﺘﺒ ﺎه اﻟ ﻰ دﻟﯿ ﻞ اﻟﻤﺼ ﻔﻮﻓﺔ اﻟ ﺬي ﯾﺠ ﺐ أن ﯾﻜ ﻮن ﺑﻌ ﺪد
; "char myword [6] = "Hello اﺣﺮف اﻟﺴﻠﺴﻠﺔ اﻟﺤﺮﻓﯿﺔ ﻣﻀﺎف ﻟﮫ 1واﻟﺬي ﯾﻜﻮن ﻣﺨﺼﺺ ﻟﻠﺮﻣﺰ اﻟﺼﻔﺮي ' .'\0ﻓﻤﺜﻼً ﻧﻜﺘﺐ
; "char myword [] = "Hello ﻣﻼﺣﻈﺔ) -: (5.3.2ﯾﻤﻜﻦ ﻋﺪم ذﻛﺮ دﻟﯿﻞ اﻟﻤﺼﻔﻮﻓﺔ اﺛﻨﺎء اﻻﻋﻼن ﻋﻨﮭﺎ .ﻣﺜﻼأ ﻧﺴﺘﻄﯿﻊ أن ﻧﻜﺘﺐ
ﻣﺜﺎل)-: (5.3.3
Program اﻟﺘﻨﻔﯿﺬ
/*null-terminated sequences of characters*/ Please, enter your first name: Mohammed
>#include <stdio.h Hello, Mohammed
) ( main
{
;" char question[] = "Please, enter your first name:
;" char greeting[] = "Hello,
;]char yourname [80
;)printf("%s", question
;)scanf("%s",&yourname
;) printf("%s, %s" ,greeting , yourname
}
ﺗﻤﺮﯾﻦ : 1ﻣﺨﺰن ﯾﺘﻀﻤﻦ ﺛﻼث اﺻﻨﺎف ﻣﻦ اﻟﺒﻀﺎﺋﻊ،اﻟﻤﻄﻠﻮب ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﻻدﺧﺎل رﻗﻢ اﻟﺼﻨﻒ ﻣﻊ ﻋﺪد ﻣﺒﯿﻌﺎت ذﻟﻚ اﻟﺼﻨﻒ ﺧﻼل اﻻﺷﮭﺮ
اﻟﺜﻼث اﻻوﻟﻰ ﻣﻦ اﻟﺴﻨﺔ ﻣﻊ ﺣﺴﺎب وﻃﺒﺎﻋﺔ اﻻﺗﻲ :
ﺗﻤﺮﯾﻦ : 2أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻻﯾﺠﺎد ﻋﺪد ﻣﺮات ﺗﻜﺮار اﻟﺤﺮف kﻓﻲ ﻧﺺ ﻣﻌﯿﻦ.
ﺗﻤﺮﯾﻦ : 3اﻟﻤﻄﻠﻮب ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺞ ﯾﺘﻀﻤﻦ ادﺧﺎل أﺳﻢ اﻟﻤﻮﻟﻮد ،ﻣﻜﺎن اﻟﻮﻻدة ،اﻟﺠﻨﺲ ،ﺗﺎرﯾﺦ اﻟﻮﻻدة)اﻟﯿﻮم واﻟﺸﮭﺮ واﻟﺴﻨﺔ( ،ﺛﻢ ﻋﻤﻞ اﻻﺗﻲ:
ﺗﻤﺮﯾﻦ : 4ﻓﺼﻞ دراﺳﻲ ﯾﺘﻀﻤﻦ 50ﻃﺎﻟﺒﺎً وﻃﺎﻟﺒﺔ ،اﻟﻤﻄﻠﻮب ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة أﺳﻢ اﻟﻄﺎﻟﺐ ودرﺟﺎﺗﺔ ﻓﻲ ﺛﻼث ﻣﻮاد )،(T1,T2,T3ﺟﻨﺴﮫ
) Mأو (Fﺛﻢ ﺣﺴﺎب وﻃﺒﺎﻋﺔ ﻣﺎﯾﻠﻲ:
(aﻣﻌﺪل ﻛﻞ ﻃﺎﻟﺐ ﻓﻲ اﻟﺪرﺟﺎت اﻟﺜﻼث.
(bاﻟﻤﻌﺪل اﻟﻌﺎم ﻟﻠﻄﻠﺒﺔ.
(cاﻋﻠﻰ ﻣﻌﺪل وﻃﺒﺎﻋﺘﺔ ﻣﻊ اﺳﻢ اﻟﻄﺎﻟﺐ اﻟﺬي ﯾﻤﺘﻠﻚ ذﻟﻚ اﻟﻤﻌﺪل.
(dﻋﺪد اﻟﻄﺎﻟﺒﺎت اﻟﻨﺎﺟﺤﺎت ﺑﺎﻟﻤﻌﺪل ) درﺟﺔ اﻟﻨﺠﺎح 50ﻓﻤﺎﻓﻮق (.
; function body
; )return(expression
}
ﺣﯿﺚ
: Typeﯾﻤﺜﻞ ﻧﻮع ﻗﯿﻤﺔ اﻟﺪاﻟﺔ ﻋﻨﺪ رﺟﻮﻋﮭﺎ اﻟﻰ اﻟﺒﻨﺎﻣﺞ اﻟﻤﻨﺎدي .
: function_nameﯾﻤﺜﻞ أﺳﻢ اﻟﺪاﻟﺔ .
: argument1, argument2 ...ﺗﻤﺜﻞ دﻻﺋﻞ أو ﻣﻌﺎﻣﻼت ﻻﺳﺘﻘﺒﺎل وارﺟﺎع اﻟﺒﯿﺎﻧﺎت .
: Tapes of the parameter variablesﻧﻮع اﻟﻤﻌﺎﻣﻼت اﻟﻤﺴﺘﻘﺒﻠﺔ واﻟﻤﺮﺟﻌﺔ ﻟﻠﺒﯿﺎﻧﺎت .
: types of local variablesاﻟﻤﺘﻐﯿﺮات اﻟﻤﻌﻠﻦ ﻋﻨﮭﺎ داﺧﻞ اﻟﺪاﻟﺔ وھﻲ ﻣﺤﻠﯿﺔ )واﻟﻤﺘﻐﯿﺮات اﻟﻤﺤﻠﯿ ﺔ ھ ﻲ ﻣﺘﻐﯿ ﺮات ﯾﻌﻠ ﻦ ﻋﻨﮭ ﺎ وﺗﺴ ﺘﺨﺪم ﻓ ﻲ
ﺣﺪود اﻟﺪاﻟ ﮫ وﻻ ﯾﻤﻜ ﻦ اﻟﺘﻌ ﺮف ﻋﻠﯿﮭ ﺎ ﻓ ﻲ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﺮﺋﯿﺴ ﻲ أو أﯾ ﺔ داﻟ ﺔ أﺧ ﺮى ﺣﺘ ﻰ وﻟ ﻮ ﻛﺎﻧ ﺖ ﺗﺤﻤ ﻞ ﻧﻔ ﺲ
اﻻﺳﻢ(.
: function bodyﯾﻤﺜﻞ ﺟﻤﻠﺔ أو ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺠﻤﻞ .
: returnﺗﻤﺜﻞ ﺟﻤﻠﺔ اﻋﺎدة ﻗﯿﻤﺔ اﻟﺘﻌﺒﯿﺮ ) (expressionﺣﺴﺐ ﻧﻮع اﻟﺪاﻟﺔ .
ﻣﻼﺣﻈﺔ)-:(6.1
.iﯾﺘﻢ اﻻﻋﻼن واﻟﺘﻌﺮﯾﻒ ﻋﻦ اﻟﺪاﻟﺔ ﻓﻲ ﺑﺪاﯾﺔ اﻟﺒﺮﻧﺎﻣﺞ وﻗﺒﻞ اﻟﺪاﻟﺔ اﻟﺮﺋﯿﺴﯿﺔ ) (. main
.iiﯾﺘﻢ اﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻦ ﻃﺮﯾﻖ اﺳﻤﮭﺎ ﻓﻘﻂ .
.iiiﯾﻨﺒﻐﻲ اﻻﻋﻼن ﻋﻦ ﻧﻮع اﻟﺪاﻟﺔ اذا ﻛﺎﻧﺖ ﺗﺮﺟﻊ ﺑﻘﯿﻤﺔ ﻣﻦ اﻟﻨﻮع ﻏﯿﺮ اﻟﺼﺤﯿﺢ) ،(intوﻓﻲ ﺣﺎﻟﺔ ﻋﺪم اﻻﻋ ﻼن ﻋﻨﮭ ﺎ ﻗﺒ ﻞ اﺳ ﺘﺪﻋﺎﺋﮭﺎ
) ((1) float larger ﺗﻜﻮن ﻗﯿﻤﺘﮭﺎ intﺗﻠﻘﺎﺋﯿﺎً .وﯾﺴﺘﺤﺴﻦ اﻻﻋﻼن ﻋﻨﮭﺎ ﻓﻲ ﻛﻞ اﻻﺣﻮال .ﻣﺜﻼً
) ((2) int temp
) ((3) temp
.ivﻗﺪ ﯾﻜﻮن ﻟﻠﺪاﻟﺔ ﻣﮭﻤﺔ ﻣﻌﯿﻨﺔ ﺗﺆدﯾﮭﺎ ﺑﺪون ارﺟﺎع ﻗﯿﻤﺔ ﻋﻨﺪ اﻧﺘﮭﺎﺋﮭﺎ،أي اﻧﮭﺎ داﻟﺔ ﺧﺎﻟﯿ ﺔ ﺑ ﺪون ﻣﻌ ﺎﻣﻼت ﻓ ﻲ ھ ﺬه اﻟﺤﺎﻟ ﺔ ﯾﻌﻠ ﻦ ﻋﻨﮭ ﺎ
ﻣﻦ اﻟﻨﻮع اﻟﺨﺎﻟﻲ ). (voidﻓﻤﺜﻼً
) ( void printmessage or )void printmessage (void
ﻣﺜﺎل) -:(6.2أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﯾﺴﺘﺨﺪم داﻟﺔ ﻻﺟﺮاء ﻋﻤﻠﯿﺔ اﻟﺠﻤﻊ ﻷي ﻋﺪدﯾﻦ ﺻﺤﯿﺤﯿﻦ .
Program اﻟﺘﻨﻔﯿﺬ
/* function example */ The result is 8
>#include <stdio.h
)int addition (int a, int b
{
; int r
; r=a+b
; )return (r
}
) ( main
{
; int z
; )z = addition (5,3
; )printf ("The result is %d", z
}
ﻧﻼﺣﻆ اﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺘﻌﺮﯾﻒ داﻟﺔ ﻟﻠﺠﻤﻊ ) (additionﻓﻲ ﺑﺪاﯾ ﺔ اﻟﺒﺮﻧ ﺎﻣﺞ ،واﻟﺘ ﻲ ﻟﮭ ﺎ ﻣﻌ ﺎﻣﻼت ﺻ ﺤﯿﺤﺔ a , bﺛ ﻢ ﻗﻤﻨ ﺎ ﺑﺘﻮﺿ ﯿﺢ ﻋﻤ ﻞ اﻟﺪاﻟ ﺔ ﻣ ﻦ ﺧ ﻼل
اﻟﺠﻤﻞ اﻟﻤﻮﺟﻮدة داﺧﻞ اﻟﻘﻮﺳﯿﻦ } ، { ,ھﻨﺎ اﻟﻤﺘﻐﯿﺮ اﻟﺼﺤﯿﺢ rﯾﻤﺜﻞ ﻣﺘﻐﯿﺮ ﻣﺤﻠﻲ ،ﻗﻤﻨﺎ ﺑﺴﺘﺪﻋﺎء اﻟﺪاﻟﺔ داﺧﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻦ ﻃﺮﯾﻖ اﺳ ﻤﮭﺎ ﻓﻘ ﻂ.ﺑﻌ ﺪھﺎ
ﺗﻢ اﻋﻄﺎء اﻟﻘﯿﻢ 5ﻟﻠﻤﺘﻐﯿﺮ aو 3ﻟﻠﻤﺘﻐﯿﺮ . b
ﺑﻌﺪ ذﻟﻚ ﻧُﻔﺬت ﺟﻤﻞ اﻟﺪاﻟﺔ وھﻲ ﻋﻤﻠﯿﺔ اﻟﺠﻤﻊ وﻇﮭﺮت ﻟﻨﺎ اﻟﻨﺘﯿﺠﺔ وھﻲ اﻟﻘﯿﻤﺔ 8واﻟﺘﻲ اﻋﻄﯿﺖ ﻟﻠﻤﺘﻐﯿﺮ zوﻛﻤﺎ ﯾﻠﻲ :
ﻣﺜﺎل) -:(6.3اﻟﺒﺮﻧﺎﻣﺞ اﻟﺘﺎﻟﻲ ﯾﻮﺿﺢ اﺳﺘﺨﺪام داﻟﺘﯿﻦ ﺿﻤﻦ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻮاﺣﺪ ،اﺣﺪھﻤﺎ ﻟﻌﻤﻠﯿﺔ اﻟﻀﺮب واﻻﺧﺮى ﻟﻌﻤﻠﯿﺔ اﻟﻘﺴﻤﺔ .
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h 10
)int mul (int a, int b 2.5
{
; )return (a*b
}
)float div (float a, float b
{
; )return (a/b
}
) ( main
{
; int x=5,y=2
; float n=5.0,m=2.0
; ) )printf (" %d*%d=%d\n",x,y, mul(x,y
; ) )printf (" %d/%d=%f\n",x,y, div (n,m
}
Program اﻟﺘﻨﻔﯿﺬ
/*void function example*/ I'm a function!
#include <stdio.h>
void printmessage ( )
{
Printf( "I'm a function!" );
}
main ( )
{
printmessage ( );
}
. ﺛﻢ اﺳﺘﺨﺪم اﻟﺪاﻟﺔ ﻻﯾﺠﺎد أﻛﺒﺮ ﻗﯿﻤﺔ ﻣﻦ ھﺬه اﻟﻤﺘﻐﯿﺮات، أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة أرﺑﻊ ﻣﺘﻐﯿﺮات ﺣﻘﯿﻘﯿﺔ-:(6.5)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> Enter Four Real numbers : 5.26 0.044 9.9 0.4
float large (x,y) The Largest number : 9.9
float x,y ;
{
if(x>y)
return x ;
else
return y ;
}
main( )
{
float temp1,temp2,max ;
float num1,num2,num3,num4 ;
printf("Enter Four Real numbers :") ;
scanf("%f%f%f%f", num1,num,num3,num4) ;
temp1=large(num1,num2) ;
temp2=large(num3,num4) ;
max=large(temp1,temp2) ;
printf( "\nThe Largest number :" ,max) ;
}
. أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎ ﻟﺤﺴﺎب ﻣﺮﺑﻊ اﻟﻌﺪد ﻋﻠﻰ أن ﯾﺤﺴﺐ ﻣﺮﺑﻊ ﺑﺪاﻟﺔ ﻣﺴﺘﻘﻠﺔ-:(6.6)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> Enter value : 5
int square(int x) The Square of is 25
{
return (x*x) ;
}
main ( )
{
int z ;
printf(" Enter value :") ;
scanf("%d" ,&z) ;
printf ("\n The Square of %d is %d", z, square(z) ) ;
}
. ﺛﻢ رﺗﺐ ھﺬه اﻻﻋﺪاد ﺗﺼﺎﻋﺪﯾﺎً ﺑﺎﺳﺘﺨﺪام اﻟﺪاﻟﺔ، أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة ﺛﻼث اﻋﺪاد ﻣﻦ اﻟﻨﻮع اﻟﺼﺤﯿﺢ-:(6.7)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> Enter three numbers : 58 25 99
int swap(x,y) Ascending order : 25 , 58 , 99
int x, y ;
{
int temp ;
temp=x ;
x=y ;
y=temp ;
}
main ( )
{
int a, b, c ;
printf(" Enter three numbers :" ) ;
scanf("%d%d%d", a , b , c ) ;
if(a>b)
{
swap(a,b) ;
}
if(b>c)
{
swap(b,c) ;
}
if(a>c)
{
swap(a,c) ;
}
printf("\n Ascending order :%d,%d,%d" ,a ,b, c ) ;
}
ﻟﻜ ﻮن اﻟﺸ ﺮطswap(58,25) ﻋﻨﺪ اﻟﺘﻔﯿﺬ ﺗ ﻢ اﺳ ﺘﺪﻋﺎء داﻟ ﺔ اﻟﺘﺒ ﺪﯾﻞ. ً ﻛﻠﻤﺎ ﻛﺎن اﻟﺸﺮط ﺻﺤﯿﺤﺎswap(x,y) ﻓﻲ ھﺬا اﻟﺒﺮﻧﺎﻣﺞ ﯾﺘﻢ اﺳﺘﺪﻋﺎء داﻟﺔ اﻟﺘﺒﺪﯾﻞ
اﻣﺎ ﻓﻲ ﺑﻘﯿﺔ اﻟﺤﺎﻻت ﻓﻘﺪ ﻛﺎﻧﺖ اﻟﺸﺮوط ﻏﯿﺮ ﻣﺘﺤﻘﻘﺔ وﺑﺎﻟﺘﺎﻟﻲ ﻟﻢ ﯾﺘﻢ اﺳﺘﺪﻋﺎء داﻟﺔ اﻟﺘﺒﺪﯾﻞ وﻋﻠﯿ ﺔ، 25 و58 ﻟﺬﻟﻚ ﺗﻢ اﻟﺘﺒﺪﯾﻞ ﺑﯿﻦ اﻟﻘﯿﻢ،ﻗﺪ ﺗﺤﻘﻖ
: ﻇﮭﺮت ﻟﻨﺎ اﻟﻨﺘﺎﺋﺞ ﻛﻤﺎ ﯾﻠﻲ
25 , 58 , 99
اﻟﺪوال، وﻣﻦ ھﺬه اﻟﺪوال ھﻲ، ﺗﻮﺟﺪ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪوال اﻟﺠﺎھﺰة واﻟﻤﻮﺟﻮدة ﺿﻤﻦ اﻟﻤﻜﺘﺒﺔ اﻟﻘﯿﺎﺳﯿﺔ ﻟﻠﻐﺔC ﻓﻲ ﻟﻐﺔ-: ( اﻟﺪوال اﻟﺮﯾﺎﺿﯿﺔ6.9)
: وﻓﯿﻤﺎ ﯾﻠﻲ ﺑﻌﺾ ھﺬه اﻟﺪوال، math.h اﻟﺮﯾﺎﺿﯿﺔ اﻟﻤﻮﺟﻮدة ﺿﻤﻦ ﻣﻠﻒ اﻟﻌﻨﻮان
-: (6.9.1)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> Enter value : 16
#include <math.h> Sqrt of 16 is 4
main ( ) 16 power 2 is 256
{ Absolute value of 16 is 16
double a ;
printf(" Enter value :") ;
scanf("%f", a );
printf("Sqrt of %d is %d\n" ,a , sqrt(a) ) ;
printf("%d power 2 is %d\n" ,a , pow(a,2) ) ;
printf(Absolute value of %d is %d" ,a ,fabs(a) );
}
-:(6.9.2)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> Enter value : -3.5
#include <math.h> Y= -38.5928
main ( )
{
double x , y ;
printf(" Enter value :");
scanf("%f",&x);
y= fabs(x)+pow(x,3)-5*sin(3*x-2) ;i
printf( " Y=%f " , y );
}
ﻋﻠﻤﺎً أن،x ﻋﻨﺪ اﻟﻌﺪد اﻟﺤﻘﯿﻘﻲf أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﺤﺴﺎب وﻃﺒﺎﻋﺔ ﻗﯿﻤﺔ اﻟﺪاﻟﺔ-:(6.9.3)ﻣﺜﺎل
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> : 1 اﻟﺘﻔﯿﺬ
#include <math.h> Enter real value : 0.7
float f(float x) f(0.7) = 1.4143
{
If(x>= 0)
return( sqrt(3-cos(2*x)) ) ; : 2 اﻟﺘﻨﻔﯿﺬ
else Enter real value : -3.2
return( pow(x,5)-exp(x*x)) ; f(-3.2) = -28694.5654
}
main ( )
{
float x ;
printf(" Enter value :");
scanf("%f",&x);
printf("f(%f)=%f\n",x,f(x) );
}
أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻤﻌﺮﻓﺔ ﻓﯿﻤﺎ أذا ﻛﺎن ﻟﻠﺪاﻟﺔ.f(a)*f(b) <0 [ اذا وﻓﻘﻂ اذا ﻛﺎنa,b] ﺿﻤﻦ اﻟﻔﺘﺮة اﻟﻤﻐﻠﻘﺔf ﯾﻮﺟﺪ ﺟﺬر ﻟﻠﺪاﻟﺔ-: (6.9.4)ﻣﺜﺎل
ﺗﻌﺮﻓﻨﺎ ﺳ ﺎﺑﻘﺎً ﻋﻠ ﻰ اﻟﻤﺘﻐﯿ ﺮات اﻟﻤﺤﻠﯿ ﺔ واﻟﺘ ﻲ ﯾﻌﻠ ﻦ ﻋﻨﮭ ﺎ وﺗﺴ ﺘﺨﺪم داﺧ ﻞ ﺣ ﺪود-: (Global Variables)( اﻟﻤﺘﻐﯿﺮات اﻟﺨﺎرﺟﯿﺔ6.10)
، أﻣﺎ اﻟﻤﺘﻐﯿﺮات اﻟﺨﺮﺟﯿﺔ ﻓﮭﻲ اﻟﺘﻲ ﺗﻜﻮن ﻣﻌﺮوﻓﮫ ﻟﺠﻤﯿﻊ اﻟﺪوال اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﺮﺋﯿﺴ ﻲ.اﻟﺪاﻟﺔ وﻻﻋﻼﻗﺔ ﻟﮭﺎ ﺑﺎﻟﺪوال اﻻﺧﺮى
. وﻻﯾﺠﻮز اﻻﻋﻼن ﻋﻨﮭﺎ أﻛﺜﺮ ﻣﻦ ﻣﺮةmain( ) ﺣﯿﺚ ﯾﺘﻢ اﻻﻋﻼن ﻋﻨﮭﺎ ﺧﺎرج ﻛﻞ اﻟﺪوال وﻗﺒﻞ اﻟﺪاﻟﺔ اﻟﺮﺋﯿﺴﯿﺔ
Program اﻟﺘﻨﻔﯿﺬ
#include <stdio.h> Number of Student : 1
float max , avg ; Enter two numbers : 72 71
char status ; The result : Maximum= 72
main( ) Average = 71.5
{ Status : PASS
int i ;
float t1 , t2 ;
for(i=1 ; i<=5 ; i++) Number of Student : 2
{ Enter two numbers : 45 48
printf( " Number of Student : %d\n" , i ) ; The result : Maximum= 48
printf("Enter two numbers :" ) ; Average = 46.5
scanf("%f%f",&t1,&t2); Status : FAIL
calculate(t1,t2) ;
print_them(t1,t2) ;
} Number of Student : 3
return 0 ; Enter two numbers : 90 86
} The result : Maximum= 90
calculate(m1,m2) Average = 88.0
float m1,m2 Status : PASS
{
if(m1>m2)
max=m1; Number of Student : 4
else Enter two numbers : 50 51
max=m2 ; The result : Maximum= 51
avg==(m1+m2)/2 ; Average = 50.5
if(avg >=50) Status : PASS
status="PASS" ;
else
status="FAIL" ; Number of Student : 5
} Enter two numbers : 25.5 22.5
print_them(n1,n2) The result : Maximum= 25.5
float n1,n2 ; Average = 24.0
{ Status : FAIL
printf(" The result : Maximum=%f\n " ,max);
printf("Average =%f\n" ,avg) ;
printf("Status :%s\n" ,status) ;
}
ﻣ ﻦ اﻟﻨ ﻮع اﻟﺤﺮﻓ ﻲ وذﻟ ﻚ ﻗﺒ ﻞ اﻟﺪاﻟ ﺔ اﻟﺮﺋﯿﺴ ﯿﺔstatus ﻣ ﻦ اﻟﻨ ﻮع اﻟﺤﻘﯿﻘ ﻲ وmax , avg ﻓ ﻲ ھ ﺬا اﻟﺒﺮﻧ ﺎﻣﺞ ﺗ ﻢ اﻻﻋ ﻼن ﻋ ﻦ اﻟﻤﺘﻐﯿ ﺮات اﻟﺨﺎرﺟﯿ ﺔ
. وﺑﺎﻟﺘﺎﻟﻲ ﺟﻤﯿﻊ ھﺬه اﻟﻤﺘﻐﯿﺮات ﺷﺎﻣﻠﺔ وﻣﻌﺮوﻓﺔ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ وﺑﻘﯿﺔ اﻟﺪوال اﻟﻤﺴﺘﺨﺪﻣﺔ ﻣﻦ ﻗﺒﻞ ھﺬا اﻟﺒﺮﻧﺎﻣﺞmain( )
ﺑﯿﻨﻤ ﺎ اﻟﺪاﻟ ﺔ اﻟﺜﺎﻧﯿ ﺔ، ﻟﺤﺴ ﺎب اﻟﺪرﺟ ﺔ اﻻﻛﺒ ﺮ واﻟﻤﻌ ﺪل ﻣ ﻊ اﻟﺤﺎﻟ ﺔcalculate(m1,m2) اﻟﺪاﻟ ﺔ اﻻوﻟ ﻰ،اﻟﺒﺮﻧ ﺎﻣﺞ ﻛﻤ ﺎ ﻧﻼﺣ ﻆ ﻗ ﺎم ﺑﺎﺳ ﺘﺪﻋﺎء داﻟﺘ ﯿﻦ
. ﻓﻘﺪ اﺳﺘﺨﺪﻣﺖ ﻟﻄﺒﺎﻋﺔ اﻟﻨﺘﺎﺋﺞ ﻓﻘﻂprint_them(n1,n2)
) (6.11اﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ ﻟﻨﻔﺴﮭﺎ أو ﻟﺪاﻟﺔ أﺧﺮى -:ﻓﻲ ﻟﻐﺔ Cﯾﻤﻜﻦ اﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ ﻟﻨﻔﺴﮭﺎ أو ﻟﺪاﻟﺔ أﺧﺮى ﻓﻲ ﻧﻔﺲ اﻟﺒﺮﻧﺎﻣﺞ .
ﻣﺜﺎل) -: (6.11.1أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﯾﺴﺘﺨﺪم داﻟﺔ ﻟﺤﺴﺎب ﻣﻀﺮوب اﻟﻌﺪد ). (factorial
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h اﻟﺘﻨﻔﯿﺬ : 1
)long factorial (long a Please type a number: 4
{ 4! = 24
)if (a > 1
; ))return (a * factorial (a-1
else اﻟﺘﻨﻔﯿﺬ : 2
; )return (1 Please type a number: 9
} 9! = 362880
) ( main
{
; long number
; ) " printf("Please type a number:\n
; )scanf("%d",&number
;) )printf( "%d! =%d " ,number ,factorial (number
}
ﻓ ﻲ ھ ﺬا اﻟﺒﺮﻧ ﺎﻣﺞ ﺗ ﻢ اﺳ ﺘﺪﻋﺎء اﻟﺪاﻟ ﺔ ﻟﻨﻔﺴ ﮭﺎ ،ﻓﻼﺣ ﻆ اﻟﻤﻄﻠ ﻮب ﺣﺴ ﺎب ) factorial(aﻟ ﺬﻟﻚ ﻋﻨ ﺪ اﻻﺳ ﺘﺪﻋﺎء اﺻ ﺒﺢ ﻟ ﺪﯾﻨﺎ اﺳ ﺘﺪﻋﺎء اﺧ ﺮ ھ ﻮ
)factorial(4) = 4*factorial(3 ) ، factorial(a-1ﻓﻤﺜﻼً
)= 4*3*factorial(2
)= 4*3*2*factorial(1
= 4*3*2*1
= 24
ﻣﺜﺎل) -: (6.11.2أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﺤﺴﺎب وﻃﺒﺎﻋﺔ اﻟﻤﻀﺎﻋﻒ اﻟﻤﺸﺘﺮك اﻻﺻﻐﺮ) (least common multipleﻟﻌﺪدﯾﻦ ﺻﺤﯿﺤﯿﻦ .
ھﻨﺎك ﻋﺪة ﻃﺮق ﯾﻤﻜﻦ ﻣﻦ ﺧﻼﻟﮭﺎ اﻟﺤﺼﻮل ﻋﻠﻰ اﻟﻘﺎﺳﻢ اﻟﻤﺸﺘﺮك اﻻﻛﺒﺮ GCDوﻣﻨﮭﺎ ھﺬه اﻟﻄﺮﯾﻘﺔ اﻟﺒﺴﯿﻄﺔ :
.iﻧﻘﻮم ﺑﺘﺤﻠﯿﻞ ﻛﻞ ﻋﺪد اﻟﻰ ﻗﻮاﺳﻤﮫ و ﺛﻢ ﻧﺒﺤﺚ ﻋﻦ اﻟﻘﻮاﺳﻢ اﻟﺘﻲ اﺷﺘﺮك ﻓﯿﮭﺎ اﻟﻌﺪدان .
ﻓﻤﺜﻼً :
24=2*2*2*3 اﻟﻌﺪد
28=2*2*7 واﻟﻌﺪد
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h Enter two numbers : 91 169
)least_common_multiple(a,b LCM = 1183
; int a,b GCD = 15
{
; int c,d
; c=a
; d=b
; ) )return( c*d/greatest_common_divisar(a,b
}
)greast_common_divisor(x,y
; int x,y
{
; int temp
)if(x==y
; return x
else
)if(y>x
{
; temp=y
; y=x
; x=temp
}
; ))return( greatest_common_divisor(x-y,y
}
) ( main
{
; int m,n,l,g
;) " printf( " Enter two numbers :
;)scanf("%d%d",&n,&m
; )l=least_common_multiple(m,n
; )g=greatest_common_divisor(m,n
; )printf( " LCM =%d\n ", l
; )printf(" GCD =%d\n" , g
}
ﺧﻼل اﻟﺒﺮﻧﺎﻣﺞ اﻋﻼه ،ﺗﻢ ﺗﻌﺮﯾﻒ داﻟﺔ اﻟﻤﻀﺎﻋﻒ اﻟﻤﺸﺘﺮك اﻻﺻﻐﺮ ﻟﻠﻌﺪدﯾﻦ اﻟﺼﺤﯿﺤﯿﻦ ، a,bواﻟﺘﻲ ﺧﻼﻟﮭﺎ ﺗﻢ اﺳﺘﺪﻋﺎء داﻟﺔ اﻟﻘﺎﺳ ﻢ اﻟﻤﺸ ﺘﺮك اﻻﻛﺒ ﺮ
ﻟﻠﻌﺪﯾﻦ اﻟﺼﺤﯿﺤﯿﻦ a,bواﻟﺘﻲ ﺗﻢ ﺗﻌﺮﯾﻔﮭﺎ ﻛﺪاﻟﺔ ﺛﺎﻧﯿﺔ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ .ﺑﻌﺪھﺎ ﺗﻢ ادﺧﺎل ﻗﯿﻢ ﻟﻠﻤﺘﻐﯿ ﺮات m,nﺧ ﻼل اﻟﺒﺮﻧ ﺎﻣﺞ ﺣﯿ ﺚ اﻋﻄﯿ ﺖ
ھﺬه اﻟﻘﯿﻢ اﻟﻰ اﻟﻤﺘﻐﯿﺮات a,bﻟﺤﺴﺎب اﻟﻘﺎﺳﻢ اﻟﻤﺸﺘﺮك اﻻﻛﺒﺮ واﻟﻤﻀﺎﻋﻒ اﻟﻤﺸﺘﺮك اﻻﺻﻐﺮ.
وﻟﻜﻦ ﯾﺠﺐ أن ﻧﺄﺧﺬ ﻓﻲ اﻻﻋﺘﺒﺎر ﻛﯿﻔﯿﺔ ﺗﻤﺮﯾﺮ ﻋﻨﺎﺻﺮ اﻟﻤﺼﻔﻮﻓﺔ اﻟﻰ أي داﻟﺔ ،وھﺬا ﻗﺪ ﯾﺤﺪث ﻛﺎﻻﺗﻲ :
.iﯾﻤﻜﻦ أن ﺗﺘﻢ ﻋﻤﻠﯿﺔ ﺗﻤﺮﯾﺮ اﻟﺒﯿﺎﻧﺎت اﻟﻰ اﻟﺪوال ﺑﺄﺳﺘﺨﺪام اﻟﻤﺘﻐﯿﺮات اﻟﺨﺎرﺟﯿﺔ.
.iiﻗﺪ ﯾﺤﺪث اﻟﺘﻤﺮﯾﺮ ﺑﺎﻻﻋﻼن ﻋﻦ اﻟﻤﺼﻔﻮﻓﺔ ﻓﻲ اﻟﺪاﻟﺔ ﺑﺤﯿﺚ ﺗﻜﻮن ﻣﻦ ﻧﻔﺲ اﻟﻨﻮع واﻟﻄﻮل.
ﻣﺜﺎل) -: (6.12.1أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة ﻗﯿﻢ ﺻﺤﯿﺤﺔ وﺗﺨﺰﯾﻨﮭﺎ ﻓﻲ ﻣﺼﻔﻮﻓﺔ aذات ﺑﻌﺪ واﺣﺪ ﺛﻢ ﺗﺨﺰﯾﻦ ھﺬه اﻟﺒﯿﺎﻧﺎت ﺑﺎﻟﻌﻜﺲ ﻓﻲ ﻣﺼﻔﻮﻓﺔ bﻋﻦ
ﻃﺮﯾﻖ اﻟﺪاﻟﺔ.
Program اﻟﺘﻨﻔﯿﺬ
>#include <stdio.h Enter a[0]= 7
#define M 5 Enter a[1]= -3
; ]int i , k, a[M] , b[M Enter a[2]= 8
) ( int main Enter a[3]= 4
{ Enter a[4]= 2
)for(i=0 ; i< M ; i++ Array after reversed is :
{ b[0]= 2
; )printf (" Enter a[%d]= ",i b[1]= 4
; )]scanf ("%d",&a[i b[2]= 8
} b[3]= -3
; ) (reversed_a b[4]= 7
; "printf ("Array after reversed is : \n
)for(i=0 ; i< M ; i++
; )]printf (" b[%d]=%d",i,b[i
; )"printf ("\n
; return 0
}
) (reversed_a
{
; k=M-1
)for(i=0 ; i< M ; i++
{
; ]b[i]=a[k
; k-=1
}
}
ﺗﻤﺮﯾﻦ : 1أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة اﻃﻮال ﻣﺜﻠﺚ A,B,Cﺛﻢ أﺣﺴﺐ ﻣﺴﺎﺣﺔ ھﺬا اﻟﻤﺜﻠﺚ ﻋﻦ ﻃﺮﯾﻖ اﻟﺪاﻟﺔ ،ﻋﻠﻤﺎً أن
ﺗﻤﺮﯾﻦ : 2أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﺪاﻟﺔ ﻣﮭﻤﺘﮭﺎ اﯾﺠﺎد وﻃﺒﺎﻋﺔ ﺟﻤﯿﻊ اﻻﻋﺪاد اﻻوﻟﯿﺔ اﻟﻮاﻗﻌﺔ ﺑﯿﻦ 20و . 500
ﺗﻤﺮﯾﻦ : 3ﺳﻠﺴﻠﺔ ﻓﯿﺒﻮﻧﺎﺷﻲ Fibonacci Seriesوھﻲ ﻋﺒﺎرة ﻋﻦ ﺳﻠﺴﻠﺔ أرﻗﺎم ﯾﻜﻮن ﻓﯿﮭﺎ اﻟﺮﻗﻤﯿﻦ اﻻول واﻟﺜﺎﻧﻲ ﯾﺴﺎوي 1واﻻرﻗﺎم اﻟﺜﺎﻟﺚ
وﻣﺎﻓﻮق ﻛﻞ رﻗﻢ ﻣﻨﮭﺎ ﯾﺴﺎوي ﻣﺠﻤﻮع اﻟﺮﻗﻤﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ﻟﮫ .
… 1 1 2 3 5 8 13 21 33
ﺗﻤﺮﯾﻦ : 4اﻟﻤﻄﻠﻮب ﻛﺘﺎﺑﺔ ﺑﺮﻧﺎﻣﺠﺎً ﻟﺤﺴﺎب ﻣﻌﺪل Nﻣﻦ اﻟﻘﯿﻢ اﻟﺼﺤﯿﺤﺔ ﻋﻠﻰ أن ﯾﺘﻢ ﺣﺴﺎب اﻟﻤﻌﺪل ﻓﻲ داﻟﺔ ﻣﺴﺘﻘﻠﺔ.
ﺗﻤﺮﯾﻦ : 6أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻻدﺧﺎل رﻗﻢ اﻟﻤﻮﻇﻒ وأﺳﻤﺔ و راﺗﺒﺔ اﻟﺸ ﮭﺮي وﻋ ﺪد ﺳ ﺎﻋﺎت اﻟﻌﻤ ﻞ اﻻﺿ ﺎﻓﻲ اﻟﺘ ﻲ ﻋﻤﻠﮭ ﺎ ،ﺛ ﻢ ﺣﺴ ﺎب اﻟﺮاﺗ ﺐ اﻟﺼ ﺎﻓﻲ
ﻟﻌﺪد Nﻣﻦ اﻟﻤﻮﻇﻔﯿﻦ ﻓﻲ ﻣﺆﺳﺴﺔ ﻣﺎ ،ﻋﻠﻤﺎً أن اﻟﺮاﺗﺐ اﻟﺼﺎﻓﻲ ﻟﻠﻤﻮﻇﻒ = اﻟﺮاﺗﺐ اﻟﺸﮭﺮي +ﻣﺒﻠﻎ اﻟﻌﻤﻞ اﻻﺿ ﺎﻓﻲ .ﻣﺒﻠ ﻎ اﻟﻌﻤ ﻞ اﻻﺿ ﺎﻓﻲ ﯾﺤﺴ ﺐ
ﻋﻦ ﻃﺮﯾﻖ اﻟﺠﺪول اﻻﺗﻲ :
اﻟﺮاﺗﺐ اﻟﺼﺎﻓﻲ أﺟﺮة اﻟﺴﺎﻋﺔ اﻟﻮاﺣﺪة اﻟﺴﺎﻋﺎت اﻻﺿﺎﻓﯿﺔ أﺳﻢ اﻟﻤﻮﻇﻒ رﻗﻢ اﻟﻤﻮﻇﻒ
ﺗﻤﺮﯾﻦ -: 7أﻛﺘﺐ ﺑﺮﻧﺎﻣﺠﺎً ﻟﻘﺮاءة اﻟﻤﺼﻔﻮﻓﺔ ) A(25,25اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ ﻗﯿﻢ ﺣﻘﯿﻘﯿﺔ،ﺛﻢ ﻛﺘﺎﺑﺔ داﻟﺔ ﻟﻌﻤﻞ ﻛﻞ ﻣﻤﺎ ﯾﺎﺗﻲ :