C language
- 1. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
C ﻣﻘﺪﻣﺔ ﻋﺎﻣﺔ ﻋﻠﻰ ﻟﻐﺔ
* ﻣﻤﯿﺰات ﻟﻐﺔ - : Cﺘﺘﻤﻴﺯ ﻟﻐﺔ Cﺒﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﻤﺯﺍﻴﺎ ﻤﺜل :-
- ﻟﻐﺔ ﻋﺎﻤﻪ : ﺃﻯ ﺘﺼﻠﺢ ﻟﻌﻤل ﺒﺭﺍﻤﺞ ﻗﻭﺍﻋﺩ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﺍﻟﺭﺴﻭﻤﺎﺕ ﻭﺍﻟﺤﺴﺎﺒﺎﺕ ﻭﻨﻅﻡ ﺍﻟﺘﺸﻐﻴل .
- ﻟﻐﺔ ﺘﺭﻜﻴﺒﻴﺔ : Structured Languageﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ Cﻋﺒﺎﺭﺓ ﻋﻥ ﺩﺍﻟﺔ ﺭﺌﻴﺴﻴﺔ ﺘﻨـﺎﺩﻯ
ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺩﻭﺍل ﺍﻷﺨﺭﻯ . ﻭﻜل ﺩﺍﻟﻪ ﻤﺠﻤﻭﻋﻪ ﻤﻥ ﺍﻷﻭﺍﻤﺭ .
- ﺘﺘﻌﺎﻤل ﻋﻠﻰ ﻤﺴﺘﻭﻯ ) ﺍﻟﺒﺕ ( - : Bit manipulationﺤﻴﺙ ﺘﺴﺘﻁﻴﻊ ﺃﻥ ﺘﻘﺭﺃ ﻭﺘﻜﺘﺏ ﻭﺘﻐﻴﺭ ﻭﺘﻘﻭﻡ
ﺒﻌﻤﻠﻴﺎﺕ ﻋﻠﻰ ﻤﺴﺘﻭﻯ ﺍﻟـ . Bitﺤﻴﺙ ﺃﻥ Bitﻫﻰ ﺍﺼﻐﺭ ﻭﺤﺩﺓ ﻟﻘﻴﺎﺱ ﺍﻟﻤﻌﻠﻭﻤﺎﺕ ﺩﺍﺨل ﺍﻟﻜﻤﺒﻴـﻭﺘﺭ
ﻭﻫﻰ ﺠﺯﺀ ﻤﻥ ﺜﻤﺎﻨﻴﺔ ﺃﺠﺯﺍﺀ ﺘﻌﺎﺩل ﻓﻰ ﻤﺠﻤﻭﻋﻬﺎ ﺤﺭﻑ ﻭﺍﺤﺩ . byte
- ﻟﻐﺔ ﻤﺘﻨﻘﻠـﺔ : Portableﺃﻯ ﻴﻤﻜﻥ ﻟﻠﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ Cﺃﻥ ﻴﻌﻤل ﻤﻊ ﺃﻜﺜﺭ ﻤﻥ ﺠﻬـﺎﺯ ﻤﺜـ ﻟ
IBMﻭ . Apple
- ﻟﻐﺔ ﺴﺭﻴﻌﺔ : - ﻷﻥ ﺃﺩﻭﺍﺕ ﺍﻟﻠﻐﺔ ﺘﺘﻌﺎﻤل ﻤﻊ ﺍﻵﻟﺔ ﻤﻤﺎ ﻴﺨﺘﺼﺭ ﻭﻗﺕ ﺍﻟﺘﻨﻔﻴﺫ .
ANSI - ﻟﻐﺔ ﻗﻴﺎﺴﻴﺔ : ﻤﻌﻅﻡ ﻤﺘﺭﺠﻤﺎﺕ ﺍﻟﻠﻐﺔ ﺘﺘﻭﺍﻓﻕ ﻤﻊ ﺍﻟﻠﻐﺔ ﺍﻟﻘﻴﺎﺴﻴﺔ C
The Basic Structure of c Program
ﻗﻮاﻋﺪ ﺑﻨﺎء اﻟﺒﺮﻧﺎﻣﺞ
- ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺘﺎﻟﻰ ﻴﻤﺜل ﺃﺒﺴﻁ ﺘﺭﻜﻴﺏ ﻟﺒﺭﻨﺎﻤﺞ ﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ C
> # include < stdio .h
) ( main
{
; ) " printf ( " hello egypt
}
ﻣﻼﺣﻈﺎت ﻫﺎﻣﺔ
- ﻴﺒﺩﺃ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺎﻟﻌﺒﺎﺭﺓ > # include < ……hﻭﺒﻴﻥ ﺍﻟﻌﻼﻤﺘﻴﻥ ﺍﺴﻡ ﻤﻠﻑ ﺍﻟﺘﻭﺠﻴﻪ ﺍﻟﺨﺎﺹ ﺒﺎﻟـﺩﻭﺍل
ﺍﻟﻤﺴﺘﺨﺩﻤﺔ ﻓﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ – ﻴﻤﻜﻥ ﻜﺘﺎﺒﺔ ﺃﻜﺜﺭ ﻤﻥ . include
- ﻴﺘﻜﻭﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻤﻥ ﺩﺍﻟﺔ ﺭﺌﻴﺴﻴﺔ ) ( mainﻭﺘﺒﺩﺃ ﺒﺎﻟﻘﻭﺱ { ﻭﺘﻨﺘﻬﻲ ﺒﺎﻟﻘﻭﺱ } .
- ﺠﻤﻴﻊ ﻜﻠﻤﺎﺕ ﻭﺩﻭﺍل ﺍﻟﻠﻐﺔ ﺘﻜﺘﺏ ﺒﺎﻟﺤﺭﻭﻑ ﺍﻟﺼﻐﻴﺭﺓ .
- ﺘﻨﺘﻬﻲ ﻜل ﻋﺒﺎﺭﺓ ﺒﻔﺎﺼﻠﻪ ﻤﻨﻘﻭﻁﺔ ) ; (
- ﻴﺠﻭﺯ ﻜﺘﺎﺒﺔ ﺃﻯ ﻤﻼﺤﻅﺎﺕ ﺃﻭ ﺘﻌﻠﻴﻘﺎﺕ ﺨﺎﺼﺔ ﺒﺎﻟﺒﺭﻨﺎﻤﺞ ﺒﻭﺼﻔﻬﺎ ﺒﻴﻥ ﺍﻟﻌﻼﻤﻴﻥ /* */ ﻷﻯ ﻋﺩﺩ ﻤـﻥ
ﺍﻟﺴﻁﻭﺭ
∴ ﺠﺴﻡ ﺍﻟﺩﺍﻟﺔ ﻴﻭﻀﻊ ﻤﺎ ﺒﻴﻥ ﺍﻷﻗﻭﺍﺱ } {
١ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 2. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
Data Type أﻧﻮاع اﻟﺒﯿﺎﻧﺎت
* ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺘﺘﻌﺎﻤل ﻤﻌﻬﺎ ﺇﻤﺎ ﺃﺭﻗﺎﻡ ﺃﻭ ﺤﺭﻭﻑ ﺃﻭ ﻜﻠﻤﺎﺕ :-
- ﻭﺍﻷﺭﻗﺎﻡ ﻴﻤﻜﻥ ﺃﻥ ﺘﻜﻭﻥ ﺼﺤﻴﺤﻪ ) ﺃﻯ ﻟﻴﺱ ﺒﻬﺎ ﻋﻼﻤﺔ ﻋﺸﺭﻴﺔ ( integerﺃﻭ ﺤﻘﻴﻘﻴﺔ ) ﺃﻯ ﺒﻬﺎ ﻋﻼﻤﺔ
ﻋﺸﺭﻴﺔ( . float
- ﻭﺍﻟﺤﺭﻭﻑ ﻴﻤﻜﻥ ﺃﻥ ﺘﻜﻭﻥ ﺤﺭﻑ ﻭﺍﺤﺩ ﺃﻭ ﺃﻜﺜﺭ ﻤﻥ ﺤﺭﻑ
* اﻟﺠﺪول اﻟﺘﺎﻟﻰ ﯾﻮﺿﺢ ﻫﺬه اﻷﻧﻮاع وﻛﺬﻟﻚ ﻋﺪد اﻟﺒﺎﯾﺖ byteاﻟﺘﻰ ﯾﺸﻐﻠﻬﺎ :-
ﺎﻟﻤﺪى اﻟﻤﺴﻤﻮﺣ ﻃﻮﻟﻪ ﺑﺎﻟﺒﺎﯾﺖ ﻧﻮع اﻟﻤﺘﻐﯿﺮ
ﺤﺭﻑ ﺃﻭ ﺭﻤﺯ ﻭﺍﺤﺩ 1 ﺤﺭﻑ ) ( char
-٨٦٧٢٣ ﺇﻟﻰ ٨٦٧٢٣ 2 ﺼﺤﻴﺢ ﻗﺼﻴﺭ ) ( int
-٨٤٦٠٣٨٤٠٧٤١٠٢ﺇﻟــــــــــــﻰ 4 ﺼﺤﻴﺢ ﻁﻭﻴل ) ( long
٨٤٦٠٣٨٤٠٧٤١٠٢
83 - eﺇﻟﻰ 83 + e 4 ﺤﻘﻴﻘﻰ ) ( float
803- eﺇﻟﻰ 803+e 8 ﺤﻘﻴﻘﻰ ﻤﻀﺎﻋﻑ ) ( double
وﻓﯿﻤﺎ ﯾﻠﻰ اﻟﻤﻘﺼﻮد ﺑﻜﻞ ﻫﺬه اﻷﻧﻮاع : -
- ﻤﺘﻐﻴﺭ ﻤﻥ ﻨﻭﻉ ﺤﺭﻑ : ﺃﻯ ﻤﺘﻐﻴﺭ ﻴﺼﻠﺢ ﻟﺘﺨﺯﻴﻥ ﺤﺭﻑ ﻓﻘﻁ .
- ﻤﺘﻐﻴﺭ ﻤﻥ ﻨﻭﻉ ﺼﺤﻴﺢ : ﺃﻯ ﻤﺘﻐﻴﺭ ﻴﺼﻠﺢ ﻟﺘﺨﺯﻴﻥ ﺭﻗﻡ ﺼﺤﻴﺢ ) ﻟﻴﺱ ﺒﻪ ﻋﻼﻤﺔ ﻋﺸﺭﻴﺔ ( .
- ﻤﺘﻐﻴﺭ ﻤﻥ ﻨﻭﻉ ﺼﺤﻴﺢ ﻭﻟﻜﻥ ﻁﻭﻴل) : (Longﺃﻯ ﻴﺴﺘﻁﻴﻊ ﺃﻯ ﻴﺨﺯﻥ ﺭﻗﻡ ﺼﺤﻴﺢ ﻀﻌﻑ ﺍﻟﻤﺘﻐﻴـﺭ
ﺍﻟﺼﺤﻴﺢ ﺍﻟﻌﺎﺩﻯ ﻭﻴﺴﺘﻌﻤل ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﺇﺫﺍ ﻜﺎﻨﺕ ﺍﻷﺭﻗﺎﻡ ﺍﻟﺘﻰ ﺘﺘﻌﺎﻤل ﻤﻌﻬﺎ ﺃﻜﺒﺭ ﻤﻥ ﺍﻟﻤﺴﺎﺤﺔ ﺍﻟﻤﺨﺼﺼﺔ
ﻭﺇﻻ ﺴﻨﺤﺼل ﻋﻠﻰ ﻨﺘﺎﺌﺞ ﺨﺎﻁﺌﺔ ﺒﺎﻟﺭﻏﻡ ﻤﻥ ﺇﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺴﻠﻴﻡ
- ﻤﺘﻐﻴﺭ ﺤﻘﻴﻘﻰ : ﺃﻯ ﻤﺘﻐﻴﺭ ﻴﺼﻠﺢ ﻟﺘﺨﺯﻴﻥ ﺭﻗﻡ ﺤﻘﻴﻘﻰ ﻴﻘﺒل ﺍﻟﻜﺴﻭﺭ ﺍﻟﻌﺸﺭﻴﺔ ﻤﺜل 33. 5
- ﻤﺘﻐﻴﺭ ﺤﻘﻴﻘﻰ ﻤﻀﺎﻋﻑ : ﺃﻯ ﻴﺴﺘﻁﻴﻊ ﺃﻥ ﻴﺨﺯﻥ ﺭﻗﻡ ﺤﻘﻴﻘﻰ ﻀﻌﻑ ﺍﻟﻤﺘﻐﻴﺭ ﺍﻟﺤﻘﻴﻘﻰ ﺍﻟﻌﺎﺩﻯ .
* ﺗﺴﻤﯿﺘﻪ اﻟﻤﺘﻐﯿﺮ : - ﻴﺨﻀﻊ ﺍﺴﻡ ﺍﻟﻤﺘﻐﻴﺭ ﻟﺸﺭﻭﻁ ﻤﻌﻴﻨﻪ :-
ﻴﺠﺏ ﺃﻥ ﻴﺒﺩﺃ ﺍﻟﻤﺘﻐﻴﺭ ﺒﺤﺭﻑ ﺜﻡ ﻴﻜﻤل ﺍﻟﻤﺘﻐﻴﺭ ﺒﻌﺩ ﺫﻟﻙ ﺤﺭﻭﻑ ﺃﻭ ﺃﺭﻗﺎﻡ . -
HPﻴﺨﺘﻠﻑ ﻋـﻥ ﺍﻟﻤﺘﻐﻴـﺭ hpﻓـﺈﺫﺍ ﻴﻔﺭﻕ ﺍﻟﻤﺘﺭﺠﻡ ﺒﻴﻥ ﺍﻟﺤﺭﻭﻑ ﺍﻟﺼﻐﻴﺭﺓ ﻭﺍﻟﻜﺒﻴﺭﺓ ﻓﺎﻟﻤﺘﻐﻴﺭ -
ﺍﺴﺘﻌﻤﻼ ﻓﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻴﻌﺘﺒﺭﻫﻤﺎ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻤﺘﻐﻴﺭﻴﻥ
ﻴﺠﺏ ﺃﻻ ﻴﻜﻭﻥ ﺍﻟﻤﺘﻐﻴﺭ ﺒﺈﺴﻡ ﻜﻠﻤﻪ ﻤﻥ ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﻤﺤﺠﻭﺯﺓ . -
* اﻷﻋﻼن ﻋﻦ اﻟﻤﺘﻐﯿﺮات : -
- ﻓﻰ ﻟﻐﺔ ﺍﻟـ Cﻻﺒﺩ ﺍﻹﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ Variablesﻓﻰ ﺒﺩﺍﻴﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺇﻤـﺎ ﺇﺫﺍ ﻜﻨـﺕ ﺘﺴـﺘﺨﺩﻡ
ﻤﺘﺭﺠﻡ ﻟﻐﺔ ++ Cﻴﺘﻡ ﺍﻹﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻓﻰ ﺇﻯ ﻤﻜﺎﻥ ﺒﺎﻟﺒﺭﻨﺎﻤﺞ
; int a
; float
* اﻟﻤﺆﺛﺮات operators
٢ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 3. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
ﺍﻟﻤﺅﺜﺭﺍﺕ ﻫﻰ ﺍﻟﺭﻤﻭﺯ ﺍﻟﺘﻰ ﺘﺭﺒﻁ ﺒﻴﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻭﺍﻟﺜﻭﺍﺒﺕ ﻹﻨﺸﺎﺀ ﻋﻼﻤﺔ ﺃﻭ ﻤﻌﺎﺩﻟﺔ ﺘﺨﺘﻠﻑ ﺃﻨﻭﺍﻉ ﺍﻟﻤﺅﺜﺭﺍﺕ
ﺒﺎﺨﺘﻼﻑ ﻭﻅﻴﻔﺔ ﻜل ﻤﺅﺜﺭ .
١- ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ arithmetic operators
addition ﻋﻼﻤﺎﺕ ﺍﻟﺠﻤﻊ +
Subtraction ﻋﻼﻤﺎﺕ ﺍﻟﻁﺭﺡ -
multiplication ﻋﻼﻤﺎﺕ ﺍﻟﻀﺭﺏ *
division ﻋﻼﻤﺎﺕ ﺍﻟﻘﺴﻤﺔ /
ﻭﺘﺴﺘﺨﺩﻡ ﻤﻊ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻭﺍﻟﺜﻭﺍﺒﺕ ﺍﻟﺭﻗﻤﻴﺔ
٢- ﻤﺅﺜﺭﺍﺕ ﺍﻟﻤﻘﺎﺭﻨﺔ -:Relational operatorsﻭﺘﺴﺘﺨﺩﻡ ﻟﻤﻘﺎﺭﻨﺔ ﻗﻴﻤﺘﻴﻥ :
ﺎﻟﻨﺘﯿﺠﺔ ﻣﺜﺎ ﻟ ﺎﻟﺮﻣﺰ ﺎﻟﻤﺆﺛﺮ
1 8>01 > ﺃﻜﺒﺭ ﻤﻥ greater than
٠ 8<01 < ﺃﺼﻔﺭ ﻤﻥ less than
0 ٨==٠١ == ﻴﺴﺎﻭﻯ equal to
1 ٨=!٠١ =! ﻻ ﻴﺴﺎﻭﻯ not equal to
0 8 = < ٠١ =< ﺃﻗل ﻤﻥ ﺃﻭ ﻴﺴﺎﻭﻯ less than or equal to
٠ 8 = > 01 => ﺃﻜﺒﺭ ﻤﻥ ﺃﻭ ﻴﺴﺎﻭﻯ greater than or equal to
٣- ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﻤﻨﻁﻘﻴﺔ Logical operator
ﺎﻟﻨﺘﯿﺠﺔ ﻣﺜﺎ ﻟ ﺎﻟﺮﻣﺰ ﺎﻟﻤﺆﺛﺮ
1 7 > 9 && 8 > 01 && ﻭ AND
١ 8 < 7 || 8 < 0 1 || ﺃﻭ OR
1 ) 8 = = 01( ! ! ﻻ NOT
٤- ﻤﺅﺜﺭﺍﺕ ﺍﻟﺘﺨﺼﻴﺹ Assignment Operators
ﻭﻫﻰ ﻤﺅﺜﺭﺍﺕ ﺘﺨﺯﻴﻥ ﻗﻴﻤﺔ ﻓﻰ ﻤﺘﻐﻴﺭ ﻓﻤﺜﻼ ﺇﺫﺍ ﻜﺎﻨﺕ ﻗﻴﻤﺔ ٦ = ٩
اﻟﻤﺆﺛﺮ اﻟﻨﺘﯿﺠﺔ اﻟﻄﺮﯾﻘﺔ اﻟﺤﺪﯾﺜﺔ اﻟﺘﺨﺼﯿﺺ اﻟﺘﻘﻠﯿﺪى
+ = addition assignment operators 11 5=+A 5+ A = a
Subtraition assignment opertors 1 5=-A 5–A=a
Multipication assibnment operators 03 5=*A 5+A=a
Division assignment operators 2 3=/A 3/A=a
٥- ﻤﺅﺜﺭﺍﺕ ﺍﻟﺯﻴﺎﺩﺓ ﻭﺍﻟﻨﻘﺼﺎﻥ Decrement &increment
٣ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 4. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
ﻤﺅﺜﺭ ﺯﻴﺎﺩﺓ ﻭﺍﺤﺩ 7 ++ A 1+A=a
ﻤﺅﺜﺭ ﻨﻘﺼﺎﻥ ﻭﺍﺤﺩ 5 -- A 1–A=a
٦- ﻤﺅﺜﺭ ﺒﺎﻗﻰ ﺨﺎﺭﺝ ﺍﻟﻘﺴﻤﺔ %
ﻴﺴﺘﺨﺩﻡ ﻟﻤﻌﺭﻓﺔ ﺒﺎﻗﻰ ﺍﻟﻘﺴﻤﻪ ) ﻟﺘﺤﺩﻴﺩ ﻫل ﺍﻷﺭﻗﺎﻡ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻰ ﺍﻟﻤﺘﻐﻴﺭ ﺯﻭﺠﻴﺔ ﺃﻭ ﻓﺭﺩﻴﺔ ﻓﻤﺜﻼ ﺇﺫﺍ ﻜﺎﻨـﺕ
ﻗﻴﻤﺔ 5 = aﻭﻜﺘﺏ 2 % C = aﻴﻜﻭﻥ ﺒﺎﻗﻰ ﺍﻟﺭﻗﻡ 2 / 5 = 1
دوال اﻹدﺧﺎل واﻹﺧﺮاج
* داﻟﺔ اﻟﻄﺒﺎﻋﺔ ﻋﻠﻰ اﻟﺸﺎﺷﺔ )(* printf
ﻤﻼﺤﻅﺎﺕ ﻫﺎﻤﻪ : ﻜل ﺩﺍﻟﺔ ﻤﺭﺘﺒﻁﺔ ﺒﻤﻠﻑ ﺘﻭﺠﻴﻪ ﻤﻌﻴﻥ ﺤﻴﺙ ﻴﺴﺘﺩﻋﻰ ﻫﺫﺍ ﺍﻟﻤﻠـﻑ ﻓـﻰ ﺃﻭل
ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺎﻟﻌﺒﺎﺭﺓ # includeﻓﻤﺜﻼ ﺍﻟﺩﺍﻟﺔ )( printfﻤﻌﺭﻓﺔ ﺒﺎﻟﻤﻠﻑ stdio.hﻭﺘﻜﺘﺏ ﺍﻟﻌﺒﺎﺭﺓ #
> include < stdio.hﻓﻰ ﺃﻭل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺤﺘﻰ ﻴﺘﻌﺭﻑ ﺍﻟﻤﺘﺭﺠﻡ ﻋﻠﻰ ﺍﻟﺩﺍﻟﺔ ﻭﻫﻜﺫﺍ ﻤـﻊ ﺒـﺎﻗﻰ
ﺍﻟﺩﻭﺍل
- ﺘﺴﺘﺨﺩﻡ ﺩﺍﻟﺔ ﺍﻟﻁﺒﺎﻋﺔ ) ( printfﻟﻁﺒﺎﻋﺔ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺠﻤﻴﻊ ﺃﻨﻭﺍﻋﻬﺎ
) ( String , char , float , intﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ ﻓﻘﻁ .
ﻭﻨﺄﺨﺫ ﺩﺍﻟﺔ ﺍﻟﻁﺒﺎﻋﺔ ﻋﺩﺓ ﺼﻭﺭ ﻭﻜﺫﻟﻙ ﻤﻌﺎﻤﻼﺕ ﻭﺃﻜﻭﺍﺩ ﺘﺤﺩﺩ ﺸﻜل ﺍﻟﻤﺨﺭﺠﺎﺕ -
ﻤ ﺜ ﺎل ١
) " printf ( " welcome with compuscience
ﻫﻨﺎ ﻴﺘﻡ ﻁﺒﺎﻋﺔ ﻤﺎ ﺒﻴﻥ ﻋﻼﻤﺘﻰ ﺍﻟﺘﻨﺼﻴﺹ " "
ﻤﺜ ﺎ ل ٢
; ) " printf ( " n welcome n with n compuscience
ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﺜﺎل : ﺍﻟﻜﻭﺩ ٠٠١ ﻤﻌﻨﺎﻩ new lineﺃﻯ ﺴﻁﺭ ﺠﺩﻴﺩ ﻭﻋﻨﺩﻤﺎ ﻴﺠﺩ ﺍﻟﻤﺘﺭﺠﻡ ٠٠١ ﻴﺘﺭﺠﻤﻬﺎ ﺇﻟـﻰ
ﺴﻁﺭ ﺠﺩﻴﺩ ﻭﻴﻜﻭﻥ ﺍﻟﻨﺎﺘﺞ
welcome
with
compusciene
ﻭﻓﻴﻤﺎ ﻴﻠﻰ ﺍﻻﻜﻭﺍﺩ ﺍﻟﻤﺴﺘﺨﺩﻤﺔ ﻤﻊ ﺍﻟﺩﺍﻟﺔ ) (printf
ﺎﻟﻤﺜﺎ ﻟ ﺎﻻﺳﺘﺨﺪام اﻟﻜﻮد
٤ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 5. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
) “ printf ( " n ﺍﻻﻨﺘﻘﺎل ﺍﻟﺴﻁﺭ ﺍﻟﺠﺩﻴﺩ new line n
) “ print f ( " t ﻨﻘل ﺍﻟﻤﺅﺸﺭ ﺒﻌﺩ ٨ ﻤﺴﺎﻓﺎﺕ ) ( Tap t
) " print f ( " b ﺇﺭﺠﺎﻉ ﺍﻟﻤﺅﺸﺭ ﻤﺴﺎﻓﺔ ﺨﻠﻔﻴﺔ Backspace b
aﻭﺍﻟﻨﺘﻴﺠﺔ : ) " 14printf ( “ x ﻁﺒﺎﻋﺔ ﺍﻟﺤﺭﻑ ﺍﻟﻤﻨﺎﻅﺭ ﻟﻠﻜﻭﺩ ﺍﻟﻤﻜﺘﻭﺏ ﺒﺎﻟﻨﻅﺎﻡ ﺍﻟﺴﺎﺩﺱ ﻋﺸـﺭ xdd
hexadecimal
aﺍﻟﻨﺘﻴﺠﺔ : ) ”101 " ( printf ﻁﺒﺎﻋﺔ ﺍﻟﺤﺭﻑ ﺍﻟﻤﻨﺎﻅﺭ ﻟﻠﻜﻭﺩ ﺍﻟﻤﻜﺘﻭﺏ ﺒﺎﻟﻨﻅﺎﻡ ﺍﻟﺜﻤﺎﻨﻰ octol ddd
) ( each d represents a digit
) "" " ( printf ﻁﺒﺎﻋﺔ ﻋﻼﻤﺔ ﺍﻟﺘﻨﺼﻴﺹ double quate ”
) “ printf ( " a ﺇﺨﺭﺍﺝ ﺼﻭﺕ ﺍﻟﺼﺎﻓﺭﺓ ) ﻴﺒﺏ ( a
* ﺃﻭﺠﺩ ﻨﺎﺘﺞ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺘﺎﻟﻰ :
/ * 1 / * program name
> # include < stdio.h
) ( main
{
; ) “ printf ( " n this text display in new line
; ) “ 2printf ( " n word1 t lab1 t tab
; ) “ printf ( " n bell a bell b
; ) “ “ printf ( " n this line display quotations
; ) “ printf ( " n
}
* ﻁﺒﺎﻋﺔ ﻗﻴﻡ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ : ﻟﻁﺒﺎﻋﺔ ﺍﻟﻘﻴﻡ ﺍﻟﻤﻭﺠﻭﺩﺓ ﺒﺎﻟﻤﺘﻐﻴﺭﺍﺕ ﺘﺴﺘﺨﺩﻡ ﺃﻜﻭﺍﺩ ﻤﻌﻴﻨﺔ ﻟﺘﺤﺩﺩ ﻨﻭﻉ
ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﻤﺭﺍﺩ ﻁﺒﺎﻋﺘﻬﺎ ﺒﺎﻟﺩﺍﻟﺔ )( print f
ﻤ ﺜ ﺎل
; ) printf ( " % d “ , a
; ) printf ( " % f “ , b
- ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﺜﺎل ﻋﻨﺩﻤﺎ ﻴﻘﺎﺒل ﻤﺘﺭﺠﻡ ﺍﻟﻠﻐﺔ ﺍﻟﻌﻼﻤﺔ % ﻴﻨﻅﺭ ﺇﻟﻰ ﺍﻟﺤﺭﻑ ﺍﻟﺘﺎﻟﻰ ﻟﻬﺫﻩ ﺍﻟﻌﻼﻤﺔ . ﻭﻴﻌﺘﺒـﺭ
ﻫﺫﺍ ﺍﻟﺤﺭﻑ ﺘﻭﺼﻴﻑ ﻟﻘﻴﻤﺔ ﻤﻭﺠﻭﺩﺓ ﺒﻌﺩ ﺍﻟﻌﻼﻤﺔ ﻭﻜل ﺤﺭﻑ ﻴﺤﺩﺩ ﺘﻨﻭﻉ ﻤﻌﻴﻥ ﻤﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ .
ﻭﺍﻟﺠﺩﻭل ﺍﻟﺘﺎﻟﻰ ﻴﻭﻀﺢ ﺃﻜﻭﺍﺩ ﻁﺒﺎﻋﺔ ﺃﻨﻭﺍﻉ ﺍﻟﺒﻴﺎﻨﺎﺕ :
ﻣﺜﺎ ﻟ ﺎﻻﺳﺘﺨﺪاﻣ ﺎﻟﻜﻮد
٥ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 6. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
)01 - , “ printf ( " % d ﺘﻭﺼﻴﻑ ﻟﻤﺘﻐﻴﺭ ﺃﻭ ﺜﺎﺒﺕ ﺭﻗﻤﻰ ﺼﺤﻴﺢ %d
( Signed decimal integer ) int
) 705 , “ printf ( “ % p ﺘﻭﺼﻴﻑ ﻟﻤﺘﻐﻴﺭ ﺃﻭ ﺜﺎﺒﺕ ﺭﻗﻤﻰ ﺤﻘﻴﻘﻰ %f
( floating point ) float
)“ printf ( “ % c “ , “ a ﺘﻭﺼﻴﻑ ﻟﻤﺘﻐﻴﺭ ﺃﻭ ﺜﺎﺒﺕ ) ﺤﺭﻑ ﻭﺍﺤﺩ ( %c
char Single character
) “ printf ( “ % s “ , “ is ﺘﻭﺼﻴﻑ ﻟﻌﺒﺎﺭﺓ ﺤﺭﻓﻴﺔ ﺤﺭﻑ ﺃﻭ ﺃﻜﺜﺭ %s
String
) ٠1 “ , “ printf ( “ % u ﺘﻭﺼﻴﻑ ﻟﻤﺘﻐﻴﺭ ﺃﻭ ﺜﺎﺒﺕ ﺭﻗﻤﻰ ﺼﺤﻴﺢ ﺒﺩﻭﻥ ﺇﺸﺎﺭﺓ ( %u
) (unsigned decimal integer
) printf ( “ % x “ , af ﺘﻭﺼﻴﻑ ﻟﻤﺘﻐﻴﺭ ﺃﻭ ﺜﺎﺒﺕ ﺒﺎﻟﻨﻅﺎﻡ ﺍﻟﺴﺎﺩﺱ ﻋﺸﺭ hex %x
) 76 , “ printf ( “ % o Qctal ﺘﻭﺼﻴﻑ ﻟﻤﺘﻐﻴﺭ ﺃﻭ ﺜﺎﺒﺕ ﺒﺎﻟﻨﻅﺎﻡ ﺍﻟﺜﻤﺎﻨﻰ %o
* ﺃﻭﺠﺩ ﻨﺎﺘﺞ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺘﺎﻟﻰ
/ * 2 / * program name
> # include < stdio.h
) ( main
{
; int a , b , c
; float f
; long t
; ‘ char ch = ‘y
; " char name [10] = " aly
;5=a
; 01 = b
;c=a+b
; ) printf (“ n c = % d “ , c
; ) printf ( “n f = % f “ , f
; ) printf (“ n name = % s “ , name
; )printf ( “ n ch = % c “ , ch
; ) printf ( “n t = % ld “ , t
}
* ﻣﻼﺣﻈﺎت ﻋﻠﻰ اﻟﺤﻞ *
• ﻴﺸﻤل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺴﻁﺭ ﺭﻗﻡ ١ ﻟﻠﺘﻌﻠﻴﻕ ﺃﻭ ﺍﻟﻤﻼﺤﻅﺔ
• ﻓﻰ ﺍﻟﺴﻁﺭ ٢ ﻴﺸﻤل ﻋﻠﻰ ﺍﻟﺠﻤﻠﺔ > # include < stdio.hﻭﺘﺴﺘﺨﺩﻡ ﻟﺘﺤﻤﻴل ﻤﻠﻑ ﺍﻟﺘﻭﺠﻴﻪ stdio.h
ﺍﻟﺫﻯ ﻴﺤﺘﻭﻯ ﻋﻠﻰ ﺘﻌﺭﻴﻑ ﺍﻟﺩﺍﻟﺔ ) ( printf
٦ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 7. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
• ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٣ ﺘﺒﺩﺃ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ) ( mainﺜﻡ ﺍﻟﺴﻁﺭ ٤ ﺘﺒﺩﺃ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ﺒﺎﻟﻘﻭﺱ {
• ﻓﻰ ﺍﻟﺴﻁﺭ ﺭﻗﻡ 5 , 6 , 7 ﺇﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ
• ﻓﻰ ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٨ ﺍﻹﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭ chﻤﻥ ﻨﻭﻉ ﺤﺭﻑ ) ( charﻭﺇﻋﻁﺎﺌﻪ ﺍﻟﻘﻴﻤﺔ y
• ﻓﻰ ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٩ ﺍﻹﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭ nameﻟﺘﺨﺯﻴﻥ ﻋﺒﺎﺭﺓ ﺤﺭﻓﻴﺔ ﻭﺇﻋﻁﺎﺌﻪ ﺍﻟﻘﻴﻤﺔ ﺍﻻﺒﺘﺩﺍﺌﻴﺔ ﻜﻠﻤـﺔ
Aly
• ﻓﻰ ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٠١ ، ١١ ، ٢١ ﻹﻋﻁﺎﺀ ﻗﻴﻡ ﻟﻠﻤﺘﻐﻴﺭﺍﺕ A , Bﻭﻗﻴﻤﺔ C
• ﺜﻡ ﻁﺒﺎﻋﺔ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺜﻡ ﺘﻨﺘﻬﻰ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ﺒﺎﻟﻘﻭﺱ { ﻭﺒﺎﻟﺘﺎﻟﻰ ﻴﻨﺘﻬﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ
ﻣﻼﺣﻈ ﺎت : ﺍﻟﺼﻭﺭﺓ : % 3Fﻴﻌﻨﻰ ﻁﺒﺎﻋﺔ ﺜﻼﺙ ﺃﺭﻗﺎﻡ ﺒﻌﺩ ﺍﻟﻌﻼﻤﺔ ﺍﻟﻌﺸﺭﻴﺔ ﻓﻤﺜﻼ ﺍﻟـﺭﻗﻡ 5376.435
ﻴﻅﻬﺭ ﺒﺎﻟﺼﻭﺭﺓ 476.435
* داﻟﺔ اﻹدﺧﺎل اﻟﻌﺎﻣﺔ ) ( *Scanf
ﻫﻰ ﺩﺍﻟﺔ ﺍﻹﺩﺨﺎل ﺍﻟﺭﺌﻴﺴﻴﺔ ﺍﻟﺘﻰ ﺘﺴﻤﺢ ﺒﺈﺩﺨﺎل ﺠﻤﻴﻊ ﺃﻨﻭﺍﻉ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻫﻰ ﺘﺄﺨﺫ ﻨﻔﺱ ﺍﻟﻤﻌﺎﻤﻼﺕ ﺍﻟﺘﻰ ﺘﺄﺨﺫﻫﺎ
ﺍﻟﺩﺍﻟﺔ ) ( Print f
ﻤﺜ ﺎ ل :
٧ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 8. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
> # include < stdio.h
) ( main
{
; int a , b , c
; float r , s , t
;]01[ char name
; ) " : printf ( " n n enter your name
; ) scanf ( " % s " , name
; ) " = printf ( " a
; ) scanf ( " % d " , & a
; ) " = printf ( “ b
; ) scanf ( % d " , & b
; ) " = printf ( " r
; ) scanf ( " % f " , &r
; ) " =printf ( " s
; ) scanf ( " % f " & s
; ) printf ( " n welcome % s " , name
; ) printf ( " n n c = a + b = % d " , a + b
; ) printf ( " n n t = r + s = % d " , r + s
}
ﻣﻼﺣﻈﺎت ﻋﻠﻰ اﻟﺤﻞ
• ﻴﺘﻡ ﺍﻹﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ a , b , c , r , s , t , name
• ﺘﻁﺒﻊ ﺍﻟﺩﺍﻟﺔ )( printfﺍﻟﺭﺴﺎﻟﺔ enter your name
• ﺘﺴﺘﻘﺒل ﺍﻟﺩﺍﻟﺔ ) ( scan fﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﺤﺭﻓﻴﺔ ﺍﻟﺘﻰ ﻴﺩﺨﻠﻬﺎ ﺍﻟﻤﺴﺘﺨﺩﻡ ﻭﻨﺼـﻔﻬﺎ ﻓـﻰ ﺍﻟﻤﺘﻐﻴـﺭ name
٠٠٠٠ ﻜﺫﻟﻙ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻷﺨﺭﻯ
• ﺘﺴﺘﻘﺒل ﺍﻟﺩﺍﻟﺔ ) ( scan fﻓﻰ ﺴﻁﺭ ) scan f ( ) ( “ % d " , &aﻗﻴﻤﺔ ﺼﺤﻴﺤﻪ ﻭﺘﺨﺯﻨﻬﺎ ﻓﻰ
ﺍﻟﻤﺘﻐﻴﺭ a
# ﻣﺎذا ﯾﻌﻨﻰ اﻟﻤﺆﺷﺮ & #
: &aﺘﻌﻨﻰ ﺘﺨﺯﻴﻥ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺼﺤﻴﺤﺔ ﻓﻰ ﺍﻟﻤﻜﺎﻥ ﺍﻟﻤﺨﺯﻥ ﻋﻨﻭﺍﻨﻪ ﻓﻰ ﺍﻟﻤﺘﻐﻴﺭ aﺒﻤﻌﻨﻰ ﺃﻥ aﻴﺸﻴﺭ ﺇﻟﻰ
ﻋﻨﻭﺍﻥ ﺍﻟﻤﻜﺎﻥ ﺍﻟﺫﻯ ﺘﺨﺯﻥ ﻓﻴﻪ ﺍﻟﻘﻴﻤﺔ ﺤﻴﺙ ﺍﻟﻌﻼﻤﺔ & ﺘﺠﻌل ﺍﻟﻤﺘﻐﻴﺭ ﻴﺸﻴﺭ ﺇﻟﻰ ﻋﻨﻭﺍﻥ ﺍﻟﻤﻜﺎﻥ
* ﺍﻟﻨﺎﺘﺞ :-
enter your name : ahmed
5=a
٠1 = b
٠2 = r
٠3 = s
٨ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 9. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
welcome ahmed
51 = c = a + b
05 = t = r + s
ﺗﻤﺮﯾﻦ : ﺑﺮﻧﺎﻣﺞ ﻹﯾﺠﺎد ﻣﺴﺎﺣﺔ اﻟﺪاﺋﺮة
> # include < stdio .h
/ * / * program to calculate erea of circle
) ( main /* / * function heading
{
; float redius, area /* /* variable declarations
; ) “ ? = printf ( “ redius /* /* output statement
; ) scanf ( “ % f “ , redius /* /* input statement
; area = 3.14159 * redius * redius /* /* assignment statement
; ) printf ( “ area = % f “ , area /* /* output statement
}
ﻤﻊ ﺃﻨﻭﺍﻉ ﺨﺎﺼﺔ ﻤﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻜـﺎﻟﺤﺭﻭﻑ ﻭﺍﻟﻌﺒـﺎﺭﺍﺕ * دوال إدﺧﺎل ﺣﺮف * ﻫﻨﺎﻙ ﺩﻭﺍل ﺃﺨﺭﻯ ﺘﺘﻌﺎﻤل
ﺍﻟﺤﺭﻓﻴﺔ ﻭﻫﻰ :
) ( getchar ( ) , getche ( ) , getch
١ – اﻟﺪاﻟﺔ ) ( ) - : getcharﻤﻠﻑ ﺘﻭﺠﻴﻪ ( stdio .h
ﺘﺴﺘﺨﺩﻡ ﻹﺩﺨﺎل ﺤﺭﻑ ﻭﺍﺤﺩ ﻭﻴﻅﻬﺭ ﺍﻟﺤﺭﻑ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ ﺒﻌﺩ ﺍﻟﻜﺘﺎﺒﺔ ﻭﻻ ﺘﺴﻤﺢ ﺒﺎﻻﻨﺘﻘﺎل ﺇﻟﻰ ﺍﻷﻤﺭ ﺍﻟﺘـﺎﻟﻰ
ﺇﻻ ﺇﺫﺍ ﻀﻐﻁ ﺍﻟﻤﺴﺘﺨﺩﻡ ﻤﻔﺘﺎﺡ ﺍﻹﺩﺨﺎل enter
ﻣﺜﺎل
; char a
; ) ( a = getchar
; ) printf ( “ % c “ , a
٢- اﻟﺪاﻟﺔ ) ( ) - : getcheﻤﻠﻑ ﺍﻟﺘﻭﺠﻴﻪ ( conio .h
ﺘﺴﺘﺨﺩﻡ ﻹﺩﺨﺎل ﺤﺭﻑ ﻭﺍﺤﺩ ﻭﻴﻅﻬــﺭ ﻫﺫﺍ ﺍﻟﺤﺭﻑ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ ﻭﻟﻜﻨﻬـﺎ ﺘﺨﺘـــﻠﻑ ﻋـﻥ ﺍﻟﺩﺍﻟـــﺔ
) ( getcharﻓﻰ ﺃﻨﻬﺎ ﻻ ﺘﺤﺘﺎﺝ ﺇﻟﻰ ﺍﻟﻀﻐﻁ ﻋﻠﻰ ﻤﻔﺘﺎﺡ ﺍﻹﺩﺨﺎل enterﻟﻼﻨﺘﻘﺎل ﻟﻠﺴﻁﺭ ﺍﻟﺘﺎﻟﻰ ﻭﺘﻌﻤل ﻫﺫﻩ
ﺍﻟﺩﺍﻟﺔ ﺒﻁﺭﻴﻘﺔ ﻤﺸﺎﺒﻬﺔ .
ﻣﺜﺎل
; char a
; ) ( a = getche
; ) printf ( “ % c “ , a
٣ – اﻟﺪاﻟﺔ ) ( ) : getchﻤﻠﻑ ﺍﻟﺘﻭﺠﻴﻪ ( conio.h
٩ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 10. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
ﺘﺴﺘﺨﺩﻡ ﻹﺩﺨﺎل ﺤﺭﻑ ﻭﺍﺤﺩ ﻭﻟﻜﻥ ﺘﺨﺘﻠﻑ ﻋﻥ ﺍﻟﺩﺍﻟﺘﻴﻥ ﺍﻟﺴﺎﺒﻘﺘﻴﻥ ﻓﻰ ﺃﻥ ﻫﺫﺍ ﺍﻟﺤﺭﻑ ﻻ ﻴﻅﻬﺭ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ
ﻭﻜﺫﻟﻙ ﻓﻰ ﺃﻨﻬﺎ ﻻ ﺘﺤﺘﺎﺝ ﺇﻟﻰ ﺍﻟﻀﻐﻁ ﻋﻠﻰ ﻤﻔﺘﺎﺡ ﺍﻹﺩﺨﺎل enterﻟﻼﻨﺘﻘﺎل ﺇﻟﻰ ﺍﻟﺴﻁﺭ ﺍﻟﺘﺎﻟﻰ
ﻣﺜﺎل
; char a
; ) ( a = getch
; ) printf ( “ % c “ , a
* داﻟﺔ ﻃﺒﺎﻋﺔ ﺣﺮف واﺣﺪ ) ( ) : putcharﻤﻠﻑ ﺘﻭﺠﻴﻪ ( stdio.h
- ﺘﺴﺘﺨﺩﻡ ﻟﻁﺒﺎﻋﺔ ﺤﺭﻑ ﻭﺍﺤﺩ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ
- ﻓﻤﺜﻼ )' putchar ( ' aﺘﻁﺒﻊ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ ﺍﻟﺤﺭﻑ aﻜﻤﺎ ﻫﻭ
* داﻟﺔ إدﺧﺎل ﻋﺒﺎرة ﺣﺮﻓﯿﺔ ) ( * getsﻤﻠﻑ ﺍﻟﺘﻭﺠﻴﻪ stdio.h
- ﺘﺴﺘﺨﺩﻡ ﺍﻟﺩﺍﻟﺔ ) ( getsﻓﻰ ﺇﺩﺨﺎل ﻋﺒﺎﺭﺓ ﺤﺭﻓﻴﺔ string
ﻣﺜﺎل
;]02[char name
; )gets (name
ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﺜﺎل ﺘﺨﺯﻥ ﺍﻟﺩﺍﻟﺔ ) ( getsﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﺤﺭﻓﻴﺔ ﻓﻰ ﺍﻟﻤﺘﻐﻴﺭ Name
* داﻟﺔ ﻃﺒﺎﻋﺔ ﻋﺒﺎرة ﺣﺮﻓﯿﺔ ) ( * putsﻤﻠﻑ ﺍﻟﺘﻭﺠﻴﻪ stdio.h
- ﺘﺴﺘﺨﺩﻡ ﻟﻁﺒﺎﻋﺔ ﻋﺒﺎﺭﺓ ﺤﺭﻓﻴﺔ stringﺤﻴﺙ ﺘﻁﺒﻊ ﺒﺩﻭﻥ ﺘﻭﺼﻴﻑ ﺸﻜل ﺍﻟﻤﺨﺭﺠﺎﺕ
ﻣﺜﺎل :
“ char name[10] = “ ahmed
; )puts (name
; ) “ puts ( “mohammed
ﻋﻨﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻨﺤﺼل ﻋﻠﻰ ﺍﻟﻨﺘﻴﺠﺔ
ahmed
mohammed
ﻣﻼﺣﻈ ﺔ : ﺍﻹﻋﻼﻥ ]01[ char nameﻤﻌﻨﺎﻩ ﺃﻥ ﺍﻟﻤﺘﻐﻴﺭ nameﻤﻥ ﻨﻭﻉ ﺤﺭﻓﻰ ﻭﻴﺼﻠﺢ ﻟﺘﺨﺯﻴﻥ ﻜﻠﻤـﺔ
ﺃﻗﺼﻰ ﻋﺩﺩ ﺤﺭﻭﻑ ﻟﻬﺎ ﻫﻭ ٠١ ﺤﺭﻭﻑ
* ﺑﻌﺾ اﻟﺪوال اﻟﻤﻜﺘﺒﺔ
ﻣﻠﻒ include ﺎﻟﻐﺮ ﺿ ﺎﻟﻨﻮﻋ ﺎﻟﺪاﻟﺔ
stdlib.h ﺘﻌﻴﺩ ﻗﻴﻤﺔ iﺍﻟﻤﻁﻠﻘﺔ ﺼﺤﻴﺢ ) abs ( i
math.h ﺘﻌﻴﺩ ﻟﻭﻏﺎﺭﻴﺘﻡ ﻁﺒﻴﻌﻴﺎ ﻟـ d ﻤﺯﺩﻭﺝ ) log ( d
math.h ﺘﻌﻴﺩ 1 dﻤﺭﻓﻭﻋﺔ ﺇﻟﻰ ﺍﻟﻘﻭﺓ 1d ﻤﺯﺩﻭﺝ ) 2pow ( d1 , d
math.h ) labs ( eﺼﺤﻴﺢ ﻁﻭﻴل ﺘﻌﻴﺩ ﻗﻴﻤﺔ ﻤﻁﻠﻘﺔ ﻟـ l
math.h ﺘﻌﻴﺩ ﺠﻴﺏ d ﻤﺯﺩﻭﺝ ) sin ( d
٠١ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 11. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
math.h ﺘﻌﻴﺩ ﺍﻟﺠﺯﺭ ﺍﻟﺘﺭﺒﻴﻌﻰ ﻟـ d ﻤﺯﺩﻭﺝ ) sqrt ( d
string.h ﺘﻨﺴﺦ ﺍﻟﺴﻠﺴﻠﺔ 2 sﻓﻰ ﺍﻟﺴﻠﺴﻠﺔ 1s ﺤﺭﻑ ) 2strcpy ( s1,s
أواﻣﺮ اﻟﺘﺤﻜﻢ
ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺍﻟﺴﻁﻭﺭ ﺒﻴﻥ ﺃﻗﻭﺍﺱ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ mainﺒﺘﺭﺘﻴﺏ ﻜﺘﺎﺒﺘﻬﺎ . ﻭﻋﻨﺩ ﻭﺠﻭﺩ ﺴﻁﻭﺭ ﻤﺘﺸﺎﺒﻬﺔ ﻴﺘﻡ
ﺍﻟﻌﻤل ﺒﺄﺴﻠﻭﺏ ﺃﻭﺍﻤﺭ ﺍﻟﺘﺤﻜﻡ ﻜﺎﻟﺘﺎﻟﻰ : -
اﻟﺘﻔﺮﯾﻎ اﻟﺘﻜﺮار ) اﻟﺪورات(
أوﻻ اﻟﺘﻜﺮار Loop
١- اﻟﺪوارة : forﺘﺴﺘﺨﺩﻡ ﻟﺘﻜﺭﺍﺭ ﺘﻨﻔﻴﺫ ﻋﻤﻠﻴﺔ ﻋﺩﺩ ﻤﺤﺩﺩ ﻤﻥ ﺍﻟﻤﺭﺍﺕ
; For ( initial – value ; condition ; increment ) ; statement اﻟﺼﻮرة اﻟﻌﺎﻣﺔ :
ﺤﻴﺙ :
: initial – valueﻫﻰ ﺍﻟﻘﻴﻤﺔ ﺍﻻﺒﺘﺩﺍﺌﻴﺔ
: conditionﻫﻭ ﺸﺭﻁ ﺇﻨﻬﺎﺀ ﺍﻟﺘﻜﺭﺍﺭ
: incrementﻫﻰ ﻗﻴﻤﺔ ﺍﻟﺯﻴﺎﺩﺓ ﺍﻟﺩﻭﺭﻴﺔ
ﻣﺜﺎل : ﺒﺭﻨﺎﻤﺞ ﻴﻁﺒﻊ ﺍﻷﺭﻗﺎﻡ ﻤﻥ ﺼﻔﺭ ﺇﻟﻰ ٩
> # include < stdio.h
) ( main
{
; int i
) ++ for ( i = 0 ; i < 10 ; i
; ) printf ( “ n i = % d " , i
}
* ﺗﻨﻔﯿﺬ أﻛﺜ ﺮ ﻣ ﻦ ﺟﻤﻠ ﺔ ﻣ ﻊ : Forﻟﺘﻨﻔﻴﺫ ﺃﻜﺜﺭ ﻤﻥ ﺠﻤﻠﺔ ﻟﻌﺩﺩ ﻤﺤﺩﺩ ﻤﻥ ﺍﻟﻤﺭﺍﺕ ﻴﺠﺏ ﻭﻀﻊ ﺍﻟﻘﻭﺱ { ﻓﻰ
ﺒﺩﺍﻴﺔ ﺍﻟﺒﻠﻭﻙ ﺍﻟﻤﺭﺍﺩ ﺘﻜﺭﺍﺭﻩ ﻭﻭﻀﻊ ﺍﻟﻘﻭﺱ } ﻓﻰ ﻨﻬﺎﻴﺔ ﺍﻟﺒﻠﻭﻙ .
ﻣﺜﺎل : ﺤﺴﺎﺏ ﻤﺘﻭﺴﻁ ﻗﺎﺌﻤﺔ ﻤﻥ ﺍﻷﻋﺩﺍﺩ
> # include < stdio.h
/ * / * calculate the average of n numbers
) ( main
{
; int n , count
; 0 = float x , average , sum
/ * / * initialize and read in a value for n
١١ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 12. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
; ) " ? printf ( " how many numbers
; ) scanf ( " % d " , & n
/ * / * read in the numbers
) ++ for ( count = 1 ; count < = n ; count
{
; ) “ = printf ( “ x
; ) scanf ( “ % f " ; & x
; sum + = x
}
/ * / * calculate the average and write out the answer
; average = sum / n
; ) printf ( " n the average is % f n " , average
}
* اﻟﺪوارات اﻟﻤﺘﺪاﺧﻠﺔ ﺑﺎﺳﺘﺨﺪام For
- ﺍﻟﺩﻭﺍﺭﺍﺕ ﺍﻟﻤﺘﺩﺍﺨﻠﺔ ﻋﺒﺎﺭﺓ ﻋﻥ ﺩﻭﺍﺭﺓ ﻜﺒﻴﺭﺓ ﺘﺸﺘﻤل ﺒﺩﺍﺨﻠﻬﺎ ﻋﻠﻰ ﺩﻭﺍﺭﺓ ﺃﻭ ﺃﻜﺜﺭ
loopﺍﻟﺩﺍﺨﻠﻰ ﻴﺘﻡ ﺘﻜﺭﺍﺭ ﺘﻨﻔﻴﺫﻫﺎ ﻁﺎﻟﻤﺎ ﻟﻡ ﻴﻨﺘﻪ ﺍﻟﻌﺩﺍﺩ ﻓﺈﺫﺍ ﺃﻨﺘﻬـﻰ - ﺒﻤﻌﻨﻰ ﺃﻥ ﻤﺠﻤﻭﻋﺔ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺒﺎﻟـ
ﻴﻨﺘﻘل ﺍﻟﺘﻨﻔﻴﺫ ﺇﻟﻰ ﺍﻟﺩﻭﺍﺭﺓ ﺍﻟﺨﺎﺭﺠﻴﺔ ﻭﻴﺘﻡ ﺘﻜﺭﺍﺭ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﻓﻰ ﺍﻟـ Loopﺍﻟﺨﺎﺭﺠﻰ ﺤﺘﻰ ﻴﻨﺘﻬﻰ .
ﻣﺜﺎل : ﻁﺒﺎﻋﺔ ﺠﺩﻭل ﺍﻟﻀﺭﺏ ﻤﻥ ﺃﻭل ١ × ١ ﺇﻟﻰ ٢١ × ٢١
> # include < stdio.h
) ( main
{
; int i , j
) ++ for ( i = 1 ; i < = 12 ; i
{
; )" printf ( “ in
) ++ for ( j = i ; j < = 12 ; j
{
; ) printf ( " i * j = % d " , i * j
}
}
}
• اﻟﺪوارة اﻟﻼﻧﻬﺎﺋﯿﺔ ﺑﺎﺳﺘﺨﺪام : Forﻤﻌﻨﺎﻫﺎ ﺘﻜﺭﺍﺭ ﺘﻨﻔﻴﺫ ﺍﻟﺠﻤﻠﺔ ﺒﺩﻭﻥ ﺸﺭﻁ ﻭﻻ ﻴﺘﻭﻗﻑ ﺍﻟﺘﻨﻔﻴﺫ ﺤﺘﻰ
ﻴﻀﻐﻁ ﺍﻟﻤﺴﺘﺨﺩﻡ CTRL + Cﻭﺘﺄﺨﺫ ﺍﻟﺩﻭﺍﺭﺓ ﺍﻟﻼﻨﻬﺎﺌﻴﺔ ﺍﻟﺼﻭﺭﺓ ) ;; ( For
٢ – اﻟ ﺪوارة :whileﺘﺴﺘﺨﺩﻡ ﺍﻟﺩﻭﺍﺭﺓ whileﻟﺘﻜﺭﺍﺭ ﺘﻨﻔﻴﺫ ﺠﻤﻠﺔ ﺃﻭ ﻤﺠﻤﻭﻋﺔ ﺠﻤل ﻋﺩﺩ ﻤﻥ ﺍﻟﻤـﺭﺍﺕ
ﻏﻴﺭ ﻤﻌﻠﻭﻡ ﺍﻟﻌﺩﺩ ﻭﻴﺘﻭﻗﻑ ﻫﺫﺍ ﻋﻠﻰ ﺸﺭﻁ ﻤﻭﺠﻭﺩ ﺒﺎﻟﺩﻭﺍﺭﺓ
اﻟﺼﻮرة اﻟﻌﺎﻣﺔ :
) While ( condition ) While ( condition
; Statement {
; 1 statement
; 2 statement
}
٢١ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 13. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
• ﻴﺘﻡ ﺘﻜﺭﺍﺭ ﻤﺠﻤﻭﻋﺔ ﺍﻷﻭﺍﻤﺭ ﺒﻴﻥ ﺍﻷﻗﻭﺍﺱ } { ﻋﺩﺩ ﻤﻥ ﺍﻟﻤﺭﺍﺕ ﻴﺘﻭﻗﻑ ﻋﻠﻰ ﺍﻟﺸﺭﻁ ﺒﻴﻥ ﺍﻷﻗﻭﺍﺱ ) (
• ﻋﻨﺩﻤﺎ ﻴﺼﺒﺢ ﺍﻟﺸﺭﻁ . Falseﻴﺘﻭﻗﻑ ﺘﻨﻔﻴﺫ ﻫﺫﻩ ﺍﻷﻭﺍﻤﺭ ﻭﻴﺴﺘﻤﺭ ﺃﺩﺍﺀ ﺒﺎﻗﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ .
• ﺍﻟﺘﻜﺭﺍﺭ ﻴﻜﻭﻥ ﺼﻔﺭﺍ ﺤﻴﻨﻤﺎ ﻴﻜﻭﻥ ﺍﻟﺸﺭﻁ Falseﻤﻥ ﺍﻟﺒﺩﺍﻴﺔ
ﺗﻤﺮﯾﻦ : ﺘﻌﺩﻴل ﺒﺭﻨﺎﻤﺞ ﺤﺴﺎﺏ ﻤﺘﻭﺴﻁ ﻗﺎﺌﻤﺔ ﻤﻥ ﺍﻷﻋﺩﺍﺩ ﺒﺎﺴﺘﺨﺩﺍﻡ While
> # include < stdio.h
) ( main
{
; 1 = int n , count
; 0 = float x , average , sum
; ) " ? printf ( “ how many number
; ) scanf ( “ % d , & n
; ) while ( count < = n
{
; )" = printf ( “ x
; ) scanf ( “ % f " , & x
; sum + = x
;++ count
}
; average = sum / n
; ) printf ( " n the average is % f " ; average
}
* ﻣﻼﺣﻈﺎت ﻋﻠﻰ Forو * While
- ﺍﻟـ Forﺩﻭﺍﺭﺓ ﻋﺩﺩﻴﺔ ﺤﻴﺙ ﺘﻌﺘﻤﺩ ﻋﻠﻰ ﺍﻟﻌﺩﺍﺩ ﻭﻴﺘﻨﻬﻰ ﺍﻟﺘﻜﺭﺍﺭ ﻓﻴﻬﺎ ﺒﺎﻨﺘﻬﺎﺀ ﻋﺩﺩ ﻤﺭﺍﺕ ﺍﻟﺘﻜﺭﺍﺭ
- ﺃﻤﺎ ﺍﻟﺩﻭﺍﺭﺓ whileﻓﺩﻭﺍﺭﺓ ﺸﺭﻁﻴﺔ ﺃﻯ ﺘﻌﺘﻤﺩ ﻋﻠﻰ ﺍﻟﺸﺭﻁ ﺍﻟﺫﻯ ﻴﻠﻰ ﺍﻷﻤﺭ whileﺤﻴﺙ ﺘﺘﻜﺭﺍﺭ
ﺍﻟﺠﻤل ﺍﻟﺘﻰ ﺘﻠﻴﻬﺎ ﻁﺎﻟﻤﺎ ﻜﺎﻥ ﺍﻟﺸﺭﻁ ﺼﺤﻴﺤﺎ
٣- اﻟﺪوارة : Do … whileﺘﺴﺘﺨﺩﻡ do whileﻟﺘﻜﺭﺍﺭ ﺘﻨﻔﻴﺫ ﺠﻤﻠﺔ ﺃﻭ ﻤﺠﻤﻭﻋﺔ ﺠﻤل ﺃﻜﺜﺭ ﻤﻥ ﻤﺭﺓ
ﺒﻨﺎﺀ ﻋﻠﻰ ﺸﺭﻁ ﻤﻌﻴﻥ . ﺃﻯ ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺍﻟﺠﻤل ﺍﻟﺘﺎﻟﻴﺔ ﻟـ Doﺜﻡ ﺘﺨﺘﺒﺭ ﺍﻟﺸﺭﻁ ﻓﺈﺫﺍ ﻜﺎﻥ ﺼﺤﻴﺤﺎ ﺘﻌﻴﺩ ﺍﻟﺘﻨﻔﻴﺫ
ﻭﺇﻻ ﺘﻭﻗﻑ ﺍﻟﺘﻜﺭﺍﺭ
ﺇﺫﻥ ﻴﺘﻡ ﺍﻟﺘﻨﻔﻴﺫ ﻤﺭﺓ ﻭﺍﺤﺩ ﻋﻠﻰ ﺍﻷﻗل ﺜﻡ ﻴﺘﻡ ﺍﺨﺘﺒﺎﺭ ﺍﻟﺸﺭﻁ ﺍﻟﻤﻨﻁﻘﻰ ) ( ﻓﺈﺫﺍ ﻜﺎﻥ Trueﻴﻨﻔﺫ ﻤﺭﺓ ﺃﺨﺭﻯ
ﻭﺇﺫﺍ ﻜﺎﻥ Falseﻴﺘﻭﻗﻑ ﺍﻟﺘﻜﺭﺍﺭ ﻭﻴﺴﺘﻤﺭ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻷﺼﻠﻰ
ﺘﻤﺭﻴﻥ : ﺇﻴﺠﺎﺩ ﻤﺠﻤﻭﻉ ﺍﻷﺭﻗﺎﻡ ﻤﻥ ٠ ﺇﻟﻰ ٩
> # include < stdio.h
) ( main
{
; 0 = int count
; 0 = int total
do
{
; total + = count
٣١ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 14. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
; ) " ) printf ( “ count = % d , total = % d n “ , count ++ , total
}
; ) 01 = < while ( count
}
ﺛﺎﻧﯿ ً : اﻟﺘﻔﺮﯾ ﻎ : ﻟﺘﻨﻔﻴﺫ ﺴﻁﺭ ﺃﻭ ﻋﺩﺓ ﺴﻁﻭﺭ ﻁﺒﻘﺎ ﻟﺸﺭﻁ ﻤﻌﻴﻥ .ﺃﻯ ﺘﻔﺭﻴﻎ ﺒﻌﻨﻰ ﺘﻐﻴﺭ ﻤﺴﺎﺭ ﺍﻟﺒﺭﻨـﺎﻤﺞ .
ﺎ
ﻭﺍﻟﺘﻔﺭﻴﻎ ﺇﻤﺎ ﻴﻜﻭﻥ ﻤﺸﺭﻭﻁ ﺃﻭ ﻏﻴﺭ ﻤﺸﺭﻭﻁ
١( اﻟﺘﻔﺮﯾﻎ اﻟﻤﺸﺮوط
* ﺟﻤﻠﺔ اﻟﺸﺮط : IFﺘﺴﺘﺨﺩﻡ ﻜﻠﻤﺔ IFﻟﺘﻨﻔﻴﺫ ﺠﻤﻠﺔ ﺃﻭ ﺃﻜﺜﺭ ﺤﺴﺏ ﺸﺭﻁ ﻤﻌﻴﻥ ) ﺍﺨﺘﺒﺎﺭ ﻤﻨﻁﻘﻰ (
اﻟﺼﻮرة اﻟﻌﺎﻣﺔ
) if ( condition
; statement
ﻤﻌﻨﺎﻩ ﺇﺫﺍ ﺘﺤﻘﻕ ﺍﻟﺸﺭﻁ ) ( conditionﻨﻔﺫ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺘﺎﻟﻴﺔ ﺃﻤﺎ ﺇﺫﺍ ﻟﻡ ﻴﺘﺤﻘﻕ ﺍﻟﺸﺭﻁ ﻓﻼ ﺘﻨﻔﺫ ﻫـﺫﻩ ﺍﻟﺠﻤﻠـﺔ
ﻭﺍﻨﺘﻘل ﺇﻟﻰ ﺍﻟﺘﻰ ﺘﻠﻴﻬﺎ
ﻣﻼﺣﻈﺔ ﺇﺫﺍ ﻜﺎﻥ ﻫﻨﺎﻙ ﺃﻜﺜﺭ ﻤﻥ ﺠﻤﻠﺔ ﺘﺭﻴﺩ ﺘﻨﻔﻴﺫﻫﺎ ﻤﻊ ifﻻﺒﺩ ﻤﻥ ﻓﺘﺢ ﻗﻭﺱ { ﻗﺒل ﻤﺠﻤﻭﻋﺔ ﺍﻟﺠﻤل
ﻭﺍﻟﻘﻭﺱ } ﻓﻰ ﺃﺨﺭ ﺍﻟﺠﻤل ﻜﻤﺎ ﻴﻠﻰ :
) if ( condition
{
; 1 statement
; 2 statement
}
* ﺟﻤﻠﺔ ifاﻟﺸﺮﻃﯿﺔ اﻟﻤﺘﺪاﺧﻠﺔ : ﻴﻤﻜﻥ ﺃﻥ ﺘﺘﺩﺍﺨل ﺠﻤل ifﻓﺘﺄﺨﺫ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻰ :
) if ( condition
) if ( condition
) if ( condition
ﻭﻫﺫﺍ ﻤﻌﻨﺎﻩ ﺇﺫﺍ ﺘﺤﻘﻕ ﺍﻟﺸﺭﻁ ﺍﻷﻭل ﺍﻨﻅﺭ ﺇﻟﻰ ﺍﻟﺸﺭﻁ ﺍﻟﺜﺎﻨﻰ …. ﻭﻫﻜﺫﺍ
* اﻟﺠﻤﻠﺔ اﻟﺸﺮﻃﯿﺔ : if …elseﺘﺴﺘﺨﺩﻡ ﻟﺘﻨﻔﻴﺫ ﺃﺤﺩ ﺍﺨﺘﻴﺎﺭﻴﻥ ﻭﺘﺄﺨﺫ ﺍﻟﺼﻭﺭﺓ ﺍﻟﺘﺎﻟﻴﺔ :
) if ( condition
{
1 statement
}
else
{
2 statement
}
٤١ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 15. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
ﻭﻤﻌﻨﺎﻫﺎ ﺇﺫﺍ ﻜﺎﻥ ﺍﻟﺸﺭﻁ ) ( conditionﺼﺤﻴﺢ trueﻨﻔﺫ ﺍﻟﺠﻤﻠﺔ ﺍﻷﻭﻟﻰ ) 1 ( statementﻭﺇﻻ ﻨﻔﺫ
ﺍﻟﺠﻤﻠﺔ ﺍﻟﺜﺎﻨﻴﺔ ) 2 ( statementﺃﻯ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ if ….elseﺘﺴﺘﺨﺩﻡ ﻟﺘﺤﺩﻴﺩ ﺍﺨﺘﺒﺎﺭ ﻭﺍﺤﺩ ﻤﻥ
ﺍﺨﺘﻴﺎﺭﻴﻥ ﻭﻻ ﻴﻤﻜﻥ ﺘﻨﻔﻴﺫ ﺍﻻﺨﺘﻴﺎﺭﻴﻥ ﻤﻌﺎ .
* اﻟﺠﻤﻠﺔ اﻟﺸﺮﻃﯿﺔ : if …. else ifﻟﺘﻨﻔﻴﺫ ﺨﻴﺎﺭ ﻤﻥ ﻤﺠﻤﻭﻋﺔ ﺨﻴﺎﺭﺍﺕ ﻜﻤﻘﺎﺭﻨﺔ ﺭﻗﻤﻴﻥ
اﻟﻄﺮﯾﻘﺔ اﻷوﻟﻰ : ﺒﺎﺴﺘﺨﺩﺍﻡ ﺜﻼﺙ ﺠﻤل IFﻭﻓﻰ ﻜل ﺠﻤﻠﺔ ﻨﻀﻊ ﺃﺤﺩ ﺍﻟﺸﺭﻭﻁ ﺍﻟﺜﻼﺜﺔ ﻜﻤﺎ ﻴﻠﻰ : -
;5=i
; ) 5 < if ( i
; ) " 5 printf ( “ i less than
) 5 = if ( i
; ) " 5 printf ( " i equal to
) 5 > if ( i
; ) “ 5 printf ( “ i greater than
ﻭﻫﺫﻩ ﻁﺭﻴﻘﺔ ﺘﺴﺘﻬﻠﻙ ﻭﻗﺘﺎ ﻓﻰ ﺍﺨﺘﺒﺎﺭ ﺠﻤل ﺍﻟﺸﺭﻁ
اﻟﻄﺮﯾﻘﺔ اﻟﺜﺎﻧﯿﺔ
) if ( condition
; 1 statement
) else if ( condition
; 2 statement
) else if ( condition
; 3 statement
ﻭﺘﻜﻭﻥ ﺼﻴﻐﺔ ﺍﻟﻤﺜﺎل ﺍﻟﺴﺎﺒﻕ ﻜﺂﻻﺘﻰ :
;5=I
) 5 < if ( i
; ) " 5 printf ( “ i less than
) 5 = else if ( i
; " 5 printf ( “ i equal to
) 5 > else if ( i
; ) " 5 printf ( " i greater than
ﺑﺮﻧﻠﻤﺞ : اﺷﺮح وﻇﯿﻔﺔ اﻟﺒﺮﻧﺎﻣﺞ ﻣﻊ إﯾﺠﺎد اﻟﻨﺎﺗﺞ إذا ﻛﺎﻧﺖ اﻟﻘﯿﻢ ٣١و٧ﻋﻠﻰ اﻟﺘﻮاﻟﻰ :-
> # include < stdio.h
) ( main
{
; 2float num1 , num
; char op
)1( while
{
; ) " printf ( “ type number , operator , number n
٥١ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 16. ــــــــــــــــــــــــC ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ
scanf ( “ % f % c % f ) , & num 1 , & op , & num 2 ) ;
if ( op = = ' + ' )
printf ( “ = % f " , num1 + num2 ;
else if ( op = = ' – ' )
printf ( “ = % f “ , num1 – num2 ;
else if ( op = = ' * ' )
printf ( " % f " , num1 * num2 ;
else if ( op = = ' / ' )
printf (“ = % f " , num1 / num2 ;
printf ( " n n " ) ;
}
}
Switch …. case ٢ - اﻟﺘﻔﺮﯾﻊ
ﻓﻰ ﺍﺨﺘﺒﺎﺭ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﻋﺒﺎﺭﺍﺕ ﻤﻌﻴﻨﺔ ﻤﻥ ﻋﺩﻴﺩ ﻤﻥ ﺍﻟﻤﺠﻤﻭﻋـﺎﺕ ﺍﻟﻤﺘﺎﺤـﺔ Switch ﺘﺘﺴﺒﺏ ﻋﺒﺎﺭﺓ
Switch ﻟﻼﺴﺘﺨﺩﺍﻡ . ﻭﻴﻌﺘﻤﺩ ﺍﻻﺨﺘﺒﺎﺭ ﻋﻠﻰ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺤﺎﻟﻴﺔ ﻟﺘﻌﻴﻴﺭ ﻤﻭﺠﻭﺩ ﺩﺍﺨل ﻋﺒﺎﺭﺓ
Switch ….. case ﺗﻤﺮﯾﻦ : ﺘﻌﺩﻴل ﺒﺭﻨﺎﻤﺞ ﺍﻵﻟﺔ ﺍﻟﺤﺎﺴﺒﺔ ﺍﻟﺴﺎﺒﻌﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ
#include < stdio.h>
main ( ) /* void main(void) */
{
float num1,num2;
char ch,op;
do
{
printf( “in type num1 op num2: “ ) ;
scanf( “%f %c %f “, &num1,&op,&num2);
switch (op)
{
case “+”;
printf ( "sum = %f ", num1+num2);
break;
case “-”;
printf ( "sub = %f ", num1-num2);
break;
١٦ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 17. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
;”*“ case
;)2printf ( "mul = %f ", num1*num
;break
;”/“ case
;)2printf ( "div = %f ", num1/num
;break
:default
;)”. printfn unknowen operator
}
;)“ :)printf(“n Again (y/n
}
:) ’while (( ch=getch())== ‘y
}
ﻣﻼﺣﻈ ﺔ : ﻤﻥ ﺍﻟﺘﻁﺒﻴﻘﺎﺕ ﺍﻟﻤﺸﻬﻭﺩﺓ ﻻﺴﺘﺨﺩﺍﻡ ﺍﻟﺘﻔﺭﻴﻊ switch ….. caseﻫﻭ ﺍﺴﺘﺨﺩﺍﻤﻪ ﻓـﻰ ﻗـﻭﺍﺌﻡ
ﺍﻻﺨﺘﻴﺎﺭﺍﺕ ) ( menu
ﺘﺴﺘﺨﺩﻡ ﻋﺒﺎﺭﺓ breakﻓﻰ ﺍﻨﻬﺎﺀ ﺩﻭﺭﺍﺕ ﺍﻭ ﺍﻟﺨﺭﻭﺝ ﻤﻥ switch
٣( اﻟﺘﻔﺮﯾﻎ ﻏﯿﺮ اﻟﻤﺸﺮوط goto
ﻤﻌﻨﺎﻩ ﺍﻻﻨﺘﻘﺎل ﺍﻟﻰ ﻤﻜﺎﻥ ﻤﺤﺩﺩ ﺩﺍﺨل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺩﻭﻥ ﺸﺭﻙ
>#include <stdio.h
) (main
{
;char ss
:ss
;)”printf(“t ALLAH
;goto ss
}
ﻣﻼﺣﻈﺎت : - ﻻ ﻨﻨﺼﺢ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺠﻤﻠﺔ gotoﻭﻴﻔﻀل ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺩﻭﺍل ﻟﺘﻐﻴﻴﺭ ﻤﺴﺎﺭ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ
- ﻟﻠﺨﺭﻭﺝ ﻤﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺴﺎﺒﻕ ﺃﻀﻐﻁ CTRL+C
** دوال ﺗﺤﺴﯿﻦ اﻟﻤﺪﺧﻼت واﻟﻤﺨﺮﺟﺎت **
)١( داﻟﻪ ﻣﺴﺢ اﻟﺸﺎﺷﺔ ) ( : clrscrﻣﻠﻒ اﻟﺘﻮﺟﯿﻪ conio.h
- ﺘﺴﺘﺨﺩﻡ ﻟﻤﺴﺢ ﺍﻟﺸﺎﺸﺔ ﻭﻭﻀﻊ ﺍﻟﻤﺅﺸﺭ ﻓﻰ ﺃﻭل ﻋﻤﻭﺩ ﻤﻥ ﺍﻟﺼﻑ ﺍﻷﻭل ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ
) (clrscr - ﺍﻟﺸﻜل ﺍﻟﻌﺎﻡ
)٢( داﻟﻪ ﺗﻐﯿﯿﺮ ووﺿﻊ اﻟﻤﺆﺷﺮ ) ( : gotoxyﻣﻠﻒ اﻟﺘﻮﺟﯿﻪ conio
٧١ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 18. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
- ﺘﺴﺘﺨﺩﻡ ﻟﻭﻀﻊ ﺍﻟﻤﻭﺸﺭ ﻓﻰ ﺍﻟﻌﻤﻭﺩ xﻤﻥ ﺍﻟﺼﻑ y
) (gotoxy - ﺍﻟﺸﻜل ﺍﻟﻌﺎﻡ
ﻤﺜﺎل : ﺍﻻﻨﺘﻘﺎل ﺒﺎﻟﻤﺅﺸﺭ ﺍﻟﻰ ﺍﻟﻌﻤﻭﺩ 03 ﻤﻥ ﺍﻟﺼﻑ ﺍﻟﻌﺎﺸﺭ ﺃﻜﺘﺏ )01,03(gotoxy
)٣( داﻟﻪ ﺗﻐﯿﯿﺮ ﻟﻮن اﻟﻜﺘﺎﺑﺔ ) ( : textcolorﻣﻠﻒ اﻟﺘﻮﺟﯿﻪ conio.h
- ﺘﺴﺘﺨﺩﻡ ﻟﺘﻐﻴﻴﺭ ﻟﻭﻥ ﺍﻟﻜﺘﺎﺒﺔ ﺍﻟﺘﻰ ﺴﺘﻁﺒﻊ ﺒﻌﺩ ﺍﻟﺩﺍﻟﻪ
- ﺍﻟﺼﻭﺭﺓ ﺍﻟﻌﺎﻤﻪ
)textcolor(color no
ﺃﻭ
)textcolor(color name
ﺤﻴﺙ ﻴﺘﻡ ﺘﺤﺩﻴﺩ ﺍﻟﻠﻭﻥ ﺇﻤﺎ ﺒﺭﻗﻡ ﺍﻟﻠﻭﻥ ﺃﻭ ﺒﺎﺴﻤﻪ . ﻭﻻ ﺒﺩ ﻤﻥ ﻜﺘﺎﺒﺔ ﺍﺴﻡ ﺍﻟﻠﻭﻥ ﺒﺎﻟﺤﺭﻑ ﺍﻟﻜﺒﻴﺭﺓ ﻓﻘﻁ
اﻟﺠﺪول اﻟﺘﺎﻟﻰ ﻟﻮﺿﻊ اﻛﻮاد اﻷﻟﻮان وأﺳﻤﺎﻫﺎ
ﺎﺳﻢ اﻟﻠﻮ ﻧ ﺮﻗﻢ اﻟﻠﻮ ﻧ ﺎﻟﻠﻮ ﻧ
BLACK 0 ﺍﺴﻭﺩ
BLUE ١ ﺍﺯﺭﻕ
GRCEN ٢ ﺃ ﺨﻀ ﺭ
CYAN ٣ ﺴﻤﺎﻭﻱ
RED ٤ ﺃﺤﻤﺭ
MAGENTA ٥ ﺒﻨﻔﺴﺠﻲ
BROWN ٦ ﺒﻨﻲ
LIGHTGRAY 7 ﺭﻤﺎﺩﻱ ﻓﺎﺘﺢ
DARKGRAY ٨ ﺭﻤﺎﺩﻱ ﻏﺎﻤﻕ
LIGHBLUE ٩ ﺍﺯﺭﻕ ﻓﺎﺘﺢ
LIGHTGREEN ٠١ ﺃﺨﻀﺭ ﻓﺎﺘﺢ
LIGHTRED ١١ ﺴﻤﺎﻨﻲ ﻓﺎﺘﺢ
LIGHTRED ٢١ ﺃﺤﻤﺭ ﻓﺎﺘﺢ
٨١ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 19. ــــــــــــــــــــــــC ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ
LIGHTMAGENTA ١٣ ﺒﻨﻔﺴﺠﻲ ﻓﺎﺘﺢ
YELLOW ١٤ ﺃﺼﻔﺭ
WHITG ١٥ ﺃﺒﻴﺽ
: ﻣﺴﺎﺋﻞ
١- اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻹﻳﺠﺎد ﺟﻤﻠﺔ ﻣﺒﻠﻎ ﻣﺎ اوﺪﻋ ﻓﻰ ﺑﻨﻚ ﻟﻤﺪة ٠٢ ﺳﻨﺔ ﺑﻔﺎﺋﺪة
: ٦% ﻟﻤﺒﻠﻎ ٠٠١ $ واﻟﻤﻌﺎدﻟﺔ ﻛﻤﺎ ﻳﻠﻰ
f=p(1+i)n
ﻣﻌﺪل اﻟﻔﺎﺋﺪةI اﻟﻤﺒﻠﻎp ﻋﺪد اﻟﺴﻨﻮﺎ ﺗn :ﺣﯿﺚ
** ** اﻟﺒﺮﻧﺎﻣﺞ
#include <stdio.h>
#include <math.h>
main()
{
float p,r,n,i,f;
/* read input data */
printf( “please enter a value for the princepal (p) : “ );
scanf(“%f” k &p);
printf(“please enter a value for the interest rate( r) : “ );
scanf(“%f”, &r);
printf(“please enter a value for the number or year ( n) : “ );
scanf(“%f”, &n);
/*calculate i , then f */
i=r/100
f=p*pow((1+i),n);
/* write output */
١٩ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 20. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
;)printf( “n the final value (f) is : %2f n”,f
}
٢- اﻛﺘــﺐ ﺑﺮﻧــﺎﻣﺞ ﻹﻳﺠــﺎد اﻟﺠــﺬور اﻟﺤﻘﯿﻘﯿــﺔ ﻟﻤﻌﺎدﻟــﺔ ﻣــﻦ اﻟﺪرﺟــﺔ اﻟﺜﺎﻧﯿــﺔ
0 = ax2 + bx +c ﺑﻤﻌﻠﻮﻣﯿﺔ
وﺑﺎﺳﺘﺨﺪﺎ ﻣ اﻟﺼﯿﻐﺔ
=X − b b 2
− 4 ac
2 a
** ﺍﻟﺒﺭﻨﺎﻤﺞ **
># include <stdio.h
># include < math.h
/* /* real roots of a quadratic equation
) (main
{
;2float a,b,c,d,x1,x
/* /* read input data
;) “ =printf(“a
;)scanf(“%f”,&a
;) “ =printf(“b
;)scanf(“%f”,&b
;) “ =printf(“c
;)scanf(“%f”,&c
/* /* carry out the calculations
;)d=sqrt(b*b – 4*a*c
٠٢ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 21. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
;)x1=(-b+d)/(2*a
;)x2=(-b-d)/(2*a
/* /* write output
printf(“x1= “,%e ;)2x2=%e “,x1,x
}
ﻣﻼﺣﻈﺔ :
: %eﺘﺴﺘﺨﺩﻡ ﻟﻠﻌﺩ ﺍﻟﺤﻘﻴﻘﻰ ﺒﺎﻟﺼﻭﺭ ﺍﻷﺴﻴﺔ
٣- اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ ﻟﺘﻘﻮﻳﻢ ﻛﺜﯿﺮة اﻟﺤﺪود
1− x 5 1− 1 x −1 2 1 x −1 3 1 x −1 4 1 x
(=y ( +) ( + ) ( + ) ( + ) )
x 2 x 3 x 4 x 5 x
1− x
(= u ) *ﺘﻤﻬﻴﺩ:- ﻟﺘﺒﺴﻴﻁ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻴﺘﻡ ﻭﻀﻊ ﺍﻟﻤﺘﻐﻴﺭ
x
2 u 3 u 4 u 5 u
+ = y + + +
2 3 4 5
** ﺍﻟﺒﺭﻨﺎﻤﺞ **
># include<stdio.h
># include<math.h
) (main
{
;float u,x,y
/* /* read input data
;) “ = printf (“ x
;) scanf(“ %f “,&x
/* /* carry out the calculations
;u= (x –1)/x
;5/).5,y=u+pow(u,2.)/2+pow(u,3.)/3+poe(u,4.)/4+pow(u
١٢ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 22. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
printf(“x= “,%f ;) y =”%f “, x,y
}
٤- ﺑﺮﻧﺎﻣﺞ ﻹدﺧﺎل ﻛﻠﻤﺔ ﺳﺮ
># include<stdio.h
># include<conio.h
) (main
{
;]01[char pass
do
{
;) “ :printf(“n enter password
;)scanf(“%s”,pass
}
;)0=!)”while(strcmp(pass,”dahe
}
ﻤﻼﺤﻅﺎﺕ:
• ﻫﻨﺎ ﻜﻠﻤﺔ ﺍﻟﺴﺭ ﺴﻭﻑ ﺘﻅﻬﺭ ﺃﺜﻨﺎﺀ ﺍﻟﻜﺘﺎﺒﺔ
• ﺍﻟﺩﺍﻟﺔ ) ( : strcmpﺘﻘﻭﻡ ﺒﻤﻘﺎﺭﻨﻪ ﻤﺘﻐﻴﺭﻴﻥ ﻤﻥ ﻨﻭﻉ ﻋﺒﺎﺭﺓ ﺤﺭﻓﻴﺔ stringﻓﺈﺫﺍ ﻜـﺎﻥ ﺍﻟﻤﺘﻐﻴـﺭﻴﻥ
ﻤﺘﻁﺎﺒﻘﻴﻥ ﻜﺎﻥ ﺍﻟﻔﺭﻕ ﺒﻴﻨﻬﻤﺎ ﺼﻔﺭ
ﺗﻌﺪﻳﻞ ﻟﺒﺮﻧﺎﻣﺞ ﻛﻠﻤﺔ اﻟﺴﺮ:-
) ﻋﺪم ﻇﮫﻮر ﻛﻠﻤﺔ اﻟﺴﺮ اﻟﺘﻰ ﻳﻜﺘﺒﮫﺎ اﻟﻤﺴﺘﺨﺪم ﻋﻠﻰ اﻟﺸﺎﺷﺔ (
># include<stdio.h
># include<conio.h
٢٢ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 23. ــــــــــــــــــــــــC ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ
main( )
{
chat ch;
char pass[10];
do
{
textcolor(WHITE);
textbackground(BLUE);
cprintf(“n enter password: “ );
textbackgrounf(WHITE);
cscanf(“%s”,pass);
}
while(strcmp(pass,”dahe”)!=0);
}
:اﻛﺘﺐ ﺑﺮﻧﺎﻣﺞ
ﻟﻄﺒﺎﻋﺔ ﻋﺒﺎرة ﺣﺮﻓﯿﺔ ﺗﻢ ادﺧﺎﻟﮫﺎ ﻣﻊ ﺑﯿﺎن ﻋﺪد ﺣﺮوﻓﮫﺎ وﻋﺪد اﻟﻜﻠﻤﺎت
/* count characters and word in a phrase ﻋﺒﺎﺭﺓtyped in */
# include <stdio.h>
main( )
{
int charcnt=0;
int wordcnt=0;
char ch;
printf(“ type in a phrase : n “);
/* read characters and quit loop on [ return ] */
while((ch=getche())!=’r’);
{
charcnt ++ /* count character */
if(ch==’ ‘ ); /* space ? */
wordcnt++;
}
printf(“n character count is %d “,charcnt );
printf(“n word count is %d “ , wordcnt );
}
ﺗﺬﻛـــﺮ
ﺎﺳﺘﺨﺪام اﻟﺪاﻟﺔ ﻋﻨﺪﻣﺎ ﺗﺮﯾﺪ
printf( ) ﻁﺒﺎﻋﺔ ﺤﺭﻭﻑ ﺍﻭ ﺃﺭﻗﺎﻡ
٢٣ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 24. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
) (puts ﻁ ﺒ ﺎ ﻋ ﺔ ﻋ ﺒ ﺎ ﺭﺍ ﺕ ﺤ ﺭ ﻓ ﻴ ﺔ ﻓ ﻘ ﻁ
) (scanf ﺍﺩﺨﺎل ﺤﺭﻭﻑ ﺍﻭ ﺃﺭﻗﺎﻡ
) (gets ﺍﺩﺨﺎل ﻋﺒﺎﺭﺍﺕ ﺤﺭﻓﻴﺔ
)(getch ﺍﺩﺨﺎل ﺤﺭﻑ ﺩﻭﻥ ﺇﻅﻬﺎﺭﻩ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ
) (getche ﺍﺩﺨﺎل ﺤﺭﻑ ﻤﻪ ﺍﻅﻬﺎﺭﻩ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ
) (clrscr ﻤﺴﺢ ﺍﻟﺸﺎﺸﺔ
) (gotoxy ﺘﻐﻴﻴﺭ ﻤﻭﻀﻊ ﺍﻟﻤﺅﺸﺭ
) (textcolor ﺘﻐﻴﻴﺭ ﺃﻟﻭﺍﻥ ﺍﻟﻜﺘﺎﺒﺔ
) (textbackground ﺘﻐﻴﻴﺭ ﺃﻟﻭﺍﻥ ﺨﻠﻔﻴﺔ ﺍﻟﻜﺘﺎﺒﺔ
cprintf( ) , cputs ﺍﻟﻁﺒﺎﻋﺔ ﺒﺎﻷﻟﻭﺍﻥ ﻋﻠﻰ ﺍﻟﺸﺎﺸﺔ
cscanf( ), cgets ﺍﺩﺨﺎل ﺍﻟﺒﻴﺎﻨﺎﺕ ﺒﺎﻷﻟﻭﺍﻥ
اﻟـــــﺪوال FUNCTION
ا ﻟ و ﻻ ﻓﻰ ﻟﻐﺔاﻟ ــ Cﻧﻮﻋﯿﻦ :-
ﺪ
)١( ﺩﻭﺍل ﺍﻟﻠﻐﺔ Built in Functionﻭﻫﻰ ﺍﻟﺩﻭﺍل ﺍﻟﻘﻴﺎﺴﻴﺔ ﻤﺜل ﺩﺍﻟﺔ ) ( printfﺃﻭ ﺩﺍﻟﺔ ) (scanf
ﻭﻫﻰ ﺩﻭﺍل ﻋﺎﻤﺔ ﻴﺴﺘﻁﻴﻊ ﺍﻯ ﻤﺒﺭﻤﺞ ﺍﺴﺘﺨﺩﺍﻤﻬﺎ
)٢( ﺩﻭﺍل ﺍﻟﻤﺴﺘﺨﺩﻡ ﺍﻟﻤﺒﺘﻜﺭﺓ -:User Function
- ﻭﻫﻰ ﺍﻟﺩﻭﺍل ﺍﻟﺘﻰ ﻤﻥ ﻭﻀﻊ ﺍﻟﻤﺒﺭﻤﺞ
- ﻭﺍﻟﻬﺩﻑ ﻤﻨﻬﺎ : ﺍﻨﻪ ﻋﻨﺩ ﺘﻜﺭﺍﺭ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺴﻁﻭﺭ ﺍﻷﻭﺍﻤﺭ ﺍﻜﺜﺭ ﻤﻥ ﻤﺭﺓ ﻓﻰ ﻤﻭﺍﻀﻊ ﻤﺨﺘﻠﻔﺔ ﻓـﺈﻥ
ﺃﻭﺍﻤﺭ ﺍﻟﺘﻜﺭﺍﺭ ﻟﻥ ﺘﻜﻭﻥ ﺫﺍﺕ ﻤﻨﻔﻌﺔ . ﻭﻟﺫﻟﻙ ﻴﺘﻡ ﻜﺘﺎﺒﺔ ﻫﺫﻩ ﺍﻟﺴﻁﻭﺭ ﻤﻨﻔﺼﻠﺔ ﻋﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻷﺴﺎﺴﻰ
ﻣ ﺰﻳﺎ اﺳﺘﺨﺪﺎ ﻣ اﻟﺪ ﻻ
و ا
١- ﻋﺩﻡ ﺘﻜﺭﺍﺭ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺩﺍﺨل ﺍﻟﺒﺭﻨﺎﻤﺞ : ﺤﻴﺙ ﻴﺘﻡ ﺇﻨﺸﺎﺀ ﺍﻟﺩﺍﻟﺔ ﻤﺭﻭ ﻭﺍﺤﺩﺓ ﺜﻡ ﻴﺘﻡ ﺍﺴﺘﺩﻋﺎﺌﻬﺎ ﺃﻜﺜﺭ ﻤﻥ
ﻤﺭﺓ ﻋﻨﺩ ﺍﻟﺤﺎﺠﺔ ﺇﻟﻴﻬﺎ
ﹰ
٢- ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺩﻭﺍل ﻴﺼﺒﺢ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺃﻜﺜﺭ ﻭﻀﻭﺤﺎ
ﺍﻟﺼﻭﺭ ﺍﻟﻌﺎﻤﺔ:
># include < filename
;function declarations
) (main
{
٤٢ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 25. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
1function
2function
}
1function
{
------
------
}
2function
{
------
------
}
أﺬ ﻧ ﺗﺘﻜﻮن اﻟﺪاﻟﺔ ﻣﻦ :-
)٢( ﺟﺴﻢ اﻟﺪاﻟﺔ )١( اﻹﻋﻼن ﻋﻦ اﻟﺪاﻟﺔ
ﻣﺜﺎل : داﻟﺔ ﺑﺪﻮ ﻧ دﻟﯿﻞ
>#include <stdio.h
>#include<conio.h
;)void line2(void
) (main
{
) (clrscr
) (2line
;)“ printf(“ ** Allah the god of all world ** n
) (2line
/* /* end of main( ) function
}
)void line2(void
{
;int j
;)++for(j=0;j<=40;j
;)“ * “ (printf
;)“ printf(“n
}
ﻓﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺴﺎﺒﻕ ﺃﻨﺸﺄﻨﺎ ﺩﺍﻟﺔ ﺒﺎﻻﺴﻡ ) (2 lineﻭﻗﺩ ﻅﻬﺭﺕ ﻜﻠﻤﺔ ) (2 lineﻓﻰ ﺜﻼﺙ ﻤﻭﺍﻀﻊ :-
٥٢ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 26. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
اﻟﻤﻮﺿﻊ اﻷول : ﻴﺴﻤﻰ ﺍﻷﻋﻼﻥ ﻋﻥ ﺍﻟﺩﺍﻟﺔ function declarationﻴﻜﻭﻥ ﺫﻟﻙ ﻗﺒل ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ
) ( mainﻜﻤﺎ ﻓﻰ ﺍﻟﺴﻁﺭ ﺭﻗـــﻡ ٣ ﻭﻨﻼﺤﻅ ﺍﻟﻔﺎﺼﻠﺔ ﺍﻟﻤﻨﻘﻭﻁﺔ ﻓﻰ ﻨﻬﺎﻴﺔ ﺍﻟﺠـﺯﺀ
ﻷﻨﻪ ﺃﻋﻼﻥ.
اﻟﻤﻮﺿ ﻊ اﻟﺜ ﺎﻧﻰ : ﺩﺍﺨل ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ) ( mainﻭﻴﻅﻬﺭ ﻓﻰ ﺃﻯ ﻤﻜﺎﻥ ﺩﺍﺨل ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ﻭﻴﺴﻤﻰ
function colingﺃﻯ ﺍﺴﺘﺩﻋﺎﺀ ﺍﻟﺩﺍﻟﺔ ﻭﻴﻜﻭﻥ ﺒﺎﻟﺸﻜل ) (2 lineﻜﻤﺎ ﻓـﻰ ﺍﻟﺴـﻁﺭ
٧ﻭ٩ ﻭﻓﻴﻪ ﻴﺘﻡ ﻜﺘﺎﺒﺔ ﺍﺴﻡ ﺍﻟﺩﺍﻟﺔ ﻓﻘﻁ ﺒﺩﻭﻥ ﻨـﻭﻉ ﻭﺇﺫﺍ ﻜـﺎﻥ ﻟﻬـﺎ ﻤﻌـﺎﻤﻼﺕ ﻨﻜﺘـﺏ
ﺍﻟﻤﻌﺎﻤﻼﺕ.
اﻟﻤﻮﺿ ﻊ اﻟﺜﺎﻟ ﺚ : ﻴﻜﺘﺏ ﺒﻌﺩ ﺍﻨﺘﻬﺎﺀ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ) ( .mainﻭﻫﺫﺍ ﺍﻟﺠﺯﺀ ﻴﺴـﻤﻰ ﺘﻌﺭﻴـﻑ ﺍﻟﺩﺍﻟـﺔ
function definitionﻭﻓﻴﻪ ﻴﺘﻡ ﻜﺘﺎﺒﺔ ﻤﺤﺘﻭﻴﺎﺕ ﺍﻟﺩﺍﻟﺔ . ﻭﺘﺒﺩﺃ ﻓﻰ ﺍﻟﺒﺭﻨـﺎﻤﺞ ﻤـﻥ
ﺍﻟﺴﻁﺭ ﺭﻗﻡ ١١ ﺒﺎﺴﻡ ﺍﻟﺩﺍﻟﺔ ﺜﻡ ﺒﺎﻟﻘﻭﺱ { ﻭﻜﺎﻨﻬﺎ ﺒﺭﻨﺎﻤﺞ ﻭﻨﺒﺩﺃ ﻜﺘﺎﺒﺔ ﺘﻌﻠﻴﻤﺎﺕ ﺍﻟﺩﺍﻟـﺔ
ﺒﻌﺩ ﺍﻟﻘﻭﺱ ﺜﻡ ﻨﻨﺘﻬﻰ ﺒﺎﻟﻘﻭﺱ }
** Function Type ** أﻮﺎ ﻋ اﻟﺪ ﻻ
و ﻧ
int function ﺩﻭﺍل ﺘﻌﻴﺩ ﻗﻴﻤﺔ ﺼﺤﻴﺤﺔ
float function ﺩﻭﺍل ﺘﻌﻴﺩ ﻗﻴﻤﺔ ﺤﻘﻴﻘﻴﺔ
string function ﺩﻭﺍل ﺘﻌﻴﺩ ﻋﺒﺎﺭﺓ ﺤﺭﻓﻴﺔ
void function ﺩﻭﺍل ﻻ ﺘﻌﻴﺩ ﺍﻯ ﻗﻴﻤﺔ
struct function ﺩﻭﺍل ﺘﻌﻴﺩ ﻗﻴﻤﺔ ﻤﻥ ﻨﻭﻉ structure
ﺗﻤﺮﻳﻦ :
># include <stdion.h
) int sum(int a, int b ﺍﻻﻋﻼﻥ ﻋﻥ ﺍﻟﺩﺍﻟﺔ
) (main
{
;04 = int z , x = 10 , y
;)z = sum(x,y
;) printf(“nn z = %d “ , z
}
/* ﺍﻟﺩﺍﻟﺔ */
) int sum(int a , int b
{
٦٢ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 27. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
;int s
;s=a+b
;return s
}
** ﻣﻼﺣﻈﺎت ﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ **
- ﻓﻰ ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٢ ﺘﻡ ﺍﻻﻋﻼﻥ ﻋﻥ ﺩﺍﻟﺔ ﺒﺎﻻﺴﻡ ) ( sumﻭﺴﺒﻘﺕ ﺒﺎﻟﻜﻠﻤﺔ intﻭﻫـﻰ ﻨـﻭﻉ ﺍﻟـﺩﻭﺍل
ﻭﺘﻘﺎﺒل ﻜﻠﻤﺔ voidﻤﻊ ﻤﻼﺤﻅﺔ ﻭﺠﻭﺩ ﻤﺘﻐﻴﺭﻴﻥ ﺒﻴﻥ ﺍﻷﻗﻭﺍﺱ ﻭﻫﻤﺎ ﻤﻌﺎﻤﻼﺕ ﺍﻟﺩﺍﻟﺔ.
- ﻓﻰ ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٦ ﻴﺘﻡ ﺍﺴﺘﺩﻋﺎﺀ ﺍﻟﺩﺍﻟﺔ ﻭﺒﻴﻥ ﺃﻗﻭﺍﺴﻬﺎ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ x ,yﻭﻴﺴﺘﺨﺩﻤﺎﻥ ﻜﻤﻌـﺎﻤﻼﺕ ﻟﻠﺩﺍﻟـﺔ
)ﻻﺒﺩ ﻤﻥ ﻜﺘﺎﺒﺔ ﻤﻌﺎﻤﻼﺕ ﺍﻟﺩﺍﻟﺔ ﻷﻨﻨﺎ ﺃﻋﻠﻨﺎ ﻋﻨﻬﺎ ﺒﻬﺫﻩ ﺍﻟﺼﻭﺭﺓ (
- ﺘﺸﻤل ﺍﻟﺴﻁﻭﺭ ﻤﻥ ٩ ﺍﻟﻰ ٤١ ﻋﻠﻰ ﺠﻤل ﺍﻟﺩﺍﻟﺔ ﻨﻔﺴﻬﺎ :-
• ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٩ ﻨﻌﻭﺽ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭ aﺒﺎﻟﻘﻴﻤﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻰ ﺍﻟﻤﺘﻐﻴﺭ xﻭﻫﻰ ﺍﻟﻘﻴﻤـﺔ ٠١. ﻜـﺫﻟﻙ
ﻨﻌﻭﺽ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭ bﺒﺎﻟﻘﻴﻤﺔ ﺍﻟﻤﻭﺠﻭﺩﺓ ﻓﻰ ﺍﻟﻤﺘﻐﻴﺭ yﻭﻫﻰ ٠٤.
• ﺍﻟﺴﻁﺭ ﺭﻗﻡ٢١ ﻨﺠﻤﻊ ﻤﺤﺘﻭﻴﺎﺕ ﻜﻼ ﻤﻥ ﺍﻟﻤﺘﻐﻴﺭ aﻭﺍﻟﻤﺘﻐﻴﺭ bﻭﻨﻀﻊ ﺍﻟﻨﺘﻴﺠﺔ ﻓﻰ ﻤﺘﻐﻴﺭ ﺠﺩﻴﺩ ﻫﻭ s
• ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٣١ ﻨﻁﻠﺏ ﺍﻋﺎﺩﺓ ﻤﺤﺘﻭﻴﺎﺕ ﺍﻟﻤﺘﻐﻴﺭ sﺍﻟﻰ ﻤﻜﺎﻥ ﺍﺴﺘﺩﻋﺎﺀ ﺍﻟﺩﺍﻟﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ ﻜﻠﻤﺔ return
• ﻨﻔﻬﻡ ﺍﻥ ﺠﻤﻠﺔ ) z = sum(x,yﺍﻟﻤﻭﺠﻭﺩﺓ ﺒﺎﻟﺴﻁﺭ ﺭﻗﻡ ٦ ﺘﻌﺎﺩل ﺍﻟﺠﻤﻠﺔ . z = s
ﻤﻼﺤﻅﺔ ﻫﺎﻤﺔ: ﻤﻌﻨﻰ ﺍﻟﺩﺍﻟﺔ ﻴﺘﻀﺢ ﻤﻥ ﺍﻟﻘﺎﻋﺩﺓ ﺍﻟﺘﻰ ﺘﻘﻭل ﺃﻥ ﻨﻭﻉ ﺍﻟﺩﺍﻟﺔ ﻴﺘﻭﻗﻑ ﻋﻠﻰ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﺭﺘﺠﻌـﺔ
ﻤﻥ ﺍﻟﺩﺍﻟﺔ.
ﻓﺈﺫﺍ ﻜﺎﻨﺕ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﺭﺘﺠﻌﺔ intﻜﺎﻥ ﻨﻭﻉ ﺍﻟﺩﺍﻟﺔ int
ﻭﺇﺫﺍ ﻜﺎﻨﺕ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻤﺭﺘﺠﻌﺔ floatﻜﺎﻥ ﻨﻭﻉ ﺍﻟﺩﺍﻟﺔ float
ﺃﻤﺎ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺘﻰ ﻻ ﺘﻌﻴﺩ ﻗﻴﻤﺔ)ﺍﻟﺩﺍﻟﺔ ﻻ ﺘﺸﺘﻤل ﻋﻠﻰ ﺠﻤﻠﺔ (returnﻓﺘﻜﻭﻥ ﻤﻥ ﻨﻭﻉvoid
** اﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ **
- ﻴﺘﻡ ﺍﺴﺘﺩﻋﺎﺀ ﺍﻟﺩﻭﺍل ﺍﻤﺎ ﺒﻤﻌﺎﻤﻼﺕ ﺍﻭ ﺒﺩﻭﻥ ﻤﻌﺎﻤﻼﺕ
- ﺘﻜﻭﻥ ﺍﻟﺩﺍﻟﺔ ﺒﺩﻭﻥ ﻤﻌﺎﻤﻼﺕ ﻤﺜل ﺍﻟﺩﺍﻟﺔ ) void line2(voidﺍﻯ ﻋﺩﻡ ﻜﺘﺎﺒﺔ ﻗﻴﻡ ﺒﻴﻥ ﺃﻗﻭﺍﺱ ﺍﻟﺩﺍﻟﺔ
* ﺒﺭﻨﺎﻤﺞ ﻴﻭﻀﺢ ﻜﻴﻔﻴﺔ ﺍﺴﺘﺩﻋﺎﺀ ﺍﻟﺩﺍﻟﺔ ﺒﻤﻌﺎﻤﻼﺕ *
># include < stdio.h
># include <conio.h
)void line3(int no
) (main
{
) (clrscr
;)03(3line
;)“ printf(“ ** Allah the god of all world ** n
;)07(3line
}
٧٢ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 28. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
/* ﺍﻟﺩﺍﻟﺔ */
)void line3(int no
{
;int j , no
) ++for(j = 0 ; j <= no ; j
;) “ * “(printf
;)”printf(“n
}
** ﻤﻼﺤﻅﺔ : ﺍﻟﺩﺍﻟﺔ ﻫﻨﺎ ﻟﻬﺎ ﻤﻌﺎﻤل ﻭﺍﺤﺩ ﻤﻥ ﻨﻭﻉ ﺼﺤﻴﺢ ﻭﻫﻭ .noﻭﻓﻰ ﻜل ﻤﺭﺓ ﻴـﺘﻡ ﺍﺭﺴـﺎل ﻗﻴﻤـﺔ
ﻤﺨﺘﻠﻔﺔ ﻟﻠﻤﻌﺎﻤل ﻭﺫﻟﻙ ﻋﻨﺩ ﺍﺴﺘﺩﻋﺎﺀ ﺍﻟﺩﺍﻟﺔ.
** اﺳﺘﺪﻋﺎء اﻟﺪاﻟﺔ ﺑﻤﺘﻐﯿﺮﺎ ﺗ **
- ﻤﻤﻜﻥ ﺍﺴﺘﺩﻋﺎﺀ ﺍﻟﺩﺍﻟﺔ ﺒﻤﻌﺎﻤﻼﺕ ﻤﻥ ﻨﻭﻉ ﻗﻴﻡ ﺜﺎﺒﺘﺔ ﻤﻭﺠﻭﺩﺓ ﺒﺎﻟﺒﺭﻨﺎﻤﺞ ﻨﻔﺴﻪ
- ﻭﺃﻴﻀﺎ ﻴﻤﻜﻥ ﺍﻥ ﺘﻜﻭﻥ ﻫﺫﻩ ﺍﻟﻤﻌﺎﻤﻼﺕ ﻤﺘﻐﻴﺭﺍﺕ ﺘﺴﺘﻘﺒل ﻗﻴﻤﻬﺎ ﻤﻥ ﺍﻟﻤﺴﺘﺨﺩﻡ ﺍﻭ ﻤﻥ ﺩﺍﺨل ﺍﻟﺒﺭﻨـﺎﻤﺞ
ﻭﻫﺫﺍ ﻴﻔﻴﺩ ﻓﻰ ﺤﺎﻟﺔ ﺘﻐﻴﺭ ﻭﺍﺨﺘﻼﻑ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻓﻰ ﻜل ﻤﺭﺓ ) ﺇﻋﻁﺎﺀ ﻤﺭﻭﻨﺔ ﻓﻰ ﺍﻟﺘﻌﺎﻤل ﻤﻊ ﺍﻟﺒﺭﻨﺎﻤﺞ (
* ﺑﺮﻧﺎﻣﺞ ﻟﺘﺤﺪﻳﺪ اﻟﻜﻤﯿﺔ اﻷﻛﺒﺮ ﻣﻦ ﺛﻼث ﻛﻤﯿﺎت ﺻﺤﯿﺤﺔ
># include <stdio.h
/* /* determine the largest of three integer quantities
) (main
{
;int a, b, c, d
/* /* read the integer quantities
;)“ = printf(“n a
;) scanf( % d “ , &a
;)“ = printf(“n b
;) scanf( % d “ , &b
;)“ = printf(“n c
;) scanf( % d “ , &c
/* /* calculate and display the maximum value
;) d = maximum( a, b
;)) printf(“n n maximum = % d , maximum(c ,d
}
/* /* determine the larger of two integer quatities
) maximum(x ,y
٨٢ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 29. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
;int x ,y
{
;int z
;z = (x >= y ) ? x | y
;)return(z
}
ﻣﻼﺣﻈﺔ ﻫﺎﻣﺔ : ﻤﻥ ﻀﻤﻥ ﺃﻭﺍﻤﺭ ﺍﻟﺘﺤﻜﻡ ) ﻋﻼﻤﺔ ﺍﻻﺴﺘﻔﻬﺎﻡ ﺍﻟﺸﺭﻁﻴﺔ |? ( ﺤﻴﺙ :-
ﻋﺒﺎﺭﺓ testﺍﺨﺘﺒﺎﺭ - ) (x > = y
- ؟ ﻋﺒﺎﺭﺓ ﻋﻥ ﺴﺅﺍل if
- | ﻋﺒﺎﺭﺓ ﻋﻥ Else
ﺒﻤﻌﻨﻰ ﺇﺫﺍ ﻜﺎﻥ ﺍﻻﺨﺘﺒﺎﺭ ) (x >= yﺼﺤﻴﺤﺎ ﻴﺄﺨﺫ ﺍﻟﻘﻴﻤﺔ xﻭﺇﺫﺍ ﻜﺎﻨﺕ ﺍﻟﻘﻴﻤﺔ ﻏﻴﺭ ﺼﺤﻴﺤﺔ ﻴﺄﺨﺫ
ﺍ ﻟ ﻘﻴ ﻤ ﺔ y
** ﺑﺎﺳﺘﺨﺪا م ا ﻟ و ﻻ أﻛﺘﺐﺑﺮ ﻧ ﻣﺞ
ﺎ ﺪ
ﻟﺘﺤﻮﻳﻞ اﻟﺴﺎﻋﺎت إﻟﻰ دﻗﺎﺋﻖ ﻣﻊ إﻳﺠﺎد اﻟﻔﺮق
># include<stdio.h
/* /* calculates difference between two times
) (main
{
;2int mins1 , mins
;) “ :) 22:3 printf(“ type first time ( from
;)(mins1=getmins
;) “ printf(“ type second(later) time
;)(mins2=getmins
;)1printf(“ Difference is %d minutes.” , mins2-mins
}
/* /* getmins function
/* /* gets time in hours : minutes formal
/* /* return time in minutes
) (getmins
{
;int hours, minuts
;)scanf(“ %d : %d “, &hours , &minutes
;)return(hours * 60 + minutes
}
* اﻵﺗﻰ ﺑﺮﻧﺎﻣﺞ ﻳﺴﺘﻌﻤﻞ داﻟﺔ ﻣﻦ ﻧﻮع intﺗﺘﻜﻮن ﻣﻦ داﻟﺘﯿﻦ :-
- ﺩﺍﻟﺔ ﻟﺤﺴﺎﺏ ﻤﺭﺒﻊ ﺍﻟﻘﻴﻤﺔ ﻭﺇﻋﺎﺩﺓ ﺤﺎﺼل ﺍﻟﻀﺭﺏ ﺍﻟﻰ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ
٩٢ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 30. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
ﺩﺍﻟﺔ ﺘﺤﺴﺏ ﻨﻜﻌﺏ ﻗﻴﻤﺔ ﻭﺘﻌﻴﺩﻫﺎ ﻋﻨﺩ ﺍﻻﺴﺘﺩﻋﺎﺀ -
># include < stdio.h
:)int sqr(int a
:)int qup(int q
) (main
{
;01= int s , qu , no
;)s = aqr(no
;)qu = qup(no
:) printf(“n squer of no = %d “ , s
:) printf(“n qupic of no = %d “ , qu
}
)int sqr(int a
{
;1int v
;v1= a*a
;1return v
}
) int qup(int q
{
;2int v
;v2=q*q*q
;2return v
}
ﻨﺘﻴ ﺠ ﺔ ﺍ ﻟﺘﻨ ﻔﻴ ﺫ :
001 = squar of on
0001 = qupic of on
اﻵﺗـﻲ ﺑﺮﻧـﺎﻣﺞ ﻳﺴـﺘﻌﻤﻞ داﻟـﺔ ﻣـﻦ ﻧـﻮع floatﺗﻘـﻮم ﺑﺠﻤـﻊ رﻗﻤـﯿﻦ وإﻋـﺎدة
اﻟﻨﺘﯿﺠﺔ اﻟـﻰ اﻟﺪاﻟـﺔ اﻟﺮﺋﯿﺴـﯿﺔ ﻋﻨـﺪ اﻻﺳـﺘﺪﻋﺎء . واﻟﻘﯿﻤـﺔ اﻟﻤﺮﺗﺠﻌـﺔ ﻗﯿﻤـﺔ
ﺣﻘﯿﻘﯿﺔ floatوﻳﺎﻟﺘﺎﻟﻰ ﻳﻜﻮن ﻧﻮع اﻟﺪاﻟﺔ float
># include <stdio.h
># include < conio.h
) float add( float x , float y
) (main
{
;2float no1, no
;) : 2printf(“n enter no1 , no
:) 2scanf(“ %f ,%f “ , &no` ,&no
٠٣ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 31. ــــــــــــــــــــــــC ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ
printf(“n addition of number is %f”, add(no1,no2) );
}
float add(float x , float y );
{
float yt;
yt= x + y ;
return yt;
}
-: ﻋﻨﺩ ﺍﻟﺘﻨﻔﻴﺫ ﻨﺤﺼل ﻋﻠﻰ
Enter no1 ,no2 : 3,2 , 4,3
Addition of squares is 6.5
** اﻵﺗﻲ ﺑﺮﻧﺎﻣﺞ ﻹﻳﺠﺎد اﻟﻌﺪد ﻓﺮﺪى ﺄ ﻣ زوﺟﻰ وﻛﺬﻟﻚ ﻣﻮﺿﺤﺎ اﻟﻌـﺪد ﺳـﺎﻟﺐ
ﺄ ﻣ ﻣﻮﺟﺐ
# include < stdio.h>
/* tests use of external variables */
int keynumb;
main( )
/* external variables */
{
printf(“ type keynumb : “ );
scanf(“%d “ , &keynumb );
addeven( );
negative( );
}
/* checks if keynumb is odd or even */
oddeven( )
{
if (keynumb % 2 )
printf(“ keynumb is odd. n”);
else
printf( “ keynumb is even. n”);
}
٣١ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ
- 32. ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ Cــــــــــــــــــــــــ
/* /* checks if keynumb is nagative
) (ngative
{
) 0 < if (keynumb
;)”printf(“ keynumb is negative . n
else
;)”printf( “ keynumb is positive . n
}
اﻟﻤﺎﻛــــﺮو MACROS
ﻫﻭ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺘﻌﻠﻴﻤﺎﺕ ﺘﺅﺩﻯ ﻏﺭﺽ ﻤﻌﻴﻥ ﻭﻴﺸﺒﻪ ﺇﻟﻰ ﺤﺩ ﻜﺒﻴﺭ ﺍﻟﺩﺍﻟـﺔ functionﻭﻴـﺘﻡ ﺇﻨﺸـﺎﺀ
ﺍﻟﻤﺎﻜﺭﻭ ﻤﺭﺓ ﻭﺍﺤﺩﺓ ﻭﺒﻌﺩ ﺫﻟﻙ ﻴﻤﻜﻥ ﺍﺴﺘﺩﻋﺎﺌﻪ ﻜﻠﻤﺎ ﺍﺤﺘﺠﺕ ﺇﻴﻪ ) ﺃﻯ ﻴﺘﻡ ﺘﻌﺭﻴﻑ ﺍﻟﺜﻭﺍﺒـﺕ ﺍﻭ ﻋﻤﻠﻴـﺎﺕ
ﻤﺤﺩﺩﻩ ﻓﻰ ﺒﺩﺍﻴﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﺘﻜﻭﻥ ﻟﻬﺎ ﺼﻔﻪ ﺍﻟﻌﻤﻭﻤﻴﺔ ﻟﻼﺴﺘﺨﺩﺍﻡ ﺩﺍﺨل ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ﻭﺍﻟﺩﻭﺍل ﺍﻟﻔﺭﻋﻴﺔ (
ﺇﺫﻥ : ﺍﻟﻤﺎﻜﺭﻭ ﻤﻥ ﻀﻤﻥ ﺒﻨﺎﺀ ﺒﺭﻨﺎﻤﺞ ﻟﻐﺔ ﺍﻟـــ C
ﻛﯿﻔﯿﺔ إﻧﺸﺎء اﻟﻤﺎﻛﺮو :-
- ﻴﺘﻡ ﺫﻟﻙ ﺒﺎﺴﺘﻌﻤﺎل ﺍﻟﻜﻠﻤﺔ #define
- ﻭﻫﺫﻩ ﺍﻟﻜﻠﻤﺔ ﺘﺴﻤﻰ directiveﺍﻭ preprocessorﻭﻤﻌﻨﺎﻫﺎ ﺍﻟﺘﻭﺠﻴﻪ
# define macro line * اﻟﺼﻮرة اﻟﻌﺎﻣﺔ
#define a 5 ﻤﺜﻼ
ﻭﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﺘﻌﺭﻴﻑ ﻁﺭﻑ ﺒﻁﺭﻑ ﻭﻤﻌﻨﺎﻫﺎ ﻋﺭﻑ ﺍﻟﻤﺘﻐﻴﺭ aﺒﺎﻟﻘﻴﻤﺔ 5
ﺗﻤﺮﻳﻦ ﻳﻮﺿﺢ ﻛﯿﻔﯿﺔ اﻹﻋﻼن ﻋﻦ اﻟﻤﺎﻛﺮو وﻛﯿﻔﯿﺔ اﺳﺘﻌﻤﺎﻟﻪ
># include<stdio.h
# define sum(a,b) a+b
# define mul(x,y) x*y
) ( main
{
٢٣ ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ