SlideShare una empresa de Scribd logo
1 de 70
Descargar para leer sin conexión
‫ـــــــــــــــــــــ ﻣﺤﺎﺿﺮات ﻓﻰ ﻟﻐﺔ ‪ 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

Más contenido relacionado

Último

أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....سمير بسيوني
 
French Revolution (फ्रेंच राज्यक्रांती)
French Revolution  (फ्रेंच राज्यक्रांती)French Revolution  (फ्रेंच राज्यक्रांती)
French Revolution (फ्रेंच राज्यक्रांती)Shankar Aware
 
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...Idrees.Hishyar
 
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...Nguyen Thanh Tu Collection
 
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 

Último (6)

أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
أَسَانِيدُ كُتُبِ وَأُصُولِ النَّشْرِ لِابْنِ الْجَزَرِيِّ وَالْوَصْلُ بِهَا....
 
French Revolution (फ्रेंच राज्यक्रांती)
French Revolution  (फ्रेंच राज्यक्रांती)French Revolution  (फ्रेंच राज्यक्रांती)
French Revolution (फ्रेंच राज्यक्रांती)
 
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ،    راپورتا مێژوی ، ژ...
، ژیانا ئینگلیزا ب کوردی ، ئینگلیزەکان ، راپورتی کوردی ، راپورتا مێژوی ، ژ...
 
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
 
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 

Destacado

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destacado (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

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‬‬ ‫{‬ ‫٢٣‬ ‫ـــــــــــــــــــــــــــــــــــــــــــ رﻗﻢ اﻟﺼﻔﺤــﺔ‬