SlideShare une entreprise Scribd logo
1  sur  70
Télécharger pour lire hors ligne
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬ﻭﺘﺒﺩﺃ ﺒﺎﻟﻘﻭﺱ { ﻭﺘﻨﺘﻬﻲ ﺒﺎﻟﻘﻭﺱ } .‬
                                             ‫- ﺠﻤﻴﻊ ﻜﻠﻤﺎﺕ ﻭﺩﻭﺍل ﺍﻟﻠﻐﺔ ﺘﻜﺘﺏ ﺒﺎﻟﺤﺭﻭﻑ ﺍﻟﺼﻐﻴﺭﺓ .‬
                                                       ‫- ﺘﻨﺘﻬﻲ ﻜل ﻋﺒﺎﺭﺓ ﺒﻔﺎﺼﻠﻪ ﻤﻨﻘﻭﻁﺔ ) ; (‬
‫- ﻴﺠﻭﺯ ﻜﺘﺎﺒﺔ ﺃﻯ ﻤﻼﺤﻅﺎﺕ ﺃﻭ ﺘﻌﻠﻴﻘﺎﺕ ﺨﺎﺼﺔ ﺒﺎﻟﺒﺭﻨﺎﻤﺞ ﺒﻭﺼﻔﻬﺎ ﺒﻴﻥ ﺍﻟﻌﻼﻤﻴﻥ /* */ ﻷﻯ ﻋﺩﺩ ﻤـﻥ‬
                                                                                    ‫ﺍﻟﺴﻁﻭﺭ‬
                                               ‫∴ ﺠﺴﻡ ﺍﻟﺩﺍﻟﺔ ﻴﻭﻀﻊ ﻤﺎ ﺒﻴﻥ ﺍﻷﻗﻭﺍﺱ } {‬




       ‫١‬        ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬

          ‫٢‬         ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬


       ‫٣‬         ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬
             ‫ﺎﻟﻤﺜﺎ ﻟ‬                                        ‫ﺎﻻﺳﺘﺨﺪام‬                          ‫اﻟﻜﻮد‬

       ‫٤‬         ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ C‬ــــــــــــــــــــــــ‬
‫) “ ‪printf ( " n‬‬                                         ‫ﺍﻻﻨﺘﻘﺎل ﺍﻟﺴﻁﺭ ﺍﻟﺠﺩﻴﺩ ‪new line‬‬           ‫‪n‬‬
‫) “ ‪print f ( " t‬‬                                      ‫ﻨﻘل ﺍﻟﻤﺅﺸﺭ ﺒﻌﺩ ٨ ﻤﺴﺎﻓﺎﺕ ) ‪( Tap‬‬            ‫‪t‬‬
‫) " ‪print f ( " b‬‬                                 ‫ﺇﺭﺠﺎﻉ ﺍﻟﻤﺅﺸﺭ ﻤﺴﺎﻓﺔ ﺨﻠﻔﻴﺔ ‪Backspace‬‬             ‫‪b‬‬
‫‪ a‬ﻭﺍﻟﻨﺘﻴﺠﺔ : ) " 14‪printf ( “ 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‬‬
‫; ) “ 2‪printf ( " 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‬‬
‫- ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﺜﺎل ﻋﻨﺩﻤﺎ ﻴﻘﺎﺒل ﻤﺘﺭﺠﻡ ﺍﻟﻠﻐﺔ ﺍﻟﻌﻼﻤﺔ % ﻴﻨﻅﺭ ﺇﻟﻰ ﺍﻟﺤﺭﻑ ﺍﻟﺘﺎﻟﻰ ﻟﻬﺫﻩ ﺍﻟﻌﻼﻤﺔ . ﻭﻴﻌﺘﺒـﺭ‬
            ‫ﻫﺫﺍ ﺍﻟﺤﺭﻑ ﺘﻭﺼﻴﻑ ﻟﻘﻴﻤﺔ ﻤﻭﺠﻭﺩﺓ ﺒﻌﺩ ﺍﻟﻌﻼﻤﺔ ﻭﻜل ﺤﺭﻑ ﻴﺤﺩﺩ ﺘﻨﻭﻉ ﻤﻌﻴﻥ ﻤﻥ ﺍﻟﺒﻴﺎﻨﺎﺕ .‬




                                                ‫ﻭﺍﻟﺠﺩﻭل ﺍﻟﺘﺎﻟﻰ ﻴﻭﻀﺢ ﺃﻜﻭﺍﺩ ﻁﺒﺎﻋﺔ ﺃﻨﻭﺍﻉ ﺍﻟﺒﻴﺎﻨﺎﺕ :‬
              ‫ﻣﺜﺎ ﻟ‬                                    ‫ﺎﻻﺳﺘﺨﺪاﻣ‬                               ‫ﺎﻟﻜﻮد‬


        ‫٥‬             ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬

       ‫٦‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ C‬ــــــــــــــــــــــــ‬
            ‫• ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٣ ﺘﺒﺩﺃ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ) ( ‪ main‬ﺜﻡ ﺍﻟﺴﻁﺭ ٤ ﺘﺒﺩﺃ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ﺒﺎﻟﻘﻭﺱ {‬
                                               ‫• ﻓﻰ ﺍﻟﺴﻁﺭ ﺭﻗﻡ 5 , 6 , 7 ﺇﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ‬
            ‫• ﻓﻰ ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٨ ﺍﻹﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭ ‪ ch‬ﻤﻥ ﻨﻭﻉ ﺤﺭﻑ ) ‪ ( char‬ﻭﺇﻋﻁﺎﺌﻪ ﺍﻟﻘﻴﻤﺔ ‪y‬‬
‫• ﻓﻰ ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٩ ﺍﻹﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭ ‪ name‬ﻟﺘﺨﺯﻴﻥ ﻋﺒﺎﺭﺓ ﺤﺭﻓﻴﺔ ﻭﺇﻋﻁﺎﺌﻪ ﺍﻟﻘﻴﻤﺔ ﺍﻻﺒﺘﺩﺍﺌﻴﺔ ﻜﻠﻤـﺔ‬
                                                                                 ‫‪Aly‬‬
                           ‫• ﻓﻰ ﺍﻟﺴﻁﺭ ﺭﻗﻡ ٠١ ، ١١ ، ٢١ ﻹﻋﻁﺎﺀ ﻗﻴﻡ ﻟﻠﻤﺘﻐﻴﺭﺍﺕ ‪ A , B‬ﻭﻗﻴﻤﺔ ‪C‬‬
                   ‫• ﺜﻡ ﻁﺒﺎﻋﺔ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺜﻡ ﺘﻨﺘﻬﻰ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ﺒﺎﻟﻘﻭﺱ { ﻭﺒﺎﻟﺘﺎﻟﻰ ﻴﻨﺘﻬﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫ﻣﻼﺣﻈ ﺎت : ﺍﻟﺼﻭﺭﺓ ‪ : % 3F‬ﻴﻌﻨﻰ ﻁﺒﺎﻋﺔ ﺜﻼﺙ ﺃﺭﻗﺎﻡ ﺒﻌﺩ ﺍﻟﻌﻼﻤﺔ ﺍﻟﻌﺸﺭﻴﺔ ﻓﻤﺜﻼ ﺍﻟـﺭﻗﻡ 5376.435‬
                                                                        ‫ﻴﻅﻬﺭ ﺒﺎﻟﺼﻭﺭﺓ 476.435‬




                                                           ‫* داﻟﺔ اﻹدﺧﺎل اﻟﻌﺎﻣﺔ ) ( ‪*Scanf‬‬
‫ﻫﻰ ﺩﺍﻟﺔ ﺍﻹﺩﺨﺎل ﺍﻟﺭﺌﻴﺴﻴﺔ ﺍﻟﺘﻰ ﺘﺴﻤﺢ ﺒﺈﺩﺨﺎل ﺠﻤﻴﻊ ﺃﻨﻭﺍﻉ ﺍﻟﺒﻴﺎﻨﺎﺕ ﻭﻫﻰ ﺘﺄﺨﺫ ﻨﻔﺱ ﺍﻟﻤﻌﺎﻤﻼﺕ ﺍﻟﺘﻰ ﺘﺄﺨﺫﻫﺎ‬
                                                                              ‫ﺍﻟﺩﺍﻟﺔ ) ( ‪Print f‬‬
                                                                                           ‫ﻤﺜ ﺎ ل :‬

       ‫٧‬        ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬

         ‫٨‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬



       ‫٩‬        ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬ﻤﺭﻓﻭﻋﺔ ﺇﻟﻰ ﺍﻟﻘﻭﺓ 1‪d‬‬       ‫ﻤﺯﺩﻭﺝ‬      ‫) 2‪pow ( d1 , d‬‬
        ‫‪math.h‬‬                     ‫) ‪ labs ( e‬ﺼﺤﻴﺢ ﻁﻭﻴل ﺘﻌﻴﺩ ﻗﻴﻤﺔ ﻤﻁﻠﻘﺔ ﻟـ ‪l‬‬
        ‫‪math.h‬‬                             ‫ﺘﻌﻴﺩ ﺠﻴﺏ ‪d‬‬      ‫ﻤﺯﺩﻭﺝ‬  ‫) ‪sin ( d‬‬

       ‫٠١‬        ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ C‬ــــــــــــــــــــــــ‬
       ‫‪math.h‬‬                 ‫ﺘﻌﻴﺩ ﺍﻟﺠﺯﺭ ﺍﻟﺘﺭﺒﻴﻌﻰ ﻟـ ‪d‬‬       ‫ﻤﺯﺩﻭﺝ‬        ‫) ‪sqrt ( d‬‬
       ‫‪string.h‬‬          ‫ﺘﻨﺴﺦ ﺍﻟﺴﻠﺴﻠﺔ 2‪ s‬ﻓﻰ ﺍﻟﺴﻠﺴﻠﺔ 1‪s‬‬        ‫ﺤﺭﻑ‬         ‫) 2‪strcpy ( 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‬‬

      ‫١١‬          ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬
                                                     ‫}‬

       ‫٢١‬         ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬

      ‫٣١‬        ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬
  ‫}‬




       ‫٤١‬          ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬
‫{‬
‫; 2‪float num1 , num‬‬
‫; ‪char op‬‬
‫)1( ‪while‬‬
 ‫{‬
 ‫; ) " ‪printf ( “ type number , operator , number  n‬‬
       ‫٥١‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ ــــــــــــــــــــــــ‬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;

      ١٦      ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ C‬ــــــــــــــــــــــــ‬
‫;”*“ ‪case‬‬
‫;)2‪printf ( "mul = %f ", num1*num‬‬
‫;‪break‬‬
‫;”/“ ‪case‬‬
‫;)2‪printf ( "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‬‬

      ‫٧١‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬                                 ‫٢١‬                      ‫ﺃﺤﻤﺭ ﻓﺎﺘﺢ‬
  ‫٨١‬        ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ ــــــــــــــــــــــــ‬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 */
      ١٩      ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬
‫{‬
‫;2‪float 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‬‬
      ‫٠٢‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ C‬ــــــــــــــــــــــــ‬
‫;)‪x1=(-b+d)/(2*a‬‬
‫;)‪x2=(-b-d)/(2*a‬‬
‫/* ‪/* write output‬‬
‫‪printf(“x1= “,%e‬‬     ‫;)2‪x2=%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‬‬

      ‫١٢‬      ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬

      ‫٢٢‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ ــــــــــــــــــــــــ‬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( )                                 ‫ﻁﺒﺎﻋﺔ ﺤﺭﻭﻑ ﺍﻭ ﺃﺭﻗﺎﻡ‬

      ٢٣      ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬
‫{‬
       ‫٤٢‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ C‬ــــــــــــــــــــــــ‬
      ‫1‪function‬‬
      ‫2‪function‬‬
‫}‬

‫1‪function‬‬
‫{‬
‫------‬
‫------‬
‫}‬

‫2‪function‬‬
‫{‬
‫------‬
‫------‬
‫}‬

                                                            ‫أﺬ ﻧ ﺗﺘﻜﻮن اﻟﺪاﻟﺔ ﻣﻦ :-‬
                     ‫)٢( ﺟﺴﻢ اﻟﺪاﻟﺔ‬                          ‫)١( اﻹﻋﻼن ﻋﻦ اﻟﺪاﻟﺔ‬

                                                             ‫ﻣﺜﺎل : داﻟﺔ ﺑﺪﻮ ﻧ دﻟﯿﻞ‬

‫>‪#include <stdio.h‬‬
‫>‪#include<conio.h‬‬
‫;)‪void line2(void‬‬
‫) (‪main‬‬
‫{‬
‫) (‪clrscr‬‬
‫) (2‪line‬‬
‫;)“ ‪printf(“ ** Allah the god of all world ** n‬‬
‫) (2‪line‬‬
‫/* ‪/* end of main( ) function‬‬
‫}‬
‫)‪void line2(void‬‬
‫{‬
‫;‪int j‬‬
‫;)++‪for(j=0;j<=40;j‬‬
‫;)“ * “ (‪printf‬‬
‫;)“ ‪printf(“n‬‬
‫}‬
    ‫ﻓﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺴﺎﺒﻕ ﺃﻨﺸﺄﻨﺎ ﺩﺍﻟﺔ ﺒﺎﻻﺴﻡ ) (2‪ line‬ﻭﻗﺩ ﻅﻬﺭﺕ ﻜﻠﻤﺔ ) (2‪ line‬ﻓﻰ ﺜﻼﺙ ﻤﻭﺍﻀﻊ :-‬




      ‫٥٢‬      ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬
‫{‬

       ‫٦٢‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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(3‪line‬‬
‫;)“ ‪printf(“ ** Allah the god of all world ** n‬‬
‫;)07(3‪line‬‬
‫}‬
      ‫٧٢‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬

      ‫٨٢‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬
‫{‬
‫;2‪int mins1 , mins‬‬
‫;) “ :) 22:3 ‪printf(“ type first time ( from‬‬
‫;)(‪mins1=getmins‬‬
‫;) “ ‪printf(“ type second(later) time‬‬
‫;)(‪mins2=getmins‬‬
‫;)1‪printf(“ 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‬ﺗﺘﻜﻮن ﻣﻦ داﻟﺘﯿﻦ :-‬
                         ‫- ﺩﺍﻟﺔ ﻟﺤﺴﺎﺏ ﻤﺭﺒﻊ ﺍﻟﻘﻴﻤﺔ ﻭﺇﻋﺎﺩﺓ ﺤﺎﺼل ﺍﻟﻀﺭﺏ ﺍﻟﻰ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ‬

      ‫٩٢‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬
‫{‬
‫;1‪int v‬‬
‫;‪v1= a*a‬‬
‫;1‪return v‬‬
‫}‬
‫) ‪int qup(int q‬‬
‫{‬
‫;2‪int v‬‬
‫;‪v2=q*q*q‬‬
‫;2‪return 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‬‬
‫{‬
 ‫;2‪float no1, no‬‬
‫;) : 2‪printf(“n enter no1 , no‬‬
‫:) 2‪scanf(“ %f ,%f “ , &no` ,&no‬‬

      ‫٠٣‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ ــــــــــــــــــــــــ‬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”);
}

      ٣١       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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‬‬
‫{‬

       ‫٢٣‬       ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language
C language

Contenu connexe

Tendances

Composite functions
Composite functionsComposite functions
Composite functionstoni dimella
 
το πληθος των ριζων Rolle
το πληθος των ριζων Rolleτο πληθος των ριζων Rolle
το πληθος των ριζων RolleKozalakis
 
Εξισώσεις - Ανισώσεις Α' Λυκείου
Εξισώσεις - Ανισώσεις Α' ΛυκείουΕξισώσεις - Ανισώσεις Α' Λυκείου
Εξισώσεις - Ανισώσεις Α' ΛυκείουChristos Bekas
 
ملزمة رياضيات سادس علمي _ العراق
 ملزمة رياضيات سادس علمي _ العراق ملزمة رياضيات سادس علمي _ العراق
ملزمة رياضيات سادس علمي _ العراقAhmed Mahdi
 
رياضيات سادس علمي
رياضيات سادس علميرياضيات سادس علمي
رياضيات سادس علميAhmed Mahdi
 
Complex Numbers
Complex NumbersComplex Numbers
Complex Numbersswartzje
 
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1Dimitris Psounis
 
Συναρτήσεις - Μάθημα 6ο (Αντίστροφη Συνάρτηση)
Συναρτήσεις - Μάθημα 6ο (Αντίστροφη Συνάρτηση)Συναρτήσεις - Μάθημα 6ο (Αντίστροφη Συνάρτηση)
Συναρτήσεις - Μάθημα 6ο (Αντίστροφη Συνάρτηση)Vassilis Markos
 
10 3 double and half-angle formulas
10 3 double and half-angle formulas10 3 double and half-angle formulas
10 3 double and half-angle formulashisema01
 
بور بوينت 3ث ف2
بور بوينت 3ث ف2بور بوينت 3ث ف2
بور بوينت 3ث ف2ahmh
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 Dimitris Psounis
 
1.3 solving equations t
1.3 solving equations t1.3 solving equations t
1.3 solving equations tmath260
 

Tendances (20)

Composite functions
Composite functionsComposite functions
Composite functions
 
το πληθος των ριζων Rolle
το πληθος των ριζων Rolleτο πληθος των ριζων Rolle
το πληθος των ριζων Rolle
 
ΠΛΗ10 ΜΑΘΗΜΑ 1.4
ΠΛΗ10 ΜΑΘΗΜΑ 1.4ΠΛΗ10 ΜΑΘΗΜΑ 1.4
ΠΛΗ10 ΜΑΘΗΜΑ 1.4
 
11365.integral 2
11365.integral 211365.integral 2
11365.integral 2
 
Εξισώσεις - Ανισώσεις Α' Λυκείου
Εξισώσεις - Ανισώσεις Α' ΛυκείουΕξισώσεις - Ανισώσεις Α' Λυκείου
Εξισώσεις - Ανισώσεις Α' Λυκείου
 
ملزمة رياضيات سادس علمي _ العراق
 ملزمة رياضيات سادس علمي _ العراق ملزمة رياضيات سادس علمي _ العراق
ملزمة رياضيات سادس علمي _ العراق
 
رياضيات سادس علمي
رياضيات سادس علميرياضيات سادس علمي
رياضيات سادس علمي
 
Complex Numbers
Complex NumbersComplex Numbers
Complex Numbers
 
Fourier series
Fourier seriesFourier series
Fourier series
 
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1
ΠΛΗ30 ΕΠΑΝΑΛΗΨΗ 1
 
Έλλειψη
ΈλλειψηΈλλειψη
Έλλειψη
 
Συναρτήσεις - Μάθημα 6ο (Αντίστροφη Συνάρτηση)
Συναρτήσεις - Μάθημα 6ο (Αντίστροφη Συνάρτηση)Συναρτήσεις - Μάθημα 6ο (Αντίστροφη Συνάρτηση)
Συναρτήσεις - Μάθημα 6ο (Αντίστροφη Συνάρτηση)
 
Bolzano
BolzanoBolzano
Bolzano
 
10 3 double and half-angle formulas
10 3 double and half-angle formulas10 3 double and half-angle formulas
10 3 double and half-angle formulas
 
η εξίσωση 2ου βαθμού
η εξίσωση 2ου βαθμούη εξίσωση 2ου βαθμού
η εξίσωση 2ου βαθμού
 
بور بوينت 3ث ف2
بور بوينت 3ث ف2بور بوينت 3ث ف2
بور بوينت 3ث ف2
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
 
MEAN VALUE THEOREM
MEAN VALUE THEOREMMEAN VALUE THEOREM
MEAN VALUE THEOREM
 
Ανισώσεις
ΑνισώσειςΑνισώσεις
Ανισώσεις
 
1.3 solving equations t
1.3 solving equations t1.3 solving equations t
1.3 solving equations t
 

En vedette

سلسلة تعلم البرمجة بلغة C / C++ - 2
سلسلة تعلم البرمجة بلغة  C / C++ - 2 سلسلة تعلم البرمجة بلغة  C / C++ - 2
سلسلة تعلم البرمجة بلغة C / C++ - 2 بندر المجلاد
 
سلسلة تعلم البرمجة بلغة C / C++ - 1
سلسلة تعلم البرمجة بلغة C / C++  - 1سلسلة تعلم البرمجة بلغة C / C++  - 1
سلسلة تعلم البرمجة بلغة C / C++ - 1بندر المجلاد
 
ملزمة الرياضيات السادس العلمي الأحيائي الفصل الخامس 2017 الأستاذ علي حميد
ملزمة الرياضيات السادس العلمي الأحيائي الفصل الخامس 2017 الأستاذ علي حميدملزمة الرياضيات السادس العلمي الأحيائي الفصل الخامس 2017 الأستاذ علي حميد
ملزمة الرياضيات السادس العلمي الأحيائي الفصل الخامس 2017 الأستاذ علي حميدmoeiraqi.org
 
حلقات التكرار
حلقات التكرارحلقات التكرار
حلقات التكرارmahaa6789
 
حل المعادلات التفاضلية باستخدام المتسلسلات اللانهائية
حل المعادلات التفاضلية  باستخدام المتسلسلات اللانهائيةحل المعادلات التفاضلية  باستخدام المتسلسلات اللانهائية
حل المعادلات التفاضلية باستخدام المتسلسلات اللانهائيةDr Abd Allah Mousa
 
Basic design & visual arts (Elements of design)
Basic design & visual arts (Elements of design)Basic design & visual arts (Elements of design)
Basic design & visual arts (Elements of design)Ar.Shakti Nanda
 

En vedette (7)

سلسلة تعلم البرمجة بلغة C / C++ - 2
سلسلة تعلم البرمجة بلغة  C / C++ - 2 سلسلة تعلم البرمجة بلغة  C / C++ - 2
سلسلة تعلم البرمجة بلغة C / C++ - 2
 
C++ arabic
C++ arabicC++ arabic
C++ arabic
 
سلسلة تعلم البرمجة بلغة C / C++ - 1
سلسلة تعلم البرمجة بلغة C / C++  - 1سلسلة تعلم البرمجة بلغة C / C++  - 1
سلسلة تعلم البرمجة بلغة C / C++ - 1
 
ملزمة الرياضيات السادس العلمي الأحيائي الفصل الخامس 2017 الأستاذ علي حميد
ملزمة الرياضيات السادس العلمي الأحيائي الفصل الخامس 2017 الأستاذ علي حميدملزمة الرياضيات السادس العلمي الأحيائي الفصل الخامس 2017 الأستاذ علي حميد
ملزمة الرياضيات السادس العلمي الأحيائي الفصل الخامس 2017 الأستاذ علي حميد
 
حلقات التكرار
حلقات التكرارحلقات التكرار
حلقات التكرار
 
حل المعادلات التفاضلية باستخدام المتسلسلات اللانهائية
حل المعادلات التفاضلية  باستخدام المتسلسلات اللانهائيةحل المعادلات التفاضلية  باستخدام المتسلسلات اللانهائية
حل المعادلات التفاضلية باستخدام المتسلسلات اللانهائية
 
Basic design & visual arts (Elements of design)
Basic design & visual arts (Elements of design)Basic design & visual arts (Elements of design)
Basic design & visual arts (Elements of design)
 

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‬ﻭﺍﻟﻨﺘﻴﺠﺔ : ) " 14‪printf ( “ 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‬‬ ‫; ) “ 2‪printf ( " 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‬ﻤﺭﻓﻭﻋﺔ ﺇﻟﻰ ﺍﻟﻘﻭﺓ 1‪d‬‬ ‫ﻤﺯﺩﻭﺝ‬ ‫) 2‪pow ( d1 , d‬‬ ‫‪math.h‬‬ ‫) ‪ labs ( e‬ﺼﺤﻴﺢ ﻁﻭﻴل ﺘﻌﻴﺩ ﻗﻴﻤﺔ ﻤﻁﻠﻘﺔ ﻟـ ‪l‬‬ ‫‪math.h‬‬ ‫ﺘﻌﻴﺩ ﺠﻴﺏ ‪d‬‬ ‫ﻤﺯﺩﻭﺝ‬ ‫) ‪sin ( d‬‬ ‫٠١‬ ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
  • 11. ‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ C‬ــــــــــــــــــــــــ‬ ‫‪math.h‬‬ ‫ﺘﻌﻴﺩ ﺍﻟﺠﺯﺭ ﺍﻟﺘﺭﺒﻴﻌﻰ ﻟـ ‪d‬‬ ‫ﻤﺯﺩﻭﺝ‬ ‫) ‪sqrt ( d‬‬ ‫‪string.h‬‬ ‫ﺘﻨﺴﺦ ﺍﻟﺴﻠﺴﻠﺔ 2‪ s‬ﻓﻰ ﺍﻟﺴﻠﺴﻠﺔ 1‪s‬‬ ‫ﺤﺭﻑ‬ ‫) 2‪strcpy ( 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‬‬ ‫{‬ ‫; 2‪float 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‬‬ ‫;)2‪printf ( "mul = %f ", num1*num‬‬ ‫;‪break‬‬ ‫;”/“ ‪case‬‬ ‫;)2‪printf ( "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‬‬ ‫{‬ ‫;2‪float 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‬‬ ‫;)2‪x2=%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‬ــــــــــــــــــــــــ‬ ‫1‪function‬‬ ‫2‪function‬‬ ‫}‬ ‫1‪function‬‬ ‫{‬ ‫------‬ ‫------‬ ‫}‬ ‫2‪function‬‬ ‫{‬ ‫------‬ ‫------‬ ‫}‬ ‫أﺬ ﻧ ﺗﺘﻜﻮن اﻟﺪاﻟﺔ ﻣﻦ :-‬ ‫)٢( ﺟﺴﻢ اﻟﺪاﻟﺔ‬ ‫)١( اﻹﻋﻼن ﻋﻦ اﻟﺪاﻟﺔ‬ ‫ﻣﺜﺎل : داﻟﺔ ﺑﺪﻮ ﻧ دﻟﯿﻞ‬ ‫>‪#include <stdio.h‬‬ ‫>‪#include<conio.h‬‬ ‫;)‪void line2(void‬‬ ‫) (‪main‬‬ ‫{‬ ‫) (‪clrscr‬‬ ‫) (2‪line‬‬ ‫;)“ ‪printf(“ ** Allah the god of all world ** n‬‬ ‫) (2‪line‬‬ ‫/* ‪/* 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(3‪line‬‬ ‫;)“ ‪printf(“ ** Allah the god of all world ** n‬‬ ‫;)07(3‪line‬‬ ‫}‬ ‫٧٢‬ ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬
  • 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‬‬ ‫{‬ ‫;2‪int mins1 , mins‬‬ ‫;) “ :) 22:3 ‪printf(“ type first time ( from‬‬ ‫;)(‪mins1=getmins‬‬ ‫;) “ ‪printf(“ type second(later) time‬‬ ‫;)(‪mins2=getmins‬‬ ‫;)1‪printf(“ 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‬‬ ‫{‬ ‫;1‪int v‬‬ ‫;‪v1= a*a‬‬ ‫;1‪return v‬‬ ‫}‬ ‫) ‪int qup(int q‬‬ ‫{‬ ‫;2‪int v‬‬ ‫;‪v2=q*q*q‬‬ ‫;2‪return 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‬‬ ‫{‬ ‫;2‪float no1, no‬‬ ‫;) : 2‪printf(“n enter no1 , no‬‬ ‫:) 2‪scanf(“ %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‬‬ ‫{‬ ‫٢٣‬ ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬