You are on page 1of 40

‫ﺍﻟﺩﺭﺱ ﺍﻻﻭل‪:‬‬

‫ﻤﻘﺩﻤﺔ‬

‫‪ Java‬ﺍﻟﺠﺎﻓﺎ ﻫﻰ ﺍﺤﺩﻯ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﺍﻟﺘﻰ ﺍﺼﺒﺤﺕ ﺸﺎﺌﻌﺔ ﺍﻻﺴﺘﺨﺩﺍﻡ ﻓﻰ ﺍﻵﻭﻨﺔ ﺍﻻﺨﻴﺭﺓ ﻭﺫﻟﻙ‬
‫ﻟﻤﻴﺯﺍﺘﻬﺎ ﺍﻟﻌﺩﻴﺩﺓ ﻭﻫﻰ ﻤﻥ ﺘﻁﻭﻴﺭ ﺸﺭﻜﺔ ﺴﻥ ﻤﺎﻴﻜﺭﻭﺴﻴﺴﺘﻡ ‪. Sun Microsystems‬‬
‫ﻭﻟﻜﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻗﺒل ﺍﻥ ﻨﺒﺩﺃ ﻓﻰ ﺍﻟﺘﺤﺩﺙ ﻋﻥ ﺍﻟﺠﺎﻓﺎ ﺘﻌﺎﻟﻰ ﺍﻭﻻ ﻨﻘﻭﻡ ﺒﺘﻘﺴﻴﻡ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ‪.‬‬
‫ﺘﻨﻘﺴﻡ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﺍﻟﻰ ﺜﻼﺙ ﻤﺴﺘﻭﻴﺎﺕ‪:‬‬
‫ﺍﻻﻭل ‪Simple Language :‬‬
‫ﻭﻫﻰ ﺍﺒﺴﻁ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﻭﻻﺘﺤﺘﺎﺝ ﺍﻟﻰ ﻤﺘﺭﺠﻡ ﺍﻟﺫﻯ ﺴﻴﻘﻭﻡ ﺒﺘﺤﻭﻴل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻰ ﻤﺎ‬
‫ﻴﺴﻤﻰ ﻟﻐﺔ ﺍﻻﻟﻪ ﻭﻫﻭ ﻤﺎ ﻴﻔﻬﻤﺔ ﺍﻟﻜﻤﺒﻴﻭﺘﺭ ﻭﻫﻰ ﺘﻜﻭﻥ ﻟﻐﺔ ﺒﺴﻴﻁﺔ ﻓﻰ ﺍﻭﺍﻤﺭﻫﺎ ﻓﻰ ﺘﻌﻠﻤﻬﺎ ﻭﻤﻥ‬
‫ﺍﻤﺜﻠﺘﻬﺎ )‪.(HTML‬‬
‫ﺍﻟﺜﺎﻨﻰ ‪Base Programming Language :‬‬
‫ﻭﻫﻰ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻰ ﺘﻌﺘﻤﺩ ﻓﻰ ﺍﻭﺍﻤﺭﻫﺎ ﻋﻠﻰ ﻟﻐﺎﺕ ﺍﺨﺭﻯ ﺍﺴﺎﺴﻴﺔ ﻭﻤﻥ ﺍﻤﺜﻠﺘﻬﺎ )‪ASP‬‬
‫ﻭﻫﻰ ﺘﻌﺘﻤﺩ ﻋﻠﻰ ﻓﺠﻭل ﺒﻴﺴﻙ ﻭ ﻓﻰ ﺒﻰ ﺴﻜﺭﻴﺒﺕ ( ) ‪ JSP‬ﻭﻫﻰ ﺘﻌﺘﻤﺩ ﻋﻠﻰ ﺍﻟﺠﺎﻓﺎ(‪.‬‬
‫ﺍﻟﺜﺎﻟﺙ ‪Full Programming Language :‬‬
‫ﻭﻫﺫﻩ ﻫﻰ ﺍﻟﻠﻐﺎﺕ ﺍﻻﺴﺎﺴﻴﺔ ﻭﻤﻥ ﺍﻤﺜﻠﺘﻬﺎ )‪ (c++ ,VB,Java‬ﺴﻰ‪ ++‬ﻭ ﻓﺠﻭل ﺒﻴﺴﻙ ﻭ‬
‫ﺍﻟﺠﺎﻓﺎ‪.‬‬
‫‪Programming Langue‬‬

‫‪Simple Langue‬‬ ‫‪Base Programming Langue‬‬ ‫‪Full Programming Langue‬‬

‫ﺍﺫﻥ ﺴﻨﻘﻭﻡ ﻫﻨﺎ ﺒﺸﺭﺡ ﻟﻐﻪ ﺍﺴﺎﺴﻴﺔ ﻭﻫﻰ ﻤﻥ ﺍﻫﻡ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ‪.‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﺎﻨﻰ ‪:‬‬


‫ﺍﻫﻡ ﻤﺯﺍﻴﺎ ﺍﻟﺠﺎﻓﺎ‬

‫ﻟﻜﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺘﻌﺎﻟﻰ ﻨﺘﻌﺭﻑ‬


‫ﻟﻤﺎﺫﺍ ﺍﻟﺠﺎﻓﺎ ﻤﻥ ﺍﻫﻡ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﻭﻤﺎ ﺍﻟﺫﻯ ﻤﻴﺯﻫﺎ ﻋﻥ ﻏﻴﺭﻫﺎ ﻤﻥ ﺍﻟﻠﻐﺎﺕ؟‬

‫ﺍﻭﻻ ‪ :‬ﺘﻨﺘﻤﻰ ﺍﻟﻰ ﻟﻐﺎﺕ ﺍﻭﺒﺠﻜﺕ ﺍﻭﺭﻴﻨﺘﻴﺩ )‪(Object Oriented Programming‬‬


‫ﻭﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﺍﺭﺘﺒﺎﻁ ﺒﻴﻥ ﺍﻟﻁﺭﻕ ﻭﺍﻟﺨﺼﺎﺌﺹ ﻟﻜﺎﺌﻥ ﻭﺘﻘﻭﻡ ﺍﻟﻭﻅﺎﺌﻑ ﺒﺎﺩﺍﺀ ﻭﻅﻴﻔﺔ‬
‫ﻤﻌﻴﻨﺔ ﻭﻴﺘﻡ ﻓﻴﻬﺎ ﺘﻘﺴﻴﻡ ﺍﻟﻤﺸﺎﻜل ﺍﻟﻜﺒﻴﺭﺓ ﺍﻟﻰ ﻋﺩﺓ ﻤﺸﺎﻜل ﺼﻐﻴﺭﺓ ﻭﺤل ﺍﻯ ﻤﺸﻜﻠﻪ ﻴﻨﻘﺴﻡ ﺍﻟﻰ‬
‫ﺜﻼﺙ ﻤﺭﺍﺤل ﺍ‪ -‬ﺘﺤﻠﻴل ﺍﻟﻤﺸﻜﻠﺔ ﻭﺘﺤﺩﻴﺩ ﻁﺭﻴﻘﺔ ﺤل ﻫﺫﻩ ﺍﻟﻤﺸﻜﻠﺔ ﻭﻤﺎﺫﺍ ﺘﺤﺘﺎﺝ ﻟﺤﻠﻬﺎ‪.‬‬
‫‪ -2‬ﺘﺼﻤﻴﻡ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻠﻴل ﺍﻟﺴﺎﺒﻘﺔ ﺒﺼﻭﺭﺓ ﺘﺴﺘﻁﻴﻊ ﻤﻌﻬﺎ ﻓﻬﻡ ﺍﻟﻤﺸﻜﻠﺔ ﻭﻁﺭﻴﻘﺔ‬
‫ﺤﻠﻬﺎ ﻓﻰ ﺨﻁﻭﺍﺕ ﻤﺘﺴﻠﺴﻠﺔ ﻭﻭﺍﻀﺤﺔ ‪.‬‬
‫‪ -3‬ﺍﺨﻴﺭﺍ ﻜﺘﺎﺒﺔ ﻜﻭﺩ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺎﻟﻠﻐﺔ ﺍﻟﺘﻰ ﺍﺨﺘﺭﺘﻬﺎ ‪.‬‬
‫ﺜﺎﻨﻴﺎ ‪ :‬ﻴﻤﻜﻥ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺠﺎﻓﺎ ﺘﻨﻔﻴﺫ ﻋﻤﻠﻴﺎﺕ ﻤﺨﺘﻠﻔﺔ ﻓﻰ ﻨﻔﺱ ﺍﻟﻭﻗﺕ ﺫﺍﺘﻪ‬
‫ﻤﻥ ﺍﻟﻁﺒﻴﻌﻰ ﺍﻥ ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺨﻁﻭﺍﺕ ﺍﻯ ﺒﺭﻨﺎﻤﺞ ﺒﻁﺭﻴﻘﺔ ﻤﺘﺴﻠﺴﻠﺔ ﺍﻯ ﺒﻌﺩ ﺘﻨﻔﻴﺫ ﺨﻁﻭﺓ‬
‫ﻴﻨﺘﻘل ﺍﻟﻰ ﺘﻨﻔﻴﺫ ﺍﻟﺨﻁﻭﺓ ﺍﻟﺘﺎﻟﻴﺔ ﻟﻜﻥ ﻓﻰ ﺍﻟﺠﺎﻓﺎ ﻴﻤﻜﻥ ﺘﻨﻔﻴﺫ ﺨﻁﻭﺍﺕ ﻤﺨﺘﻠﻔﺔ ﻓﻰ ﻨﻔﺱ ﺍﻟﻭﻗﺕ ‪.‬‬
‫ﺜﺎﻟﺜﺎ ‪ :‬ﺍﺩﺍﺭﺓ ﺍﻟﻌﻤﻠﻴﺎﺕ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ﺘﻠﻘﺎﺌﻴﺎ‬
‫ﻓﻰ ﺍﻟﻠﻐﺎﺕ ﺍﻻﺨﺭﻯ ﻤﺜل ﺴﻰ‪ ++‬ﻤﺜﻼ ﻴﺘﻡ ﺍﻟﺘﻌﺎﻤل ﻤﻊ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻭﺍﻟﻜﺎﺌﻥ ﻴﺩﻭﻴﺎ ﺍﻯ ﻤﻥ‬
‫ﺨﻼل ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭ ﺍﻟﻤﺒﺭﻤﺞ ﻟﻜﻥ ﻓﻰ ﺍﻟﺠﺎﻑ ﺍﻟﺘﻌﺎﻤل ﻤﻊ ﺍﻟﺫﺍﻜﺭﺓ ﻴﺘﻡ ﺘﻠﻘﺎﺌﻴﺎ ﺩﻭﻥ ﺘﺩﺨل ﻤﻥ‬
‫ﺍﻟﻤﺒﺭﻤﺞ ﻭﺒﺫﻟﻙ ﺘﻜﻭﻥ ﺍﻜﺜﺭ ﺍﻤﺎﻨﺎ ﻤﻥ ﺍﻟﻠﻐﺎﺕ ﺍﻻﺨﺭﻯ‬
‫ﺭﺍﺒﻌﺎ ‪ :‬ﺍﻻﻤﺎﻥ ﺍﻟﺘﺎﻡ‬
‫ﻋﻨﺩﻤﺎ ﺘﻘﻭﻡ ﺒﺘﺤﻤﻴل ﺍﻯ ﺒﺭﻨﺎﻤﺞ ﻤﻥ ﻋﻠﻰ ﺸﺒﻜﺔ ﻓﺎﻨﻪ ﻴﻤﻜﻥ ﻻﺤﺩ ﺍﻟﻘﺭﺍﺼﻨﺔ ﺍﻥ ﻴﻘﻭﻡ‬
‫ﺒﺎﻟﺘﺤﻜﻡ ﻓﻰ ﺠﻬﺎﺯﻙ ﻤﻥ ﺨﻼل ﻜﻭﺩ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺫﻯ ﺘﻘﻭﻡ ﺒﺘﺤﻤﻴﻠﺔ ﻻﻨﻪ ﻴﻤﻜﻨﺔ ﺍﻟﺘﺤﻜﻡ ﻓﻰ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ‬
‫ﻭﺍﻟﻜﺎﺌﻥ ﺍﻟﻤﻭﺠﻭﺩﻴﻥ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ﻭﻟﻜﻥ ﻓﻰ ﺍﻟﺠﺎﻓﺎ ﻫﺫﺍ ﻤﺴﺘﺤﻴل ﺍﻥ ﻴﺤﺩﺙ ﻜﻤﺎ ﺫﺍﻜﺭﻨﺎ ﻓﻰﺍﻟﻤﻴﺯﺓ‬
‫ﺍﻟﺴﺎﺒﻘﺔ ﺍﻴﻀﺎ ﻓﻰ ﺤﺎﻟﺔ ﻭﺠﻭﺩ ﻓﻴﺭﻭﺱ ﻓﻰ ﺠﻬﺎﺯﻙ ﻓﻨﻪ ﺍﺜﻨﺎﺀ ﺘﺸﻐﻴل ﺍﻯ ﺒﺭﻨﺎﻤﺞ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ﻴﺘﻡ‬
‫ﺍﻨﺘﻘﺎل ﺍﻟﻔﻴﺭﻭﺱ ﺍﻟﻴﻪ ﻭﻜﻥ ﻓﻰ ﺍﻟﺠﺎﻓﺎ ﻟﻥ ﻴﻨﺘﻘل ﺍﻟﻴﻪ ﻻﻨﻪ ﻻﻴﺴﺘﻁﻴﻊ ﺍﻟﺘﺤﻜﻡ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ﻓﻰﻫﺫﻩ‬
‫ﺍﻟﺤﺎﻟﻪ ﺍﻴﻀﺎ ﻻﻥ ﺍﻟﻤﻠﻑ ﺍﻟﺫﻯ ﻴﺘﻡ ﺘﺤﻤﻴﻠﻪ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ﻤﻥ ﺍﻟﻨﻭﻉ ‪ class‬ﻭﻜﻤﺎ ﺴﻨﻌﺭﻑ ﻓﻰ ﺍﻟﻤﻴﺯﻩ‬
‫ﺍﻟﺘﺎﻟﻴﺔ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻻﻴﻤﻜﻥ ﺍﻟﺘﻐﻴﺭ ﻓﻴﻪ‪.‬‬
‫ﺨﺎﻤﺴﺎ ‪ :‬ﻻﺘﻌﺘﻤﺩ ﻋﻠﻰ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل‬
‫ﺘﻌﺎﻟﻰ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﺎﺨﺫ ﺍﻭﻻ ﻤﺜﺎل ﻋﻠﻰ ﻟﻐﻪ ﺍﺨﺭﻯ ﻤﺜل ﺴﻰ‪ ++‬ﺒﻌﺩ ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫)ﻜﻭﺩ( ﻴﺘﻡ ﺍﺴﺘﺨﺩﺍﻡ ﻤﺎ ﻴﺴﻤﻰ ﺍﻟﻤﺘﺭﺠﻡ )‪ (compiler‬ﻟﺘﺤﻭﻴل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻰ ﻟﻐﺔ ﺍﻻﻟﺔ ) ‪machine‬‬
‫‪ (code‬ﻭﻫﺫﺍ ﺍﻟﻤﻠﻑ ﺍﻟﺠﺩﻴﺩ ﺍﻟﻨﺎﺘﺞ ﻋﻥ ﺍﻟﺘﺭﺠﻤﺔ ﻻﻴﻌﻤل ﺍﻟﻰ ﻋﻠﻰ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﺍﻟﺫﻯ ﺘﺭﺠﻡ ﻓﻴﻪ‬
‫ﺒﻤﻌﻨﻰ ﺍﺫﺍ ﺘﻡ ﻋﻤل ﺍﻟﺘﺭﺠﻤﺔ ﻟﺒﺭﻨﺎﻤﺞ ﻜﺘﺏ ﺒﻠﻐﺔ ﺴﻰ‪ ++‬ﺘﺤﺕ ﻨﻅﺎﻡ ﺘﺸﻐﻴل ﻭﻴﻨﺩﻭﺯ ﻓﺎﻥ ﺍﻟﻤﻠﻑ‬
‫ﺍﻟﻨﺎﺘﺞ ﺍﻟﺫﻯ ﺒﻠﻐﺔ ﺍﻻﻟﻪ ﻻﻴﻌﻤل ﺍﻻ ﺘﺤﺕ ﺍﻟﻭﻴﻨﺩﻭﺯ ﻭﺍﺫﺍ ﺍﺭﺩﻨﺎ ﺘﺸﻐﻴﻠﻪ ﺘﺤﺕ ﻨﻅﺎﻡ ﺘﺸﻐﻴل ﻴﻭﻨﻜﺱ‬
‫ﻴﻠﺯﻡ ﺍﻋﺎﺩﺓ ﺍﻟﺘﺭﺠﻤﺔ ﺘﺤﺕ ﻫﺫﺍ ﺍﻟﻨﻅﺎﻡ‬
‫‪C++ Compiler‬‬ ‫‪Machine code‬‬

‫ﺍﻤﺎ ﻓﻰ ﺍﻟﺠﺎﻓﺎ ﻓﻴﺘﺤﻭل ﺍﻟﺒﺭﻨﺎﻤﺞ )ﻜﻭﺩ( ﺍﻟﻰ ﻤﻠﻑ ﻻﻴﻤﻜﻥ ﻗﺭﺍﺀﺘﻪ ﻴﺴﻤﻰ ﻤﻠﻑ ‪ class‬ﺜﻡ ﻴﺘﺤﻭل ﻫﺫﺍ‬
‫ﺍﻟﻤﻠﻑ ﺍﻟﻰ ﻤﻠﻑ ﺒﻠﻐﺔ ﺍﻻﻟﻪ ﻭﺍﻟﻤﻠﻑ ‪ class‬ﻫﺫﺍ ﻴﻤﻜﻥ ﺘﺸﻐﻴﻠﻪ ﺘﺤﺕ ﺍﻯ ﻨﻅﺎﻡ ﺘﺸﻐﻴل ﺩﻭﻥ ﻋﻤل‬
‫ﺘﺭﺠﻤﺔ ﻟﻠﺒﺭﻨﺎﻤﺞ ﻤﺭﻩ ﺍﺨﺭﻯ‬
‫‪Java file JDK Class file JVM‬‬ ‫‪Machine file‬‬

‫‪ JDK‬ﻫﻭ ﺍﻟﻤﺘﺭﺠﻡ ﺍﻟﺫﻯ ﻴﺴﺘﺨﺩﻡ ﻟﺘﺤﻭﻴل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﻜﺘﻭﺏ ﺒﻠﻐﺔ ﺍﻟﺠﺎﻓﺎ ﺍﻟﻰ ﻤﻠﻑ ﺍﻤﺘﺩﺍﺩﻩ ‪class‬‬
‫ﻭﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻫﻭ ﺍﻟﺫﻯ ﻴﻤﻜﻥ ﺘﺸﻐﻴﻠﻪ ﻋﻠﻰ ﺍﻯ ﻨﻅﺎﻡ ﺘﺸﻐﻴل‬
‫‪ JVM‬ﻫﻭ ﺍﻟﻤﺘﺭﺠﻡ ﺍﻟﺫﻯ ﻴﺤﻭل ﻤﻠﻑ ‪ class‬ﺍﻟﻰ ﻤﻠﻑ ﺒﻠﻐﺔ ﺍﻻﻟﻪ‬
‫ﺴﺎﺩﺴﺎ ‪ :‬ﻴﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺠﺎﻓﺎ ﻓﻰ ﺍﻻﻨﺘﺭﻨﺕ‬
‫ﻴﻤﻜﻥ ﻋﻤل ﺍﻟﺘﻁﺒﻴﻕ ﺍﻭ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻋﻠﻰ ﺍﻻﻨﺘﺭﻨﺕ ﻭﻓﻰ ﻫﺫﻩ ﺍﻟﺤﺎﻟﻪ ﻴﺴﻤﻰ ﺠﺎﻓﺎ ﺍﺒﻠﻴﺕ ‪(java‬‬
‫)‪applet‬‬
‫ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺍﺫﺍ ﻭﺠﺩﺕ ﻫﺫﻩ ﺍﻟﻤﻴﺯﺍﺕ ﻤﺠﺘﻤﻌﻪ ﻓﻰ ﻟﻐﺔ ﺒﺭﻤﺠﺔ ﻓﺎﻋﻠﻡ ﺍﻨﻬﺎ ﺍﻟﺠﺎﻓﺎ‬
‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﺎﻟﺙ‪:‬‬
‫ﺍﻋﺩﺍﺩ ﺍﻟﻜﻤﺒﻴﻭﺘﺭ ﻟﺘﺸﻐﻴل ﺍﻟﺠﺎﻓﺎ‬

‫ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺘﺤﺘﺎﺝ ﺍﻟﻰ ﺘﺤﻤﻴل ﻤﺎﻴﺴﻤﻰ )‪ (Java 2 Platform‬ﻭﻴﻤﻜﻨﻙ ﺘﺤﻤﻴﻠﻪ ﻤﺠﺎﻨﺎ ﻤﻥ‬
‫‪ java.sun.com‬ﻗﻡ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺒﺘﺤﻤﻴل ﺍﺤﺩﻯ ﺍﻻﺼﺩﺍﺭﺍﺕ ﺍﻟﺘﻰ ﺘﺘﻨﺎﺴﺏ ﻤﻊ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل‬
‫ﺍﻟﺫﻯ ﺘﺴﺘﺨﺩﻤﺔ ﻭﺴﻨﻘﻭﻡ ﻫﻨﺎ ﺒﺸﺭﺡ ﻋﻤل ﺍﻋﺩﺍﺩ ‪ Java 2 Platform, Standard Edition 1.3‬ﺒﻌﺩ‬
‫ﺘﺤﻤﻴﻠﻪ ﻤﻥ ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻯ ﺫﻜﺭﻨﺎﻩ ﻜﻤﺜﺎل ﺴﻴﻜﻭﻥ ﻤﺜﺎﻟﻨﺎ ﺨﻼل ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻭﻴﻨﺩﻭﺯ‬

‫‪ -1‬ﺒﻌﺩ ﺘﺤﻤﻴل ﺍﻟﻤﻠﻑ ﻤﻥ ﺍﻟﻤﻭﻗﻊ ﺴﺘﻅﻬﺭ ﻫﺫﻩ ﺍﻻﻴﻘﻭﻨﺔ‬


‫ﺍﻀﻐﻁ ﻤﺭﺘﻴﻥ ﻋﻠﻴﻬﺎ )‪(Double Click‬‬

‫‪ -2‬ﺴﺘﻅﻬﺭ ﻫﺫﻩ ﺍﻟﻨﺎﻓﺫﺓ‬

‫ﺍﻨﺘﻅﺭ ﻗﻠﻴﻼ ﺒﻌﺩ ﻅﻬﻭﺭﻫﺎ‬

‫‪ -3‬ﺴﺘﻅﻬﺭ ﺍﻟﻨﺎﻓﺫﻩ ﺍﻟﺘﺎﻟﻴﻪ ﺍﻨﺘﻅﺭ ﺍﻴﻀﺎ ﺒﻌﺩﻫﺎ ﻗﻠﻴﻼ‬


‫‪ -4‬ﺴﺘﻅﻬﺭ ﻫﺫﻩ ﺍﻟﻨﺎﻓﺫﺓ ﺍﻀﻐﻁ ﻋﻠﻰ ‪ Next‬ﻓﻴﻬﺎ‬

‫‪ -5‬ﺘﻅﻬﺭ ﺍﻟﻨﺎﻓﺫﻩ ﺍﻟﺘﺎﻟﻴﺔ ﻭﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﺍﺘﻔﺎﻗﻴﺔ ﺒﻴﻨﻙ ﻭﺒﻴﻥ ﺸﺭﻜﺔ ﺴﻥ ﻤﻴﻜﺭﻭﺴﻴﺴﺘﻴﻡ‬
‫ﺍﻀﻐﻁ ‪ Yes‬ﻟﻜﻰ ﺘﺴﺘﻁﻴﻊ ﺍﻻﺴﺘﻤﺭﺍﺭ‬
‫‪ -6‬ﺘﻅﻬﺭ ﻨﺎﻓﺫﺓ ﺘﺨﺒﺭﻙ ﺒﺎﺴﻡ ﺍﻟﻤﺠﻠﺩ ﺍﻟﺫﻯ ﺴﻴﺘﻡ ﺘﺠﻤﻴل ﺍﻟﻤﻠﻔﺎﺕ ﺒﻪ ﻭﻤﻜﺎﻥ ﻫﺫﺍ ﺍﻟﻤﺠﻠﺩ‬
‫ﻓﺎﺫﺍ ﺍﺭﺩﺕ ﺘﻐﻴﺭ ﺍﺴﻡ ﺍﻟﻤﺠﻠﺩ ﺍﻭ ﻤﻜﺎﻨﻪ ﺍﻀﻐﻁ ‪ Browse‬ﻭﻟﻜﻥ ﻴﻔﻀل ﺍﻥ ﺘﺩﻋﻪ ﻜﻤﺎ ﻫﻭ ﻭﺍﻀﻐﻁ‬
‫‪Next‬‬

‫‪ -7‬ﺘﻅﻬﺭ ﻨﺎﻓﺫﻩ ﺘﺨﺒﺭﻙ ﺒﺎﻟﻤﻠﻔﺎﺕ ﻭﺍﻟﻤﺠﻤﻭﻋﺎﺕ ﺍﻟﺘﻰ ﺴﻴﺘﻡ ﺍﻨﺯﺍﻟﻬﺎ ﻋﻠﻰ ﺍﻟﺠﻬﺎﺯ ﺍﻀﻐﻁ ‪Next‬‬
‫ﻟﻼﺴﺘﻤﺭﺍﺭ‬

‫‪ -8‬ﺴﺘﻅﻬﺭ ﺍﻟﻨﺎﻓﺫﻩ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﺘﻰ ﺘﻭﻀﺢ ﻋﻤﻠﻴﺔ ﺍﻨﺯﺍل ﺍﻟﻤﻠﻔﺎﺕ ﺍﻨﺘﻅﺭ ﺤﺘﻰ ﺘﺼل ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﻰ‬
‫‪%100‬‬
‫‪ -9‬ﺘﻅﻬﺭ ﻨﺎﻓﺫﻩ ﺘﺨﺒﺭﻙ ﺍﻥ ﺘﻨﺘﻅﺭ ﻗﻠﻴﻼ ﺤﺘﻰ ﻴﺘﻡ ﺍﻻﻨﺘﻬﺎﺀ ﻤﻥ ﻋﻤﻠﻴﺔ ﺍﻻﻋﺩﺍﺩ‬

‫‪ -10‬ﺍﺨﻴﺭﺍ ﺍﻀﻐﻁ ‪ Finish‬ﻻﻨﻬﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻻﻋﺩﺍﺩ‬

‫ﺍﻻﻥ ﺍﻫﻨﺌﻙ ﺒﺎﻨﻬﺎﺀ ﺍﻟﺨﻁﻭﺓ ﺍﻻﻭﻟﻰ ﻨﺤﻭ ﺍﺤﺘﺭﺍﻑ ﺍﻟﺠﺎﻓﺎ ﺒﻨﺠﺎﺡ‬


‫ﺍﻟﺩﺭﺱ ﺍﻟﺭﺍﺒﻊ‪:‬‬
‫ﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫ﻻﺸﻙ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺍﻥ ﺍﻯ ﺒﺭﻨﺎﻤﺞ ﻴﻤﺭ ﺒﻌﺩﺩ ﻤﻥ ﺍﻟﻤﺭﺍﺤل ﻤﻨﺫ ﺍﻥ ﻜﺎﻥ ﻓﻜﺭﺓ ﺍﻭ ﻤﺸﻜﻠﺔ ﻟﺩﻯ‬
‫ﺍﺤﺩ ﻤﺴﺘﺨﺩﻤﻰﺍﻟﻜﻤﺒﻴﻭﺘﺭ ﺍﻟﻰ ﺍﻥ ﻴﻜﺘﺏ ﺜﻡ ﻴﻭﻀﻊ ﻤﺤل ﺍﻟﺘﻨﻔﻴﺫ ﻭﻴﺴﻤﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻓﻰ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ‬
‫ﺘﻁﺒﻴﻕ )‪ (application‬ﻭﺍﻟﺘﻁﺒﻴﻕ ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﺒﺭﻨﺎﻤﺞ ﻜﺘﺏ ﻟﺤل ﻤﺸﻜﻠﺔ ﻤﺤﺩﺩﺓ‪.‬‬
‫ﻭﻟﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﻠﻐﺔ ﺍﻟﺠﺎﻓﺎ ﻴﻜﺘﺏ ﺩﺍﺨل ﺍﻯ ﻤﺤﺭﺭ ﻨﺼﻭﺹ ﻤﺜل ﺍﻟﻤﻔﻜﺭﺓ ﻤﺜﻼ )‪(notepad‬‬
‫ﻭﻴﺤﻔﻅ ﺍﻟﻤﻠﻑ ﺒﺎﻤﺘﺩﺍﺩ ‪ .java‬ﻭﻴﺴﻤﻰ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﺒﻤﻠﻑ ﺍﻟﻤﺼﺩﺭ )‪. (source file‬‬
‫ﻭﻴﻤﻜﻥ ﺒﺩل ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺩﺍﺨل ﻤﻌﺎﻟﺞ ﻨﺼﻭﺹ ﺍﻥ ﻴﻜﺘﺏ ﺒﺎﺴﺘﺨﺩﺍﻡ ﻤﺤﺭﺭ ﺨﺎﺹ ﺒﻠﻐﺔ ﺍﻟﺠﺎﻓﺎ‬
‫ﻭﻴﺴﻤﻰ )‪ (editor‬ﻭﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﺍﺩﺍﺓ ﻤﺴﺎﻋﺩﺓ ﺘﻴﺴﺭ ﻟﻠﻤﺒﺭﻤﺞ ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﺘﺨﺯﻴﻥ ﻤﺎ ﻜﺘﺏ‬
‫ﻓﻰ ﻤﻠﻑ ﻭﺘﺴﻬﻴل ﺍﺴﺘﺭﺠﺎﻋﺔ ﻭﺘﻌﺩﻴﻠﻪ ﻭﻨﺴﺨﺔ ﺍﻴﻀﺎ ﻭﻴﻭﺠﺩ ﺒﻌﺽ ﺍﻟﻤﺤﺭﺭﺍﺕ ﻴﻤﻜﻥ ﺍﻥ ﺘﻘﻭﻡ‬
‫ﺒﻌﻤﻠﻴﺔ ﺍﻟﺘﺭﺠﻤﺔ ﺍﻴﻀﺎ ﻭﻴﻤﻜﻨﻙ ﻋﺯﻴﺯﺉ ﺍﻟﻘﺎﺭﺉ ﺍﺜﻨﺎﺀ ﺘﻌﻠﻤﻙ ﻤﻌﻨﺎ ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺩﺍﺨل ﺍﻟﻤﻔﻜﺭﺓ‬
‫ﺍﻭ ﺍﻻﺴﺘﻌﺎﻨﻪ ﺒﺎﺤﺩ ﻤﺤﺭﺭﺍﺕ ﺍﻟﺠﺎﻓﺎ ‪.‬‬
‫ﻭﺍﻟﺨﻁﻭﺓ ﺍﻟﺘﺎﻟﻴﺔ ﻟﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ )ﻤﻠﻑ ﺍﻟﻤﺼﺩﺭ( ﻫﻰ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺭﺠﻤﺔ ﺍﻟﺘﻰ ﻴﺘﻡ ﺘﺤﻭﻴل ﻤﻠﻑ‬
‫ﺍﻟﻤﺼﺩﺭ ﻓﻴﻬﺎ ﺍﻟﻰ ﻤﻠﻑ ﺒﺎﻤﺘﺩﺍﺩ ‪ .class‬ﻜﻤﺎ ﺸﺭﺤﻨﺎ ﻓﻰ ﺍﻟﺩﺭﺱ ﺍﻟﺴﺎﺒﻕ‪.‬‬

‫ﻭﻟﻐﺔ ﺍﻟﺠﺎﻓﺎ ﺘﺘﻜﻭﻥ ﻤﻥ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺤﺯﻡ )‪ (Packages‬ﻭﻫﺫﻩ ﺍﻟﺤﺯﻡ ﺘﺘﻜﻭﻥ ﻤﻥ ﻤﺠﻤﻭﻋﺔ ﻤﻥ‬
‫ﺍﻟﻜﺎﺌﻥ )‪ (Opjects‬ﻫﺫﺍ ﺍﻟﻜﺎﺌﻥ ﻴﺘﻜﻭﻥ ﻤﻥ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺩﻭﺍل )‪ (Methods‬ﻭﻫﺫﻩ ﺍﻟﺩﻭﺍل ﻫﻰ‬
‫ﺍﻭﺍﻤﺭ ﺍﻟﺠﺎﻓﺎ ﺍﻟﺘﻰ ﺘﺴﺘﺨﺩﻡ ﻓﻰ ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ‪.‬‬
‫ﺍﻯ ﺍﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﻠﻐﺔ ﺍﻟﺠﺎﻓﺎ ﻋﺒﺎﺭﺓ ﻋﻥ ﺩﺍﻟﺔ ﺭﺌﻴﺴﻴﺔ ﺘﻨﺎﺩﻯ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺩﻭﺍل ﺍﻻﺨﺭﻯ ﻭﻜل‬
‫ﺩﺍﻟﻪ ﻫﻰ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻻﻭﺍﻤﺭ‪.‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺨﺎﻤﺱ‪:‬‬
‫ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ‬
‫ﻭﻫﻨﺎﻙ ﺩﺍﻟﺔ ﺭﺌﻴﺴﻴﺔ ﻫﻰ ﺍﻟﺩﺍﻟﺔ )(‪ main‬ﻭﻫﻰ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺘﻨﻔﻴﺫﻴﺔ ﻓﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﻻ ﻴﻤﻜﻥ ﺘﺸﻐﻴل ﺍﻯ‬
‫ﺒﺭﻨﺎﻤﺞ ﺩﻭﻥ ﻭﺠﻭﺩ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ﻓﻴﻪ ﺍﺫﻥ ﻓﺎﻯ ﺒﺭﻨﺎﻤﺞ ﻴﺘﻜﻭﻥ ﻤﻥ ﺩﺍﻟﺔ ﻭﺍﺤﺩﺓ ﻋﻠﻰ ﺍﻻﻗل ﻫﻰ‬
‫)(‪ main‬ﻭﻴﻤﻜﻥ ﺍﻥ ﻴﻜﻭﻥ ﻫﻨﺎﻙ ﺩﻭﺍل ﺍﺨﺭﻯ ﺘﻌﺭﻑ ﻗﺒل ﺍﻭ ﺒﻌﺩ )(‪ main‬ﻭﻫﺫﻩ ﺍﻟﺩﻭﺍل ﻟﺘﻨﻔﻴﺫﻫﺎ ﻴﺘﻡ‬
‫ﺍﺴﺘﺩﻋﺎﺌﻬﺎ ﺩﺍﺨل ﺍﻟﺩﺍﻟﺔ )(‪ main‬ﻜﻤﺎ ﺴﻨﺭﻯ ﻓﻴﻤﺎ ﺒﻌﺩ ‪.‬‬
‫ﺘﺘﻜﻭﻥ ﺍﻟﺩﺍﻟﺔ ﻋﺎﻤﺔ ﺒﻤﺎ ﻓﻰ ﺫﻟﻙ ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ )(‪main‬‬
‫‪ -1‬ﺍﻻﻋﻼﻡ ﻋﻥ ﺍﻟﺩﺍﻟﺔ ﻭﻫﻭ ﺒﻤﺜﺎﺒﺔ ﻋﻨﻭﺍﻥ ﺍﻟﺩﺍﻟﺔ ﻭﻴﺤﺘﻭﻯ ﻋﻠﻰ ﺍﺴﻡ ﺍﻟﺩﺍﻟﺔ ﻭﻗﺎﺌﻤﺔ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻟﺘﻰ‬
‫ﺴﺘﺩﺨل ﺍﻟﻰ ﺍﻟﺩﺍﻟﺔ ﺍﻭ ﺴﺘﺨﺭﺝ ﻤﻨﻬﺎ ‪.‬‬
‫‪ -2‬ﺘﻌﺭﻴﻑ ﺍﻟﺩﺍﻟﺔ ﻭﻫﻭ ﻴﺸﻤل ﺍﺴﺎﺴﺎ ﺠﺴﻡ ﺍﻟﺩﺍﻟﺔ ﻭﻴﻭﻀﻊ ﺒﻴﻥ ﻗﻭﺴﻲ ﻓﺌﺔ } { ﻭﻴﺤﻭﻯ ﻫﺫﺍ‬
‫ﺍﻟﺠﺴﻡ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﺘﻰ ﺘﺸﻤل ﺍﻻﻭﺍﻤﺭ ﻭﺴﻨﻔﺼﻠﻬﺎ ﻓﻴﻤﺎ ﺒﻌﺩ ‪.‬‬
‫ﻭﻴﻜﻭﻥ ﺸﻜل ﺍﻟﺩﺍﻟﺔ ﺍﻟﺭﺌﻴﺴﻴﺔ ﻫﻜﺫﺍ‬
‫)‪public static void main(String []arg‬‬
‫{‬
‫ﺍﻟﻌﺒﺎﺭﺍﺕ‬
‫}‬
‫ﻭﺴﻨﻌﺭﻑ ﻓﻴﻤﺎ ﺒﻌﺩ ﻤﺎﻫﻰ ﺍﻟﻜﻠﻤﺎﺕ ﻗﺒل ‪.main‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺴﺎﺩﺱ‪:‬‬
‫ﺤﺭﻭﻑ ﺍﻟﺠﺎﻓﺎ‬
‫ﺘﺘﺎﻟﻑ ﺤﺭﻭﻑ ﺍﻟﺠﺎﻑ ﻤﻤﺎ ﻴﻠﻰ ‪:‬‬
‫‪ -1‬ﺍﻟﺤﺭﻭﻑ ﺍﻻﺒﺠﺩﻴﺔ )‪ (letters‬ﻭﻫﻰ ﺍﻟﺤﺭﻭﻑ ﺍﻟﻜﺒﻴﺭﺓ )‪ (Capital letters‬ﻤﻥ ‪ A‬ﺍﻟﻰ ‪ Z‬ﻭﻜﺫﻟﻙ‬
‫ﺍﻟﺤﺭﻭﻑ ﺍﻟﺼﻐﻴﺭﺓ )‪ (Small letters‬ﻤﻥ ‪ a‬ﺍﻟﻰ ‪z‬‬

‫‪ -2‬ﺍﻻﺭﻗﺎﻡ ﺍﻟﻌﺩﺩﻴﺔ )‪ (Digits‬ﻭﻫﻰ ﺍﻻﺭﻗﺎﻡ ﻤﻥ ‪ 0‬ﺍﻟﻰ ‪9‬‬

‫‪ -3‬ﺍﻟﺤﺭﻭﻑ ﺍﻟﺨﺎﺼﺔ )‪ (Special Characters‬ﻭﻫﻰ ﺘﻠﻙ ﺍﻟﺤﺭﻭﻑ ﺍﻟﺘﻰ ﻟﻴﺴﺕ ﺒﺎﻋﺩﺍﺩ ﺍﻭ ﺒﺤﺭﻭﻑ‬
‫ﺍﺒﺠﺩﻴﺔ ﻭﻟﻜﻥ ﺘﻜﻭﻥ ﻋﻼﻤﺎﺕ ﺭﻤﺯﻴﺔ ﻭﻤﻨﻬﺎ‬
‫ﺍﻟﻤﻌﻨﻰ‬ ‫ﺍﻟﻌﻼﻤﺔﺍﻟﺭﻤﺯﻴﺔ‬
‫ﺍﻟﺠﻤﻊ‬ ‫‪+‬‬
‫ﺍﻟﻁﺭﺡ‬ ‫‪-‬‬
‫ﺍﻟﻘﺴﻤﺔ‬ ‫‪/‬‬
‫ﺍﻟﻀﺭﺏ‬ ‫*‬
‫ﺍﺸﺎﺭﺓ ﺍﻟﻤﺴﺎﻭﺍﻩ‬ ‫=‬
‫ﻋﻼﻤﺔ ﺍﻟﻨﺴﺒﺔ‬ ‫‪%‬‬
‫ﻋﻼﻤﺔ ﺍﻟﺘﻌﺠﺏ‬ ‫!‬
‫ﺸﺭﻁﺔ ﻤﺎﺌﻠﺔ ﻟﻠﺨﻠﻑ‬ ‫\‬
‫ﻋﻼﻤﺔ ﺘﻨﺼﻴﺹ‬ ‫"‬
‫ﻋﻼﻤﺔ ﺘﻨﺼﻴﺹ ﻤﻔﺭﺩﺓ‬ ‫'‬
‫ﺍﻟﻨﻘﻁﺔ‬ ‫‪.‬‬
‫‪,‬‬
‫ﻓﺎﺼﻠﺔ‬
‫;‬
‫ﻓﺎﺼﻠﺔ ﻤﻨﻘﻭﻁﺔ‬
‫ﻗﻭﺱ ﺩﺍﺌﺭﻯ ﻴﻤﻴﻨﻰ‬ ‫)‬
‫ﻗﻭﺱ ﺩﺍﺌﺭﻯ ﻴﺴﺎﺭﻯ‬ ‫(‬
‫ﻗﻭﺱ ﻤﺭﺒﻊ ﻴﻤﻴﻨﻰ‬ ‫]‬
‫ﻗﻭﺱ ﻤﺭﺒﻊ ﻴﺴﺎﺭﻯ‬ ‫[‬
‫ﻋﻼﻤﺔ ﺍﺼﻐﺭ ﻤﻥ‬ ‫<‬
‫>‬
‫ﻋﻼﻤﺔ ﺍﻜﺒﺭ ﻤﻥ‬ ‫?‬
‫ﻋﻼﻤﺔ ﺍﺴﺘﻔﻬﺎﻡ‬ ‫‪:‬‬
‫ﺍﻟﺸﺎﺭﺤﺔ‬

‫ﻜﻤﺎ ﻴﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻡ ﺨﻠﻴﻁ ﻤﻥ ﻫﺫﻩ ﺍﻟﺭﻤﻭﺯ ﻓﻌﻠﻰ ﺴﺒﻴل ﺍﻟﻤﺜﺎل ‪ \n‬ﻴﻌﻨﻰ ﺴﻁﺭ ﺠﺩﻴﺩ‬
‫ﻭﻴﻌﺭﻑ ﻤﺜل ﻫﺫﺍ ﺍﻟﺨﻠﻁ ﻟﻠﺭﻤﻭﺯ ﺒﺘﺴﻠﺴﻼﺕ ﺍﻭ ﺘﺘﺎﺒﻌﺎﺕ ﺍﻟﻬﺭﻭﺏ )‪ (escape sequences‬ﻭﺴﻨﺎﻗﺸﻬﺎ‬
‫ﻻﺤﻘﺎ ﻭﻟﻜﻥ ﺒﺒﺴﺎﻁﺔ ﺒﺎﻟﺭﻏﻡ ﻤﻥ ﺍﻥ ﺍﻟﺭﻤﺯ ﺍﻟﺴﺎﺒﻕ ﻴﺘﻜﻭﻥ ﻤﻥ ﺭﻤﺯﻴﻥ \ ﻭ ‪ n‬ﻭﻟﻜﻨﻪ ﻴﻌﺘﺒﺭ ﺭﻤﺯ‬
‫ﻭﺍﺤﺩ‪.‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺴﺎﺒﻊ‪:‬‬
‫ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﻤﺤﺠﻭﺯﺓ‬
‫ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﻤﺤﺠﻭﺯﺓ )‪ (reserved words‬ﺍﻭ ﺍﻟﻜﻠﻤﺎﺕ ﺍﻟﺭﺌﻴﺴﻴﺔ )‪ (main words‬ﻭﻫﻰ ﺫﺍﺕ ﻤﻌﺎﻨﻰ‬
‫ﻨﻤﻁﻴﺔ ﺍﻭ ﻗﻴﺎﺴﻴﺔ ﺴﺎﺒﻘﺔ ﺍﻟﺘﻌﺭﻴﻑ ﻓﻰ ﺍﻟﺠﺎﻓﺎ ﻭﻴﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻤﻬﺎ ﻟﻠﻐﺭﺽ ﺍﻟﻤﺤﺩﺩ ﻟﻬﺎ ﻓﻘﻁ ﻭﻻﻴﻤﻜﻥ‬
‫ﺍﺴﺘﺨﺩﺍﻤﻬﺎ ﻜﻤﻌﺭﻓﺎﺕ ﻴﻌﺭﻓﻬﺎ ﺍﻟﻤﺒﺭﻤﺞ ﻜﻤﺎ ﻻ ﻴﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻤﻬﺎ ﻜﻤﺘﻐﻴﺭﺍﺕ ﻭﺫﻟﻙ ﺤﺘﻰ ﻻﻴﺤﺩﺙ‬
‫ﺒﺴﺒﺒﻬﺎ ﺍﺭﺘﺒﺎﻙ ﺍﺜﻨﺎﺀ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺭﺠﻤﺔ ﻭﻫﻰ‬
‫‪auto‬‬ ‫‪,‬‬ ‫‪extern‬‬ ‫‪,‬‬ ‫‪sizeof‬‬ ‫‪,‬‬ ‫‪break‬‬ ‫‪,‬‬ ‫‪if‬‬
‫‪float‬‬ ‫‪,‬‬ ‫‪static‬‬ ‫‪,‬‬ ‫‪case‬‬ ‫‪,‬‬ ‫‪struct‬‬ ‫‪,‬‬ ‫‪for‬‬
‫‪char‬‬ ‫‪,‬‬ ‫‪goto‬‬ ‫‪,‬‬ ‫‪switch‬‬ ‫‪,‬‬ ‫‪const‬‬ ‫‪,‬‬ ‫‪int‬‬
‫‪typeof‬‬ ‫‪,‬‬ ‫‪continue‬‬ ‫‪,‬‬ ‫‪union‬‬ ‫‪,‬‬ ‫‪default‬‬ ‫‪,‬‬ ‫‪do‬‬
‫‪long‬‬ ‫‪,‬‬ ‫‪register‬‬ ‫‪,‬‬ ‫‪void‬‬ ‫‪,‬‬ ‫‪double‬‬ ‫‪,‬‬ ‫‪else‬‬
‫‪return‬‬ ‫‪,‬‬ ‫‪volatile‬‬ ‫‪,‬‬ ‫‪short‬‬ ‫‪,‬‬ ‫‪while‬‬ ‫‪,‬‬ ‫‪for‬‬
‫‪while‬‬ ‫‪,‬‬ ‫‪enum‬‬ ‫‪,‬‬ ‫‪signed‬‬ ‫‪,‬‬ ‫‪near‬‬ ‫‪,‬‬ ‫‪asm‬‬
‫‪entry‬‬ ‫‪,‬‬ ‫‪fortran‬‬ ‫‪,‬‬ ‫‪huge‬‬ ‫‪,‬‬ ‫‪pascal‬‬ ‫‪,‬‬ ‫‪ada‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﺎﻤﻥ ‪:‬‬


‫ﺍﻟﻤﻌﺭﻓﺎﺕ ‪:‬‬
‫ﺍﻟﻤﻌﺭﻓﺎﺕ )‪ (identifiers‬ﻫﻰ ﺘﻠﻙ ﺍﻻﺴﻤﺎﺀ ﺍﻟﺘﻰ ﺘﻌﻁﻰ ﻟﻌﻨﺎﺼﺭ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻤﺜل ‪:‬‬
‫ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ‪ ,‬ﺍﻟﺩﻭﺍل ‪ ,‬ﺍﻟﻤﻨﻅﻭﻤﺎﺕ‬
‫ﺍﻤﺎ ﺸﺭﻭﻁ ﺍﻟﻤﻌﺭﻑ ‪:‬‬
‫‪ -1‬ﺍﻥ ﻴﺤﺘﻭﻯ ﻋﻠﻰ ﺤﺭﻭﻑ ﺍﺒﺠﺩﻴﺔ ﻭﺍﺭﻗﺎﻡ ﻭﻋﻼﻤﺔ ﺍﻟﺸﺭﻁﺔ ﺍﻟﺘﺤﺘﻴﺔ )_( )‪ (under score‬ﺒﺎﻯ‬
‫ﺘﺭﺘﻴﺏ‬
‫‪ -2‬ﻤﻥ ﺍﻟﻀﺭﻭﺭﻯ ﺍﻥ ﻴﻜﻭﻥ ﺍﻭل ﺭﻤﺯ ﻓﻰ ﺍﻟﻤﻌﺭﻑ ﺤﺭﻓﺎ ﺍﺒﺠﺩﻴﺎ ﻭﻴﺴﻤﺢ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺍﻟﺤﺭﻭﻑ‬
‫ﺍﻟﺼﻐﻴﺭﺓ ﺍﻭ ﺍﻟﻜﺒﻴﺭﺓ )ﺍﻻﺴﺘﺨﺩﺍﻡ ﺍﻟﺸﺎﺌﻊ ﻴﻔﻀل ﺍﺴﺘﺨﺩﺍﻡ ﺤﺭﻭﻑ ﺼﻐﻴﺭﺓ ﻟﻤﻌﻅﻡ ﺍﻨﻭﺍﻉ ﺍﻟﻤﻌﺭﻓﺎﺕ(‬
‫ﻴﻤﻜﻥ ﻜﺫﻟﻙ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﺸﺭﻁﺔ ﺍﻟﺘﺤﺘﻴﺔ )_( ﻭﺘﻌﺘﺒﺭ ﻤﺜل ﺍﻟﺤﺭﻑ ﻓﻰ ﺒﺩﺍﻴﺔ ﺍﻟﻤﻌﺭﻑ ﻭﻟﻜﻥ ﻴﻨﺩﺭ‬
‫ﺤﺩﻭﺙ ﻫﺫﺍ‬
‫‪ -3‬ﻴﺠﺏ ﺍﻥ ﻴﻜﻭﻥ ﺍﻟﻤﻌﺭﻑ ﺨﺎﻟﻴﺎ ﻤﻥ ﺍﻟﺭﻤﻭﺯ ﺍﻟﺨﺎﺼﺔ ﻤﺎﻋﺩﺍ )_(‬
‫‪ -4‬ﻻ ﺘﺴﺘﺨﺩﻡ ﺍﻟﺤﺭﻭﻑ ﺍﻟﺼﻐﻴﺭﺓ ﻭﺍﻟﺤﺭﻭﻑ ﺍﻟﻜﺒﻴﺭﺓ ﺒﺎﻟﺘﺒﺎﺩل )ﺍﻯ ﺍﻥ ﺍﻟﺤﺭﻭﻑ ﺍﻟﻜﺒﻴﺭﺓ ﻟﻴﺴﺕ‬
‫ﻤﻜﺎﻓﺌﺔ ﻟﻠﺤﺭﻭﻑ ﺍﻟﺼﻐﻴﺭﺓ ﺍﻟﻤﻨﺎﻅﺭﻩ ﻟﻬﺎ( ﺍﻯ ‪ value‬ﻟﻴﺴﺕ ﻫﻰ ﻨﻔﺴﻬﺎ ‪VALUE‬‬
‫‪ -5‬ﻴﻔﻀل ﺍﻥ ﻴﻜﻭﻥ ﻟﻠﻤﻌﺭﻑ ﺍﻟﻁﻭل ﺍﻟﻤﻨﺎﺴﺏ ﻭﺍﻥ ﻴﻜﻭﻥ ﻭﺍﻀﺤﺎ ﻭﺫﺍ ﻤﻌﻨﻰ ﻭﻤﺩﻟﻭل‬
‫‪ -6‬ﻴﻔﻀل ﺍﻥ ﻴﻜﻭﻥ ﺍﺴﻡ ﺍﻯ ﺩﺍﻟﻪ ﺍﻭ ﻤﺘﻐﻴﺭ ﻴﺒﺩﺃ ﺒﺤﺭﻑ ﺼﻐﻴﺭ ﻭﺍﺫﺍ ﻜﺎﻥ ﻤﻜﻭﻥ ﻤﻥ ﻜﻠﻤﺘﻴﻥ ﺘﺒﺩﺃ‬
‫ﺍﻻﻭﻟﻰ ﺒﺤﺭﻑ ﺼﻐﻴﺭ ﻭﺍﻟﺜﺎﻨﻴﺔ ﺘﺒﺩﺃ ﺒﺠﺭﻑ ﻜﺒﻴﺭ‬
‫‪ -7‬ﺍﺴﻡ ﺍﻟﻜﺎﺌﻥ ﻴﺒﺩﺃ ﺒﺤﺭﻑ ﻜﺒﻴﺭ ﻭﺍﺫﺍ ﻜﺎﻥ ﻤﻜﻭﻥ ﻤﻥ ﻜﻠﻤﺘﻴﻥ ﺘﻜﻭﻥ ﺒﺩﺍﻴﺔ ﻜﻼ ﻤﻨﻬﻤﺎ ﺤﺭﻑ ﻜﺒﻴﺭ‬
‫ﺍﻤﺜﻠﻪ ﺼﺤﻴﺤﺔ ﻟﻠﻤﻌﺭﻓﺎﺕ‪:‬‬
‫‪X‬‬ ‫‪,‬‬ ‫‪area10‬‬ ‫‪,‬‬ ‫‪Y15‬‬ ‫‪,‬‬ ‫‪tax_rate‬‬
‫‪Sum_4 ,‬‬ ‫‪total_value‬‬ ‫‪,‬‬ ‫‪REAL‬‬ ‫‪,‬‬ ‫‪Name‬‬
‫‪_temperature‬‬
‫ﺍﻤﺜﻠﺔ ﻋﻠﻰ ﺍﺴﻤﺎﺀ ﻤﻌﺭﻓﺎﺕ ﻏﻴﺭ ﺼﺤﻴﺤﺔ‬
‫‪th‬‬
‫‪&address‬‬ ‫‪,‬‬ ‫‪5‬‬ ‫‪,‬‬ ‫‪last name‬‬ ‫‪,‬‬ ‫‪order-no‬‬ ‫‪,‬‬
‫‪char‬‬ ‫‪,‬‬ ‫"‪"a‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺘﺎﺴﻊ‪:‬‬
‫ﺍﻟﺘﻌﻠﻴﻘﺎﺕ‬
‫ﺍﻟﺘﻌﻠﻴﻘﺎﺕ )‪ (comments‬ﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﺒﻌﺽ ﺍﻻﻭﺍﻤﺭ ﺍﻻﻴﻀﺎﺤﻴﺔ ﻭﻻ ﻴﻜﻭﻥ ﻟﻬﺎ ﺍﻯ ﺘﺄﺜﻴﺭ ﻻﻨﻬﺎ‬
‫ﻻﺘﻌﺘﺒﺭ ﺠﺯﺀ ﻤﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ ‪.‬‬
‫ﻭﺘﻭﻀﻊ ﺍﻟﺘﻌﻠﻴﻘﺎﺕ ﻓﻰ ﺍﻯ ﻤﻜﺎﻥ ﺩﺍﺨل ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﻤﻤﻜﻥ ﺍﻥ ﻴﺨﻠﻭ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻤﻨﻬﺎ ﻭﻴﺒﺩﺍ ﺍﻟﺘﻌﻠﻴﻕ ﺍﻥ‬
‫ﻭﺠﺩ ﺒﺎﻟﻌﻼﻤﺔ *‪ /‬ﻭﻴﻨﺘﻬﻰ ﺒﺎﻟﻌﻼﻤﺔ ﺍﻟﺭﻤﺯﻴﺔ ‪ */‬ﻭﻫﺫﺍ ﻴﻌﻨﻰ ﺍﻥ ﻤﺎ ﻴﻘﻊ ﻤﻥ ﺴﻁﻭﺭ ﺒﻴﻥ ﺍﻟﻌﻼﻤﺘﻴﻥ‬
‫ﺍﻨﻤﺎ ﻫﻭ ﻤﺨﺼﺹ ﻟﻠﻤﻼﺤﻅﺎﺕ ﻭﻫﺫﺍ ﺸﺄﻨﻪ ﺍﻥ ﻴﻔﻴﺩ ﻓﻰ ﺘﻌﺭﻴﻑ ﺍﻟﺴﻤﺎﺕ ﺍﻻﺴﺎﺴﻴﺔ ﻟﻠﺒﺭﻨﺎﻤﺞ ﺍﻭﻓﻰ‬
‫ﺘﻭﻀﻴﺢ ﺍﻟﻤﻨﻁﻕ ﺍﻟﻤﺸﻤﻭل ﻓﻰ ﺍﻟﺴﻤﺎﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻟﻠﺒﺭﻨﺎﻤﺞ ﻜﻤﺎ ﻴﻔﻴﺩ ﻓﻰ ﺍﻋﺎﺩﺓ ﻗﺭﺍﺀﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫ﻭﺘﻌﺩﻴﻠﻪ ‪.‬‬
‫ﻭﻟﻠﻤﺒﺭﻤﺞ ﺍﻥ ﻴﻜﺘﺏ ﻤﺎ ﻴﺸﺎﺀ ﻤﻥ ﻤﻼﺤﻅﺎﺕ ﺒﻴﻥ ﺍﻟﻌﻼﻤﺘﻴﻥ ﻗﺩ ﺘﺫﻜﺭﻩ ﺒﻤﻀﻤﻭﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫ﻭﺍﻟﻐﺭﺽ ﻤﻨﻪ ﺍﻭ ﺒﻌﺽ ﺍﻟﺨﻁﻭﺍﺕ ﻜﻤﺎ ﺘﻔﻴﺩ ﺍﻴﻀﺎ ﻓﻰ ﺍﻟﺸﺭﺡ ‪.‬‬
‫ﻭﻗﺩ ﻴﺤﺘﻭﻯ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻋﻠﻰ ﺍﻯ ﻋﺩﺩ ﻤﻥ ﺴﻁﻭﺭ ﺍﻟﻤﻼﺤﻅﺎﺕ ﻓﻬﻰ ﻻ ﺘﻬﻡ ﺍﻟﻤﺘﺭﺠﻡ ‪.‬‬
‫ﻭﺍﺫﺍ ﻜﺎﻥ ﺍﻟﺘﻌﻠﻴﻕ ﺴﻁﺭ ﻭﺍﺤﺩ ﻓﻘﻁ ﻴﻤﻜﻥ ﺍﻥ ﺘﻜﻭﻥ ﻋﻼﻤﺔ ﺍﻟﺘﻌﻠﻴﻕ ﻫﻰ ‪. //‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﻌﺎﺸﺭ ‪:‬‬


‫ﺘﺴﻠﺴﻼﺕ ﺍﻟﻬﺭﻭﺏ‬
‫ﻫﻨﺎﻙ ﺒﻌﺽ ﺭﻤﻭﺯ ﺍﻟﺤﺭﻭﻑ ﺍﻟﺨﺎﺼﺔ ﻋﺯﻴﺯﺉ ﺍﻟﻘﺎﺭﺉ ﻭﻴﻁﻠﻕ ﻋﻠﻴﻬﺎ ﺍﺤﻴﺎﻨﺎ ﺤﺭﻭﻑ ﺍﻟﻬﺭﻭﻑ‬
‫)‪ (escape character‬ﻭﺤﺭﻑ ﺍﻟﻬﺭﻭﺏ ﻫﻭ ﺤﺭﻑ ﻴﺴﺘﺨﺩﻡ ﻟﻠﺩﻻﻟﺔ ﻋﻠﻰ ﺍﻥ ﺍﻟﺤﺭﻭﻑ ﺍﻟﺘﺎﻟﻴﺔ ﻟﻪ ﻟﻬﺎ‬
‫ﻤﻌﻨﻰ ﺨﺎﺹ ﺒﺎﺨﺘﺼﺎﺭ ﺤﺭﻭﻑ ﺍﻟﻬﺭﻭﺏ ﻫﻰ ﺤﺭﻭﻑ ﻟﻬﺎ ﻫﺩﻑ ﻤﻌﻴﻥ ﻭﺘﺒﺩﺃ ﺩﺍﺌﻤﺎ \ ﺸﺭﻁﺔ ﻤﺎﺌﻠﺔ‬
‫ﺍﻟﻰ ﺍﻟﺨﻠﻑ ﻭﺒﻌﺩﻫﺎ ﻴﺎﺘﻰ ﺍﻟﺤﺭﻑ ﺍﻭ ﺍﻟﺭﻤﺯ ﻭﺍﻻﺜﻨﻴﻥ ﻤﻌﺎ ﻴﻤﺜﻼﻥ ﺭﻤﺯ ﻭﺍﺤﺩ ﻓﻘﻁ ‪.‬‬
‫ﻨﻭﺭﺩ ﻓﻴﻤﺎ ﻴﻠﻰ ﺘﺴﻠﺴﻼﺕ ﺍﻟﻬﺭﻭﺏ ﺍﻟﺸﺎﺌﻌﺔ ﺍﻻﺴﺘﺨﺩﺍﻡ‬
‫ﺍﻟﺭﻤﺯ‬ ‫ﺍﻟﻭﻅﻴﻔﺔ‬
‫‪\b‬‬ ‫ﺍﻟﻌﻭﺩﺓ ﻤﺴﺎﻓﺔ ﻟﻠﺨﻠﻑ‬
‫‪\n‬‬ ‫ﺴﻁﺭ ﺠﺩﻴﺩ‬
‫‪\r‬‬ ‫ﺍﻟﺒﺩﺀ ﻤﻥ ﺍﻭل ﺍﻟﺴﻁﺭ‬
‫‪\t‬‬ ‫ﺍﻟﺘﻘﺩﻡ ‪ 7‬ﻤﺴﺎﻓﺎﺕ‬
‫"\‬ ‫ﻟﻜﺘﺎﺒﺔ ﻋﻼﻤﺔ ﺍﻟﺘﻨﺼﻴﺹ‬
‫'\‬ ‫ﻟﻜﺘﺎﺒﺔ ﻋﻼﻤﺔ ﺍﻟﺘﻨﺼﻴﺹ ﺍﻟﻔﺭﺩﻴﺔ‬
‫?\‬ ‫ﻟﻜﺘﺎﺒﺔ ﻋﻼﻤﺔ ﺍﻻﺴﺘﻔﻬﺎﻡ‬
‫\\‬ ‫ﻟﻜﺘﺎﺒﺔ ﺸﺭﻁﺔ ﻤﺎﺌﻠﺔ ﻟﻠﺨﻠﻑ‬
‫ﺍﻟﺩﺭﺱ ﺍﻟﺤﺎﺩﻯ ﻋﺸﺭ‪:‬‬
‫ﺍﻟﺜﻭﺍﺒﺕ‬
‫ﻴﻭﺠﺩ ﻓﻰ ﻟﻐﺔ ﺍﻟﺠﺎﻓﺎ ﺍﻟﻌﺩﻴﺩ ﻤﻥ ﺍﻨﻭﺍﻉ ﺍﻟﺜﻭﺍﺒﺕ ﻭﺴﻨﺘﻨﺎﻭل ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻫﺫﻩ ﺍﻻﻨﻭﺍﻉ ﺒﺸﺊ ﻤﻥ‬
‫ﺍﻟﺘﻔﺼﻴل‪.‬‬
‫‪ -1‬ﺜﻭﺍﺒﺕ ﺼﺤﻴﺤﺔ ‪integer constant‬‬
‫ﻫﻰ ﺘﻠﻠﻙ ﺍﻻﻋﺩﺍﺩ ﺫﺍﺕ ﺍﻟﻘﻴﻡ ﺍﻟﺼﺤﻴﺤﺔ ﺍﻟﺘﻰ ﺘﺤﻭﻯ ﺘﺴﻠﺴﻼ ﻤﻥ ﺍﻻﺭﻗﺎﻡ ﺴﻭﺍﺀ ﻜﺎﻨﺕ ﺍﻋﺩﺍﺩ‬
‫ﺴﺎﻟﺒﺔ ﺍﻭ ﺍﻋﺩﺍﺩ ﻤﻭﺠﺒﺔ ﺍﻭ ﺼﻔﺭ‪.‬‬
‫ﻭﻴﺠﺏ‬
‫ﺍﻻ ﻴﺤﺘﻭﻯ ﺍﻟﺜﺎﺒﺕ ﺍﻟﺼﺤﻴﺢ ﻋﻠﻰ ﻨﻘﻁﺔ ﻋﺸﺭﻴﺔ ﺍﻭ ﺍﺴﻴﺔ‪.‬‬
‫ﻴﺴﺒﻕ ﺍﻟﻌﺩﺩ ﺍﻟﺴﺎﻟﺏ ﺒﺎﺸﺎﺭﺓ – ﻟﺒﻴﺎﻥ ﺍﻨﻪ ﻋﺩﺩ ﺴﺎﻟﺏ‬
‫ﻻﻴﺘﻜﻭﻥ ﺍﻟﻌﺩﺩ ﺍﻟﺼﺤﻴﺢ ﻤﻥ ﺍﻯ ﺭﻤﺯ ﺨﺎﺹ ﺍﻭ ﺤﺭﻑ ﺍﺒﺠﺩﻯ‬
‫ﻻ ﻴﻜﻭﻥ ﺍﻟﺭﻗﻡ ﺍﻻﻭل ﺼﻔﺭ‬
‫‪ -2‬ﺜﻭﺍﺒﺕ ﻤﺘﺤﺭﻜﺔ ﺍﻟﻨﻘﻁﺔ ‪floating point‬‬
‫ﺍﻟﺜﺎﺒﺕ ﺍﻟﻤﺘﺤﺭﻙ ﺍﻟﻨﻘﻁﺔ ﻫﻭ ﻋﺩﺩ ﻟﻼﺴﺎﺱ ‪ 10‬ﻴﺤﺘﻭﻯ ﻋﻠﻰ ﻋﻼﻤﺔ ﻋﺸﺭﻴﺔ ﺍﻭ ﻋﻠﻰ ﺍﺱ‬
‫ﺍﻭ ﻋﻠﻰ ﻜل ﻤﻨﻬﻤﺎ ﻭﻻ ﻴﺤﺘﻭﻯ ﻋﻠﻰ ﺍﻯ ﺭﻤﺯ ﺍﻭ ﺤﺭﻑ ﻭﻗﺩ ﻴﻜﻭﻥ ﺍﻟﻌﺩﺩ ﻤﻭﺠﺒﺎ ﺍﻭ ﺴﺎﻟﺒﺎ‬
‫ﻭﻴﺭﻤﺯ ﻟﻼﺴﺎﺱ ‪ 10‬ﺒﺤﺭﻑ ‪ e‬ﺍﻭ ‪ E‬ﻭﻴﻤﻜﻥ ﺍﻥ ﻴﻜﻭﻥ ﺍﻻﺱ ﺴﺎﻟﺏ ﺍﻭ ﻤﻭﺠﺏ ﻭﻟﻜﻥ ﻴﺠﺏ ﺍﻻ‬
‫ﻴﺤﺘﻭﻯ ﻋﻠﻰ ﻋﻼﻤﺔ ﻋﺸﺭﻴﺔ‬
‫ﻓﻤﺜﻼ ﺍﻟﺭﻗﻡ ‪ 40000‬ﻴﻤﻜﻥ ﺍﻥ ﻴﻜﺘﺏ ‪4e5‬‬
‫ﻗﺩ ﻴﺨﻀﻊ ﺍﺤﻴﺎﻨﺎ ﺜﺎﺒﺕ ﺍﻟﻨﻘﻁﺔ ﺍﻟﻤﺘﺤﺭﻜﺔ ﺍﻟﻰ ﻋﻤﻠﻴﺎﺕ ﺘﻘﺭﻴﺏ ﻓﻤﺜﻼ ﺍﻟﻌﺩﺩ )‪(0.9999999999999‬‬
‫ﻨﺠﺩ ﺍﻨﻪ ﻴﺘﻡ ﺘﻘﺭﻴﺒﻪ ﺍﻟﻰ ‪1‬‬
‫ﻭﻻﻴﻤﻜﻥ ﺍﺴﺘﺨﺩﺍﻡ ﻗﻴﻡ ﻤﺘﺤﺭﻜﺔ ﺍﻟﻨﻘﻁﺔ ﻓﻰ ﺍﻏﺭﺍﺽ ﺍﻟﻌﺩ ﺍﻭ ﺍﻟﻔﻬﺭﺴﺔ ‪.‬‬
‫‪ -3‬ﺜﻭﺍﺒﺕ ﺤﺭﻓﻴﺔ ‪character constants‬‬
‫ﻓﻴﻤﺎ ﻴﻠﻰ ﺍﻤﺜﻠﻪ ﻟﺒﻌﺽ ﺍﻟﺜﻭﺍﺒﺕ ﺍﻟﺤﺭﻓﻴﺔ‬
‫'‪'a‬‬ ‫‪,‬‬ ‫'‪'5‬‬ ‫‪,‬‬ ‫'‪'\n‬‬ ‫‪,‬‬ ‫‪65‬‬
‫‪.‬‬ ‫ﺍﻯ ﺍﻥ ﺍﻟﺜﻭﺍﺒﺕ ﺍﻟﺤﺭﻓﻴﺔ ﻴﻤﻜﻥ ﺍﻥ ﺘﻜﻭﻥ ﺭﻗﻡ ﺍﻭ ﺤﺭﻑ ﺍﻭ ﺭﻤﺯ ﻤﻥ ﻤﺘﺴﻠﺴﻼﺕ ﺍﻟﻬﺭﻭﺏ‬
‫ﺍﻤﺎ ﺍﻟﺭﻗﻡ ﺍﻻﺨﻴﺭ‪ 65‬ﻓﻬﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﺍﻟﺤﺭﻑ '‪ 'A‬ﺍﻯ ﺍﻥ ﺍﻟﺜﺎﺒﺕ ﺍﻟﺤﺭﻓﻰ ﻴﻤﻜﻥ ﺍﻥ ﻴﻜﻭﻥ ﺭﻗﻡ ﻭﻫﺫﺍ‬
‫ﺍﻟﺭﻗﻡ ﺴﻴﺘﻡ ﺘﺤﻭﻴﻠﻪ ﺍﻟﻰ ﺍﻟﺭﻗﻡ ﺍﻟﻤﻨﺎﻅﺭ ﻟﻪ ﻓﻰ ‪ ASCII‬ﺍﻯ ﺍﻻﺴﻜﻰ ﻜﻭﺩ ﻭﻫﻭ ﺍﻥ ﺍﻟﺤﺭﻑ ﻴﺘﻡ ﺘﻤﺜﻴﻠﻪ‬
‫ﺒﺭﻗﻡ ﻤﻜﻭﻥ ﻤﻥ ‪ 7‬ﺒﺕ‬
‫‪ -4‬ﺜﻭﺍﺒﺕ ﺍﻟﺴﻠﺴﻠﺔ ‪string constant‬‬
‫ﻴﺤﺘﻭﻯ ﺜﺎﺒﺕ ﺍﻟﺴﻠﺴﻠﺔ ﻋﻠﻰ ﺍﻯ ﻋﺩﺩ ﻤﻥ ﺍﻟﺭﻤﻭﺯ ﺍﻭ ﺍﻟﻔﺭﻏﺎﺕ ﻭﺘﻜﻭﻥ ﻤﺤﺼﻭﺭﺓ ﺒﻴﻥ‬
‫ﻋﻼﻤﺘﻰ ﺘﻨﺼﻴﺹ " " ‪.‬‬
‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﺎﻨﻰ ﻋﺸﺭ ‪:‬‬
‫ﺍﻟﻤﺘﻐﻴﺭﺍﺕ‬
‫ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺍﻥ ﺍﻟﺠﺎﻓﺎ ﻏﻨﻴﺔ ﺒﺎﻟﻤﺘﻐﻴﺭﺍﺕ ﻤﻥ ﺍﻻﻨﻭﺍﻉ ﺍﻟﻤﺨﺘﻠﻔﺔ ‪.‬‬
‫ﻭﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻫﻰ ﻤﻌﺭﻓﺎﺕ ﺍﻭ ﺍﺴﻤﺎﺀ ﺭﻤﺯﻴﺔ ﻴﺨﺼﺹ ﻟﻬﺎ ﺍﻤﺎﻜﻥ ﺘﺨﺯﻴﻥ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ﻭﺍﻟﺘﻰ ﺘﺘﺤﻭل‬
‫ﻗﻴﻤﺘﻬﺎ ﻭﺘﺘﻐﻴﺭ ﻤﻥ ﻗﻴﻤﺔ ﺍﻟﻰ ﺍﺨﺭﻯ ﺤﻴﺙ ﻴﻤﻜﻥ ﺍﻟﺭﺠﻭﻉ ﺍﻟﻰ ﺍﻟﻘﻴﻤﺔ ﻋﻥ ﻁﺭﻴﻕ ﺍﻻﺴﻡ ﺍﻟﻤﻌﻁﻰ ﻟﻬﺎ‬
‫ﻭﺫﻟﻙ ﺍﺜﻨﺎﺀ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺩﻭﻥ ﺍﻥ ﻴﺘﻐﻴﺭ ﻨﻭﻉ ﺍﻟﺒﻴﺎﻨﺎﺕ )ﺴﻴﺘﻡ ﺸﺭﺡ ﻓﻴﻤﺎ ﺒﻌﺩ ﻨﻭﻉ ﺍﻟﺒﻴﺎﻨﺎﺕ( ﻭﻴﻠﺯﻡ‬
‫ﺍﻻﻋﻼﻥ ﻋﻥ ﻨﻭﻉ ﺍﻟﻤﺘﻐﻴﺭ ﺼﺭﺍﺤﺔ ﻗﺒل ﺍﺴﺘﺨﺩﺍﻤﻪ ﻓﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ‪.‬‬
‫ﻭﻓﻰ ﺍﻟﻐﺎﻟﺏ ﻤﺎ ﻴﺘﻡ ﺍﻻﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻭﺘﻭﻀﻴﺢ ﻨﻭﻋﻬﺎ ﻓﻰ ﻤﺴﺘﻬل ﺍﻟﺒﺭﻨﺎﻤﺞ ‪.‬‬
‫ﻨﺘﻨﺎﻭل ﺍﻻﻥ ﺒﺸﺊ ﻤﻥ ﺍﻟﺘﻔﺼﻴل ﺍﻟﻤﺘﻐﻴﺭﺍﺕ‬
‫‪ -1‬ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻟﺼﺤﻴﺤﺔ ‪ :‬ﻭﻫﻰ ﺘﻠﻙ ﺍﻟﺘﻰ ﻴﺨﺯﻥ ﻓﻴﻬﺎ ﺍﻟﻼﻋﺩﺍﺩ ﺍﻟﺼﺤﻴﺤﺔ ﺍﻟﺴﺎﻟﺒﺔ ﺍﻭ ﺍﻟﻤﻭﺠﺒﺔ‬
‫ﻴﻭﺠﺩ ﻤﻨﻬﺎ ﻨﻭﻋﺎﻥ ﺍﻋﺩﺍﺩ ﺼﺤﻴﺤﺔ ﺼﻐﻴﺭﺓ ﺍﻭ ﻋﺩﺩ ﻁﻭﻴل ﺼﺤﻴﺢ ﻭﺍﻻﺨﻴﺭﺓ ﻤﺨﺼﺼﺔ ﻟﻼﺭﻗﺎﻡ‬
‫ﺍﻟﻜﺒﻴﺭﺓ ﺠﺩﺍ‬
‫‪ -2‬ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻤﺘﺤﺭﻜﺔ ﺍﻟﻨﻘﻁﺔ ‪ :‬ﻭﻫﻰ ﺘﻠﻙ ﺍﻟﺘﻰ ﺘﺤﺘﻭﻯ ﻋﻠﻰ ﻋﻼﻤﺔ ﻋﺸﺭﻴﺔ ﺍﻭ ﺍﻟﻌﺩﺩ ﺍﻟﺫﻯ ﺒﻪ‬
‫ﻗﻴﻤﺔ ﻜﺴﺭﻴﺔ ﺍﻭ ﺒﻤﻌﻨﻰ ﺍﺩﻕ ﺍﻻﻋﺩﺍﺩ ﺍﻟﺤﻘﻴﻘﻴﺔ‬
‫‪ -3‬ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻤﺯﺩﻭﺠﺔ ﺍﻟﺩﻗﺔ ‪ :‬ﻭﻫﻰ ﻨﻔﺱ ﻤﺘﺤﺭﻜﺔ ﺍﻟﻨﻘﻁﺔ ﻭﻟﻜﻥ ﺍﻟﻘﻴﻡ ﺍﻟﻤﻤﺜﻠﺔ ﻟﻠﻤﺘﻐﻴﺭﺍﺕ‬
‫ﻤﺯﺩﻭﺠﺔ ﺍﻟﺩﻗﺔ ﻤﺩﺍﻫﺎ ﻴﻜﻭﻥ ﺍﻜﺒﺭ ﻤﻥ ﻤﺘﺤﺭﻜﺔ ﺍﻟﻨﻘﻁﺔ‬
‫‪ -4‬ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻤﻥ ﺍﻟﻨﻭﻉ ﺍﻟﺤﺭﻓﻰ ‪ :‬ﻭﺘﺘﻀﻤﻥ ﺍﻻﻋﻼﻥ ﻋﻥ ﺍﻟﺤﺭﻭﻑ ﺍﻭ ﺍﻟﺭﻤﻭﺯ ﻜﻤﺎ ﺸﺭﺤﻨﺎ ﻓﻰ‬
‫ﺍﻟﺩﺭﺱ ﺍﻟﺴﺎﺒﻕ‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﺎﻟﺙ ﻋﺸﺭ ‪:‬‬


‫ﻨﻭﻉ ﺍﻟﺒﻴﺎﻨﺎﺕ )ﺍﻟﻤﺘﻐﻴﺭﺍﺕ(‬
‫‪ Data Type‬ﻭﻫﻰ ﺍﻻﻨﻭﺍﻉ ﺍﻟﺘﻰ ﺴﺘﺴﺘﺨﺩﻡ ﻓﻰ ﺘﻌﺭﻴﻑ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ‪.‬‬
‫ﻟﺘﻌﺭﻴﻑ ﺍﻟﻤﺘﻐﻴﺭ ‪ :‬ﻴﻜﺘﺏ ﺍﻭﻻ ﻨﻭﻉ ﺍﻟﻤﺘﻐﻴﺭ ﺜﻡ ﺍﺴﻡ ﺍﻟﻤﺘﻐﻴﺭ ﺒﻌﺩ ﺫﻟﻙ ﻭﻴﻤﻜﻥ ﺍﻻﻋﻼﻥ ﻋﻥ ﺍﻜﺜﺭ‬
‫ﻤﻥ ﻤﺘﻐﻴﺭ ﺒﻨﻔﺱ ﺍﻟﻨﻭﻉ ﻓﻰ ﺴﻁﺭ ﻭﺍﺤﺩ ﺒﻜﺘﺎﺒﺔ ﺍﻟﻨﻭﻉ ﺜﻡ ﺍﺴﻤﺎﺀ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ‪.‬‬
‫ﻭﺴﻴﺘﻡ ﺘﻭﻀﻴﺢ ﺫﻟﻠﻙ ﻓﻰ ﺍﻤﺜﻠﻪ ﺒﻌﺩ ﺫﻟﻙ‪.‬‬
‫ﻟﻜﻥ ﺘﻌﺎﻟﻰ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﺘﻌﺭﻑ ﻋﻠﻰ ﺍﻨﻭﺍﻉ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ‬
‫‪ boolean -1‬ﻭﻫﻭ ﻴﺄﺨﺫ ﺍﻟﻘﻴﻡ ﺼﻔﺭ ﺍﻭ ﻭﺍﺤﺩ ﻭﻴﻜﻭﻥ ﺤﺠﻤﺔ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ‪ 1 bit‬ﻭﻴﺴﺘﺨﺩﻡ ﻓﻰ‬
‫ﺤﺎﻟﺔ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺘﻜﻭﻥ ﺍﺤﺩﻯ ﻗﻴﻤﺘﻴﻥ ﻤﻌﻠﻭﻤﺘﻴﻥ ﻤﺜﻼ )ﻨﻌﻡ ﻭ ﻻ( ﻭﺒﻤﻌﻨﻰ ﺍﺩﻕ ﺘﻜﻭﻥ ﻗﻴﻡ ﻫﺫﺍ ﺍﻟﻨﻭﻉ‬
‫)‪ (true or false‬ﻭﺍﻟﻘﻴﻤﺔ ﺍﻻﻓﺘﺭﺍﻀﻴﺔ ﻓﻰ ﺤﺎﻟﺔ ﺍﻻﻋﻼﻥ ﻋﻥ ﻤﺘﻐﻴﺭ ﻭﻋﺩﻡ ﺇﻋﻁﺎﺅﻩ ﻗﻴﻤﺔ ﺍﻯ ﺍﻥ‬
‫ﺍﻟﻘﻴﻤﺔ ﺍﻻﻓﺘﺭﺍﻀﻴﺔ ﺘﻜﻭﻥ ‪false‬‬
‫‪ byte -2‬ﻭﻫﻭ ﺍﻟﺘﻰ ﺘﻜﻭﻥ ﻗﻴﺎﻤﻬﺎ ﺍﻋﺩﺍﺩ ﺼﺤﻴﺤﺔ ﺴﺎﻟﺒﺔ ﺍﻭ ﻤﻭﺠﺒﺔ ﻤﺤﺼﻭﺭﺓ ﺒﻴﻥ ‪ -128‬ﻜﺤﺩ‬
‫ﺍﺩﻨﻰ ﻭ ‪ 127‬ﻜﺤﺩ ﺍﻗﺼﻰ ﻭﺤﺠﻤﻬﺎ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ‪ 8 bit‬ﺍﻯ )‪ ( 1 byte‬ﻤﺜﻼ )‪(100-,6-,10,20‬‬
‫‪ char -3‬ﻭﻫﻰ ﺍﻟﺘﻰ ﺘﻜﻭﻥ ﻗﻴﻤﻬﺎ ﻋﺒﺎﺭﺓ ﻋﻥ ﺤﺭﻑ ﻭﺍﺤﺩ ﺍﻭ ﻗﻴﻤﺔ ﻻﺤﺩﻯ ﻤﺘﺴﻠﺴﻼﺕ ﺍﻟﻬﺭﻭﺏ ﺍﻭ‬
‫ﺭﻗﻡ ﻭﻫﺫﺍ ﺍﻟﺭﻗﻡ ﻴﻌﺒﺭ ﻋﻥ ﺤﺭﻑ ﻭﻟﻜﻥ ﺒﻨﻅﺎﻡ ﺍﻻﺴﻜﻰ ﻜﻭﺩ ﺤﻴﺙ ﻓﻰ ﻫﺫﺍ ﺍﻟﻨﻅﺎﻡ ﻜل ﺤﺭﻑ ﻴﻤﺜل‬
‫ﺒﺭﻗﻡ ﻤﻌﻴﻥ ﻭﺤﺠﻤﻬﺎ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ‪ 16 bit‬ﺍﻯ )‪ ( 2 byte‬ﻤﺜﻼ )‪(a , n , \t , 56 , 126‬‬
‫‪ short -4‬ﻭﺘﻜﻭﻥ ﻗﻴﻤﻬﺎ ﺍﻋﺩﺍﺩ ﺼﺤﻴﺤﺔ ﻤﻭﺠﺒﺔ ﺍﻭ ﺴﺎﻟﺒﺔ ﻤﺤﺼﻭﺭﺓ ﺒﻴﻥ ‪ -32768‬ﻜﺤﺩ ﺍﺩﻨﻰ ﻭ‬
‫‪ 32767‬ﻜﺤﺩ ﺍﻗﺼﻰ ﻭﺤﺠﻤﻬﺎ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ﻴﻜﻭﻥ ‪16 bit‬‬
‫‪ int -5‬ﻭﻫﻰ ﺘﻤﺜل ﺒﻘﻴﻡ ﺼﺤﻴﺤﺔ ﻤﻭﺠﺒﺔ ﺍﻭ ﺴﺎﻟﺒﺔ ﻤﺤﺼﻭﺭﺓ ﺒﻴﻥ ‪ -2147483648‬ﻜﺤﺩ ﺍﺩﻨﻰ ﻭ‬
‫‪ 2147483647‬ﻜﺤﺩ ﺍﻗﺼﻰ ﻭﺘﺴﺘﻐل ﻤﻥ ﺍﻟﺫﺍﻜﺭﺓ ﺤﺠﻡ ‪32 bit‬ﺍﻯ ‪ 4 byte‬ﻤﺜﻼ‬
‫)‪(218888-,20000,50000‬‬
‫‪ float -6‬ﻭﻫﻰ ﺘﻤﺜل ﺒﻘﻴﻡ ﺍﻻﻋﺩﺍﺩ ﺤﻘﻴﻘﻴﺔ ﺍﻯ ﺍﻋﺩﺍﺩ ﺒﻬﺎ ﻋﻼﻤﺔ ﻋﺸﺭﻴﺔ ﺍﻭ ﻋﺩﺍﺩ ﻜﺴﺭﻴﺔ ﺍﻭ ﺍﻋﺩﺍﺩ‬
‫ﺍﺴﻴﺔ ﻭﺘﻨﺤﺼﺭ ﻫﺫﻩ ﺍﻟﻘﻴﻡ ﺒﻴﻥ ‪ +/-3.40282347E+38‬و ‪ +/-1.40239846E-45‬ﻭﺤﺠﻤﻬﺎ ﻓﻰ‬
‫ﺍﻟﺫﺍﻜﺭﺓ ﻴﻜﻭﻥ ‪ 32 bit‬ﻤﺜﻼ )‪ (88.65 , 222.357 , 2.555‬ﻭﻜﻤﺎ ﺫﻜﺭﻨﺎ ﻤﻥ ﻗﺒل ﺍﻥ ﺍﻟﺤﺭﻑ ‪e‬‬
‫ﺼﻐﻴﺭ ﺍﻭ ﻜﺒﻴﺭ ﻴﻤﺜل ﺍﻻﺴﺎﺱ ‪ 10‬ﻤﺜﻼ )‪ ( 5e2‬ﻫﻰ ﺍﻟﺭﻗﻡ )‪(500‬‬
‫‪ double -7‬ﻫﻰ ﺘﻤﺜل ﺍﻴﻀﺎ ﻤﺜل ‪ float‬ﻭﻟﻜﻥ ﺍﻟﻔﺭﻕ ﺍﻥ ‪ double‬ﺍﻟﻘﻴﻡ ﺘﻜﻭﻥ ﺍﻜﺒﺭ ﺒﻜﺜﻴﺭ ﻭﻫﻰ‬
‫ﺘﻨﺤﺼﺭ ﺒﻴﻥ ‪ +/-1.8e308‬ﻭ ‪ +/-4.9e-324‬ﻭﺤﺠﻡ ﺍﻟﺫﺍﻜﺭﺓ ﺍﻟﻤﺴﺘﻐل ﻴﻜﻭﻥ ‪ 64 bit‬ﺍﻯ ‪8 byte‬‬
‫‪ long -8‬ﻭﻫﻰ ﺘﻤﺜل ﺍﻻﻋﺩﺍﺩ ﺍﻟﺼﺤﻴﺤﺔ ﺍﻟﺴﺎﻟﺒﺔ ﺍﻭ ﺍﻟﻤﻭﺠﺒﺔ ﻭﻟﻜﻥ ﺘﻜﻭﻥ ﺍﻋﺩﺍﺩ ﻜﺒﻴﺭﺓ ﺠﺩﺍ ﺠﺩﺍ‬

‫ﻭﺍﻟﺠﺩﻭل ﺍﻻﺘﻰ ﻤﻠﺨﺹ ﺍﻟﺸﺭﺡ ﺍﻟﺴﺎﺒﻕ‬


‫‪Type‬‬ ‫‪Contains‬‬ ‫‪Default‬‬ ‫‪Size‬‬ ‫‪Min and Max values‬‬
‫‪value‬‬ ‫)‪(bits‬‬

‫‪boolean‬‬ ‫‪true or false‬‬ ‫‪false‬‬ ‫‪1‬‬ ‫‪Not Applicable‬‬


‫‪char‬‬ ‫‪Unicode character‬‬ ‫‪\u0000‬‬ ‫‪16‬‬ ‫‪\u0000 to \uFFFF‬‬
‫‪byte‬‬ ‫‪signed integer‬‬ ‫‪0‬‬ ‫‪8‬‬ ‫‪-128 to 127‬‬
‫‪short‬‬
‫‪int‬‬ ‫‪signed integer‬‬ ‫‪0‬‬ ‫‪16‬‬ ‫‪-32768 to 32767‬‬
‫‪long‬‬ ‫‪signed integer‬‬ ‫‪0‬‬ ‫‪32‬‬ ‫‪-2147483648 to 2147483647‬‬
‫‪float‬‬ ‫‪signed integer‬‬ ‫‪-‬‬ ‫‪64‬‬ ‫‪-9223372036854775808 to 9223372036854775807‬‬
‫‪double‬‬ ‫‪IEEE754 flt. pt.‬‬ ‫‪0.0‬‬ ‫‪32‬‬ ‫‪+/-3.40282347E+38 to +/-1.40239846E-45‬‬
‫‪IEEE754 flt. pt.‬‬ ‫‪0.0‬‬ ‫‪64‬‬ ‫‪+/-1.79769313486231570E+308 to‬‬
‫‪+/-4.94065645841246544E-324‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺭﺍﺒﻊ ﻋﺸﺭ ‪:‬‬


‫ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﺍﻟﺜﻨﺎﺌﻴﺔ‬
‫ﺍﻟﻤﺅﺜﺭﺍﺕ ‪ operators‬ﻫﻰ ﺘﻠﻙ ﺍﻻﺸﺎﺭﺍﺕ ﺍﻟﺨﺎﺼﺔ ﺒﺎﻟﻌﻤﻠﻴﺎﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ‪.‬‬
‫ﻭﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﻴﺘﻡ ﺍﺩﺍﺀ ﻋﻤﻠﻴﺎﺕ ﺤﺴﺎﺒﻴﺔ ﻋﻠﻴﻬﺎ ﺒﻭﺍﺴﻁﺔ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺘﺴﻤﻰ ﻋﻭﺍﻤل ﺍﻭ ﻋﻨﺎﺼﺭ ‪.‬‬
‫ﻭﺘﺘﻁﻠﺏ ﺒﻌﺽ ﺍﻟﻤﺅﺜﺭﺍﺕ ﻋﺎﻤﻠﻴﻥ ﻟﺫﻟﻙ ﺴﻤﻴﺕ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﺍﻟﺜﻨﺎﺌﻴﺔ ‪.‬‬
‫ﻭﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﺨﻤﺴﺔ ﻤﺅﺜﺭﺍﺕ ﺤﺴﺎﺒﻴﺔ ﺜﻨﺎﺌﻴﺔ ﻭﻫﻰ‬
‫‪ : +‬ﻭﺍﻟﻐﺭﺽ ﻤﻨﻬﺎ ﻋﻤﻠﻴﺔ ﺍﻟﺠﻤﻊ ﺒﻴﻥ ﺍﻟﻌﻭﺍﻤل‬
‫‪ : -‬ﻭﺍﻟﻐﺭﺽ ﻤﻨﻬﺎ ﻋﻤﻠﻴﺔ ﺍﻟﻁﺭﺡ ﺒﻴﻥ ﺍﻟﻌﻭﺍﻤل‬
‫* ‪ :‬ﻭﺍﻟﻐﺭﺽ ﻤﻨﻬﺎ ﻀﺭﺏ ﺍﻟﻌﻭﺍﻤل‬
‫‪ : /‬ﻭﺍﻟﻐﺭﺽ ﻤﻨﻬﺎ ﺍﻟﻘﺴﻤﺔ ﺒﻴﻥ ﺍﻟﻌﻭﺍﻤل ﻭﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻡ ﻫﺫﺍ ﺍﻟﻤﺅﺜﺭ ﻨﺤﺘﺭﺱ ﺤﻴﺙ ﻴﻤﻜﻥ ﺍﻥ‬
‫ﻴﻜﻭﻥ ﺍﻟﻌﺎﻤﻠﻴﻥ ﺍﻟﻤﺴﺘﺨﺩﻤﻴﻥ ﺍﻋﺩﺍﺩ ﺼﺤﻴﺤﺔ ﻭﻴﻨﺘﺞ ﻋﻥ ﺍﻟﻌﻤﻠﻴﺔ ﻋﺩﺩ ﻋﺸﺭﻯ‬
‫ﻤﺜﺎل ‪a=15 , b=4‬‬
‫‪ a/b=3.75‬ﻫﺫﻩ ﻫﻰ ﺍﻻﺠﺎﺒﺔ ﺍﻟﻤﺘﻭﻗﻌﺔ ﻭﻟﻥ ﺍﻟﻨﺎﺘﺞ ﺴﻴﻜﻭﻥ ﻏﻴﺭ ﺫﻟﻙ ﺤﻴﺙ ﺍﻥ ﺍﻟﻌﺎﻤﻼﻥ ‪ a,b‬ﺍﻋﺩﺍﺩ‬
‫ﺼﺤﻴﺤﺔ ﻓﻴﻜﻭﻥ ﺍﻟﻨﺎﺘﺞ ﻋﺩﺩ ﺼﺤﻴﺢ ﻓﻴﻜﻭﻥ ﺍﻟﻨﺎﺘﺞ ‪ 3‬ﻓﻘﻁ ﺩﻭﻥ ﺍﻟﻌﺩﺩ ﺍﻟﻜﺴﺭﻯ ﺍﻭ ﺍﻟﻌﺸﺭﻯ ﻭﻟﻜﻥ‬
‫ﻤﺎﺫﺍ ﻟﻭ ﺍﺭﺍﺩﻨﺎ ﺍﻟﻘﺴﻤﺔ ﺍﻟﺼﺤﻴﺤﺔ ﻓﻰ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻴﺠﺏ ﺍﻥ ﻴﻜﻭﻥ ﺍﺤﺩ ﺍﻟﻌﺎﻤﻠﻴﻥ ﻋﺩﺩ ﻋﺸﺭﻯ ﺒﻤﻌﻨﻰ‬
‫ﺍﻥ ﺘﻜﻭﻥ ‪ a=15.0‬ﺍﻭ ‪ b=4.0‬ﻭﻫﻰ ﻨﻔﺱ ﺍﻟﻘﻴﻡ ﺍﻟﻘﺩﻴﻤﺔ ﻭﻟﻜﻥ ﺍﺨﺘﻠﻑ ﻨﻭﻋﻬﺎ ﻭﻓﻰ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻴﻜﻭﻥ‬
‫ﺍﻟﻨﺎﺘﺞ ‪ 3.75‬ﻟﺫﻟﻙ ﺍﺤﺘﺭﺱ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻤﻙ ﻫﺫﺍ ﺍﻟﻤﺅﺜﺭ‪.‬‬
‫‪ : %‬ﻭﻴﻜﻭﻥ ﻨﺎﺘﺞ ﻫﺫﻩ ﺍﻟﻌﻤﻠﻴﺔ ﻫﻭ ﺒﺎﻗﻰ ﺍﻟﻘﺴﻤﺔ ﻭﻨﻼﺤﻅ ﻫﻨﺎ ﺍﻨﻪ ﻴﺠﺏ ﺍﻥ ﺘﻜﻭﻥ ﺍﻟﻌﻭﺍﻤل ﺍﻋﺩﺍﺩ‬
‫ﺼﺤﻴﺤﺔ ﻟﻀﻤﺎﻥ ﺼﺤﺔ ﺍﻟﻨﺎﺘﺞ ﻭﺘﻜﻭﻥ ﺍﺸﺎﺭﺓ ﺍﻟﻨﺎﺘﺞ ﻫﻰ ﻨﻔﺱ ﺍﺸﺎﺭﺓ ﺍﻟﻌﺎﻤل ﺍﻻﻴﺴﺭ‬
‫ﻤﺜﺎل ‪a=11 , b=2‬‬
‫‪ a%b = 1‬ﺍﻴﻀﺎ ‪ a%-b=1‬ﻭﻟﻜﻥ ‪– a%b = -1‬‬
‫ﻋﺯﻴﺯﺉ ﺍﻟﻘﺎﺭﺉ ﻴﺠﺏ ﺍﻻﺨﺫ ﻓﻰ ﺍﻻﻋﺘﺒﺎﺭ ﻟﻜل ﻫﺫﻩ ﺍﻟﻤﻼﺤﻅﺎﺕ ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻤﻙ ﺍﻟﻤﺅﺜﺭﺍﺕ‬
‫ﺍﻟﺤﺴﺎﺒﻴﺔ ﺍﻟﺜﻨﺎﺌﻴﺔ ‪.‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺨﺎﻤﺱ ﻋﺸﺭ ‪:‬‬


‫ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻻﺤﺎﺩﻴﺔ‬
‫ﻫﻰ ﺘﻠﻠﻙ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﺘﻰ ﺘﻌﻤل ﻋﻠﻰ ﻋﺎﻤل ﻭﺍﺤﺩ ﻭﻴﻜﻭﻥ ﺍﻟﻨﺎﺘﺞ ﻗﻴﻤﺔ ﺠﺩﻴﺩﻩ‬
‫ﻭﺍﻜﺜﺭ ﻫﺫﻩ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺸﻴﻭﻋﺎ ﻭﺍﺴﺘﺨﺩﺍﻤﺎ ﺍﺸﺎﺭﺓ ﺍﻟﺴﺎﻟﺏ )‪ (-‬ﺍﻟﺘﻰ ﺘﺤﺩﺩ ﺍﺸﺎﺭﺓ ﺍﻟﻤﺘﻐﻴﺭ ﺍﻭ ﺍﻟﺭﻗﻡ‬
‫‪ : ++‬ﻭﻴﺴﻤﻰ ﻫﺫﺍ ﺍﻟﻤﺅﺜﺭ ﻤﺅﺜﺭ ﺍﻟﺯﻴﺎﺩﺓ ‪ increment operator‬ﻭﻴﺴﺘﺨﺩﻡ ﻟﺯﻴﺎﺩﺓ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ‬
‫ﺒﻭﺍﺤﺩ ﻤﺜﻼ ‪ a=a+1‬ﻨﺎﺘﺞ ﻫﺫﻩ ﺍﻟﻌﻤﻠﻴﺔ ﻫﻭ ﻨﻔﺴﻪ ﻨﺎﺘﺞ ‪ a++‬ﻴﻌﻨﻰ ﺍﺫﺍ ﻜﺎﻨﺕ ‪ a=5‬ﺍﺫﻥ ‪ a++‬ﺘﺠﻌل‬
‫‪a=6‬‬
‫ﻭﻴﻤﻜﻥ ﻭﻀﻊ ﺍﻟﻤﻭﺜﺭ ﻗﺒل ﺍﻟﻌﺎﻤل ﺍﻭ ﺒﻌﺩﻩ ﻭﻟﻜﻥ ﺒﺎﻟﺘﺎﻜﻴﺩ ﻫﻨﺎﻙ ﻓﺭﻕ ﺒﻴﻨﻬﻡ‬
‫ﻻﺤﻅ ﻤﻌﻰ ﺍﺫﺍ ﻜﺎﻨﺕ ‪a=5‬‬
‫‪ b=(a++)*3‬ﻴﻜﻭﻥ ﻨﺎﺘﺞ ﺍﻟﻌﻤﻠﻴﺔ ﺍﻥ ‪ b=15‬ﻫﻨﺎ ﻟﻡ ﺘﺘﻡ ﺍﻟﺯﻴﺎﺩﺓ ﻭﻟﻜﻥ ﺍﺫﺍ ﺍﺴﺘﺨﺩﻤﻨﺎ ﺍﻟﻤﺘﻐﻴﺭ ‪ a‬ﻓﻰ‬
‫ﻋﻤﻠﻴﺔ ﺤﺴﺎﺒﻴﺔ ﺒﻌﺩ ﺫﻟﻙ ﺴﺘﻜﻭﻥ ﻗﻴﻤﺘﻪ ‪6‬‬
‫ﺍﻤﺎ ‪ b=(++a)*3‬ﻴﻜﻭﻥ ﻨﺎﺘﺞ ﻫﺫﻩ ﺍﻟﻌﻤﻠﻴﺔ ‪ b=18‬ﻫﻨﺎ ﻻﻥ ﺍﻟﺯﻴﺎﺩﺓ ﺘﻤﺕ ﻋﻠﻰ ﺍﻟﻤﺘﻐﻴﺭ ‪a‬‬
‫ﺍﺫﻥ ﺍﺫﺍ ﻜﺎﻥ ﺍﻟﻤﺅﺜﺭ ﻗﺒل ﺍﻟﻌﺎﻤل ﻓﺘﺘﻡ ﺍﻟﺯﻴﺎﺩﺓ ﻓﻰ ﻨﻔﺱ ﺍﻟﺴﻁﺭ ﺍﻭ ﻓﻰ ﻨﻔﺱ ﺍﻟﺨﻁﻭﺓ ﻓﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫ﻟﻜﻥ ﺍﺫﺍ ﻜﺎﻥ ﺍﻟﻤﺅﺜﺭ ﺒﻌﺩ ﺍﻟﻌﺎﻤل ﻓﺘﺘﻡ ﺍﻟﺯﻴﺎﺩﺓ ﺒﻌﺩ ﺍﻻﻨﺘﻬﺎﺀ ﻤﻥ ﻫﺫﻩ ﺍﻟﺨﻁﻭﺓ‬

‫‪ : --‬ﻴﺴﻤﻰ ﻫﺫﺍ ﺍﻟﻤﺅﺜﺭ ﻤﺅﺜﺭ ﺍﻟﻨﻘﺼﺎﻥ ‪ decrement operator‬ﻭﻴﺴﺘﺨﺩﺍﻡ ﻻﻨﻘﺎﺹ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ‬
‫ﺒﻭﺍﺤﺩ ‪ a=a-1‬ﻨﺎﺘﺞ ﻫﺫﻩ ﺍﻟﻌﻤﻠﻴﺔ ﻫﻭ ﻨﻔﺴﻪ ﻨﺎﺘﺞ ‪ a--‬ﻴﻌﻨﻰ ﺍﺫﺍ ﻜﺎﻨﺕ ‪ a=5‬ﺍﺫﻥ ‪ a--‬ﺘﺠﻌل ‪a=4‬‬
‫ﻭﻴﻤﻜﻥ ﻭﻀﻊ ﺍﻟﻤﻭﺜﺭ ﻗﺒل ﺍﻟﻌﺎﻤل ﺍﻭ ﺒﻌﺩﻩ ﻭﻟﻜﻥ ﺒﺎﻟﺘﺎﻜﻴﺩ ﻫﻨﺎﻙ ﻓﺭﻕ ﺒﻴﻨﻬﻡ ﻭﺘﻡ ﺸﺭﺡ ﺍﻟﻔﺭﻕ ﻤﻥ‬
‫ﻗﺒل ﻓﻰ ﺍﻟﻤﺅﺜﺭ ﺍﻟﺴﺎﺒﻕ‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺴﺎﺩﺱ ﻋﺸﺭ ‪:‬‬


‫ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﻌﻼﻗﻴﺔ ﺍﻭ ﺍﻟﻤﻨﻁﻘﻴﺔ‬
‫ﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﺍﺸﺎﺭﺍﺕ ﺍﻟﻤﻘﺎﺭﻨﺔ ﻭﺘﺴﺘﺨﺩﻡ ﻟﻠﻤﻘﺎﻨﺔ ﺒﻴﻥ ﻋﺎﻤﻠﻴﻥ ) ﻤﺘﻐﻴﺭﺍﻥ ( ﻭﺘﻭﺠﺩ ﻨﺘﻴﺠﺔ ﻫﺫﻩ‬
‫ﺍﻟﻌﻤﻠﻴﺔ ﻫﻰ ‪ true‬ﺍﻭ ‪ false‬ﻭﻫﺫﻩ ﺍﻟﻤﺅﺜﺭﺍﺕ ﻫﻰ ﻜﻤﺎ ﻴﻠﻰ ‪:‬‬
‫< ‪ :‬ﻭﻫﻰ ﺘﻤﺜل ﺍﻗل ﻤﻥ‬
‫<= ‪ :‬ﺍﻗل ﻤﻥ ﺍﻭ ﻴﺴﺎﻭﻯ‬
‫> ‪ :‬ﺍﻜﺒﺭ ﻤﻥ‬
‫>= ‪ :‬ﺍﻜﺒﺭ ﻤﻥ ﺍﻭ ﻴﺴﺎﻭﻯ‬
‫ﻤﺜﻼ ‪a=5 , b=6‬‬
‫‪ z=a<b‬ﻓﺎﻥ ﺍﻟﻨﺎﺘﺞ ﻴﻜﻭﻥ ‪z=true‬‬

‫ﺍﻨﺘﻅﺭ ﻋﺯﻴﺯﺉ ﺍﻟﻘﺎﺭﺉ ﻓﻬﺫﻩ ﻟﻴﺴﺕ ﻜل ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﻌﻼﻗﻴﺔ ﻭﻟﻜﻥ ﻫﻨﺎﻙ ﺍﻴﻀﺎ‬
‫=! ﻭﻫﻰ ﺘﺴﺄل ﻋﻥ ﻋﺩﻡ ﺍﻟﺘﺴﺎﻭﻯ ﻓﻔﻰ ﺍﻟﻤﺜﺎل ﺍﻟﺴﺎﺒﻕ ‪ a!=b‬ﻴﻜﻭﻥ ﺍﻟﻨﺎﺘﺞ ﻫﻭ ‪ true‬ﻻﻥ ‪a‬‬
‫ﻻﺘﺴﺎﻭﻯ ‪b‬‬
‫ﺍﻤﺎ ﺍﻟﺘﺴﺎﻭﻯ ﻓﺎﻟﻤﺅﺜﺭ ﺍﻟﺨﺎﺹ ﺒﻬﺎ ﻫﻭ == ﻻﺤﻅ ﻋﺯﻴﺯﺉ ﺍﻟﻘﺎﺭﺉ ﺍﻟﻔﺭﻕ ﺒﻴﻥ = ﻭ == ﻓﻴﺴﺎﻭﻯ‬
‫ﺍﻟﻭﺍﺤﺩ ﺘﺴﺘﺨﺩﻡ ﻓﻰ ﺍﻟﺘﺨﺼﻴﺹ ﺍﻯ ﻭﻀﻊ ﻗﻴﻤﺔ ﻟﻤﺘﻐﻴﺭ ﻭﻟﻜﻥ ﻴﺴﺎﻭﻯﻴﺴﺎﻭﻯ ﻫﻰ ﻴﻤﻜﻥ ﺍﻋﺘﺒﺎﺭﻫﺎ‬
‫ﺴﺅﺍل ﻫل ﺍﻟﻤﺘﻐﻴﺭ ﺍﻻﻭل ﻴﺴﺎﻭﻯ ﺍﻟﻤﺘﻐﻴﺭ ﺍﻟﺜﺎﻨﻰ ﺘﻌﺎﻟﻰ ﻤﻌﻰ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﺜﺎل ﻨﻭﻀﺢ ﺍﻟﻔﺭﻕ‬
‫‪ a=5 , b=6‬ﻓﺎﺫﺍ ﻗﻠﺕ ﺍﻥ ‪ z=a‬ﻓﻰ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻓﺎﻥ ‪ z‬ﺍﺼﺒﺤﺕ ﺘﺴﺎﻭﻯ ‪ 5‬ﺍﻤﺎ ﺍﺫﺍ ﻗﻠﻨﺎ ﺍﻥ‬
‫‪ a = = b‬ﻓﺎﻥ ﺍﻟﻨﺎﺘﺞ ‪ false‬ﺤﻴﺙ ﺍﻥ ﺍﻟﻘﻴﻤﺘﻴﻥ ﻤﺨﺘﻠﻔﺘﻴﻥ ‪.‬‬
‫ﻓﺎﺤﺘﺭﺱ ﻋﺯﻴﺯﺉ ﺍﻟﻘﺎﺭﺉ ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻤﻙ ﻫﺫﻩ ﺍﻟﻌﻼﻗﺎﺕ‪.‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺴﺎﺒﻊ ﻋﺸﺭ ‪:‬‬


‫ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﻤﻨﻁﻘﻴﺔ‬
‫ﻫﺫﻩ ﺍﻟﻤﺅﺜﺭﺍﺕ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺘﺴﺘﺨﺩﻡ ﻤﻊ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﻌﻼﻗﻴﺔ ﻭﻴﻜﻭﻥ ﺍﻴﻀﺎ ﺍﻟﻨﺎﺘﺞ ﻤﻨﻬﺎ ﻋﺒﺎﺭﺓ‬
‫ﻋﻥ ﺍﺤﺩﻯ ﺍﻟﻨﺘﻴﺠﺘﻴﻥ ‪ true‬ﺍﻭ ‪ . false‬ﻭﻫﺫﻩ ﺍﻟﻤﺅﺜﺭﺍﺕ ﻫﻰ ‪:‬‬
‫&& ‪ :and‬ﻭﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﺅﺜﺭ ﺜﻨﺎﺌﻰ ﻴﻜﻭﻥ ﻨﺎﺘﺞ ﺍﻟﺘﻌﺒﻴﺭ ‪ true‬ﺍﺫﺍ ﻜﺎﻥ ﻜل ﻤﻥ ﺍﻟﻌﻨﺼﺭﻴﻥ‬
‫ﺼﺤﻴﺤﺎ ﻓﻘﻁ ﻭﻴﻤﻜﻥ ﺍﻥ ﻴﻜﻭﻥ ﻋﻠﻰ ﻫﺫﺍ ﺍﻟﺸﻜل &‬
‫ﻤﺜﻼ ‪a=5 , b=6 :‬‬
‫)‪ ( a > 0 ) && ( a< b‬ﻴﻜﻭﻥ ﻨﺎﺘﺞ ﻫﺫﺍ ﺍﻟﺘﻌﺒﻴﺭ ‪ true‬ﺤﻴﺙ ﺍﻥ ﻨﺎﺘﺞ ‪ a>0‬ﺼﺤﻴﺢ ﻭﺍﻴﻀﺎ ﻨﺎﺘﺞ‬
‫‪ a<b‬ﺼﺤﻴﺢ ‪.‬‬
‫ﻭﻴﻤﻜﻥ ﺘﻠﺨﻴﺹ ﺍﻟﺸﺭﺡ ﻓﻰ ﺍﻟﺠﺩﻭل ﺍﻻﺘﻰ‪:‬‬
‫ﺍﻟﻨﺘﻴﺠﻪ ﺍﻟﻨﻬﺎﺌﻴﺔ‬ ‫ﻨﺎﺘﺞ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻟﺜﺎﻨﻰ‬ ‫ﺍﻟﻤﺅﺜﺭ‬ ‫ﻨﺎﺘﺞ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻻﻭل‬
‫ﺼﺢ ) ‪( true‬‬ ‫ﺼﺤﻴﺢ) ‪( true‬‬ ‫&&‬ ‫ﺼﺤﻴﺢ) ‪( true‬‬
‫ﺨﻁﺄ ) ‪( false‬‬ ‫ﺼﺤﻴﺢ) ‪( true‬‬ ‫&&‬ ‫ﺨﻁﺄ ) ‪( false‬‬
‫ﺨﻁﺄ ) ‪( false‬‬ ‫ﺨﻁﺄ ) ‪( false‬‬ ‫&&‬ ‫ﺼﺤﻴﺢ ) ‪( true‬‬
‫ﺨﻁﺄ ) ‪( false‬‬ ‫ﺨﻁﺄ ) ‪( false‬‬ ‫&&‬ ‫ﺨﻁﺄ ) ‪( false‬‬

‫|| ‪ : or‬ﻭﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﺅﺜﺭ ﺜﻨﺎﺌﻰ ﻴﻜﻭﻥ ﻨﺎﺘﺞ ﺍﻟﺘﻌﺒﻴﺭ ‪ true‬ﺍﺫﺍ ﻜﺎﻥ ﺍﺤﺩ ﺍﻟﻌﻨﺼﺭﻴﻥ ﻋﻠﻰ‬
‫ﺍﻻﻗل ﺼﺤﻴﺤﺎ ﺍﻯ ﻴﻜﻭﻥ ﺍﻟﻨﺎﺘﺞ ﺨﻁﺄ ﻓﻰ ﺤﺎﻟﺔ ﺍﻥ ﺍﻟﻌﻨﺼﺭﻴﻥ ﺨﻁﺄ ﻓﻘﻁ ﻭﻴﻤﻜﻥ ﺍﻥ ﻴﻜﻭﻥ ﻋﻠﻰ ﻫﺫﺍ‬
‫ﺍﻟﺸﻜل | ) ﺘﻜﺘﺏ ﻫﺫﻩ ﺍﻻﺸﺎﺭﺓ ﺒﺎﻟﻀﻐﻁ ﻋﻠﻰ ﻤﻔﺘﺎﺤﻰ \ ‪ shit +‬ﻓﻰ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ (‬
‫ﻭﻴﻤﻜﻥ ﺘﻠﺨﻴﺹ ﺍﻟﺸﺭﺡ ﻓﻰ ﺍﻟﺠﺩﻭل ﺍﻻﺘﻰ‪:‬‬
‫ﺍﻟﻨﺘﻴﺠﻪ ﺍﻟﻨﻬﺎﺌﻴﺔ‬ ‫ﻨﺎﺘﺞ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻟﺜﺎﻨﻰ‬ ‫ﺍﻟﻤﺅﺜﺭ‬ ‫ﻨﺎﺘﺞ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻻﻭل‬
‫ﺼﺢ ) ‪( true‬‬ ‫ﺼﺤﻴﺢ) ‪( true‬‬ ‫||‬ ‫ﺼﺤﻴﺢ) ‪( true‬‬
‫ﺼﺢ ) ‪( true‬‬ ‫ﺼﺤﻴﺢ) ‪( true‬‬ ‫||‬ ‫ﺨﻁﺄ ) ‪( false‬‬
‫ﺼﺢ ) ‪( true‬‬ ‫ﺨﻁﺄ ) ‪( false‬‬ ‫||‬ ‫ﺼﺤﻴﺢ ) ‪( true‬‬
‫ﺨﻁﺄ ) ‪( false‬‬ ‫ﺨﻁﺄ ) ‪( false‬‬ ‫||‬ ‫ﺨﻁﺄ ) ‪( false‬‬

‫! ‪ : not‬ﻫﺫﺍ ﺍﻟﻤﺅﺜﺭ ﺍﺤﺎﺩﻯ ﺍﻯ ﻴﻨﻔﻰ ﻗﻴﻤﺔ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻟﻤﻨﻁﻘﻰ ﺒﺎﺨﺘﺼﺎﺭ ﺍﺫﺍ ﻜﺎﻥ ﺍﻟﺘﻌﺒﻴﺭ ﺼﺤﻴﺤﺎ‬
‫ﻴﺠﻌﻠﻪ ﺨﻁﺄ ﻭﺍﺫﺍ ﻜﺎﻥ ﺨﻁﺄ ﻴﻜﻭﻥ ﺼﺤﻴﺤﺎ‬

‫ﻭﻴﻤﻜﻥ ﺘﻠﺨﻴﺹ ﺍﻟﺸﺭﺡ ﻓﻰ ﺍﻟﺠﺩﻭل ﺍﻻﺘﻰ‪:‬‬


‫ﺍﻟﻨﺘﻴﺠﻪ ﺍﻟﻨﻬﺎﺌﻴﺔ‬ ‫ﺍﻟﻤﺅﺜﺭ‬ ‫ﻨﺎﺘﺞ ﺍﻟﺘﻌﺒﻴﺭ‬
‫ﺨﻁﺄ ) ‪( false‬‬ ‫!‬ ‫ﺼﺤﻴﺢ) ‪( true‬‬
‫ﺼﺢ ) ‪( true‬‬ ‫!‬ ‫ﺨﻁﺄ ) ‪( false‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﺎﻤﻥ ﻋﺸﺭ ‪:‬‬


‫ﻤﺅﺜﺭ ﺍﻟﺘﺤﺩﻴﺩ ﻭﻤﺅﺜﺭﺍﺕ ﺍﻟﺘﺤﺩﻴﺩ ﺍﻟﻤﺭﻜﺒﺔ‬
‫ﺘﻀﻡ ﺍﻟﺠﺎﻓﺎ ﻋﺩﺓ ﻤﺅﺜﺭﺍﺕ ﺘﺤﺩﻴﺩ ﻤﺨﺘﻠﻔﺔ ﺘﺴﺘﺨﺩﻡ ﺠﻤﻴﻌﻬﺎ ﻓﻰ ﻋﻤل ﺘﻌﺒﻴﺭﺍﺕ ﺘﺤﺩﻴﺩ ‪assignment‬‬
‫‪ expression‬ﺘﺤﺩﺩ ﻓﻴﻪ ﺘﻌﺒﻴﺭ ﻻﺤﺩ ﺍﻟﻤﻌﺭﻓﺎﺕ ﻭﻋﺎﺩﺓ ﻤﺎ ﻴﺸﺎﺭ ﺍﻟﻰ ﺘﻌﺒﻴﺭﺍﺕ ﺍﻟﺘﺤﺩﻴﺩ ﺒﺎﻨﻬﺎ ﻋﺒﺎﺭﺍﺕ‬
‫ﺘﺤﺩﻴﺩ ‪. assignment ststment‬‬
‫ﺍﻭﻻ ﻤﺅﺜﺭ ﺍﻟﺘﺤﺩﻴﺩ ) = (‬
‫ﺘﻜﻭﻥ ﺍﻟﺼﻴﻐﺔ ﺍﻟﻌﺎﻤﺔ ﻟﺘﻌﺒﻴﺭﺍﺕ ﺍﻟﺘﺤﺩﻴﺩ ﻫﻜﺫﺍ ‪ identifier = expression‬ﺤﻴﺙ ﻴﻤﺜل ﺍﻟﻁﺭﻑ‬
‫ﺍﻻﻴﺴﺭ ﺍﺴﻡ ﺍﻟﻤﺘﻐﻴﺭ ﺒﻴﻨﻤﺎ ﻴﻤﺜل ﺍﻟﻁﺭﻑ ﺍﻻﻴﻤﻥ ﺜﺎﺒﺕ ﺍﻭ ﻤﺘﻐﻴﺭ ﺍﻭ ﺘﻌﺒﻴﺭ ‪ .‬ﻭﺍﺫﺍ ﻜﺎﻥ ﺘﻌﺒﻴﺭ ﻓﺎﻨﻪ‬
‫ﻴﻨﺘﺞ ﻋﻥ ﺘﻨﻔﻴﺫ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻟﺴﺎﺒﻕ ﺤﺴﺎﺏ ﻗﻴﻤﺔ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻟﻤﻭﺠﻭﺩ ﻋﻠﻰ ﺍﻟﻁﺭﻑ ﺍﻻﻴﻤﻥ ﻤﻥ ﻤﺅﺜﺭ‬
‫ﺍﻟﺘﺤﺩﻴﺩ ﻭﺘﺨﺯﻴﻥ ﺍﻟﻨﺎﺘﺞ ﻓﻰ ﺍﻟﻤﺘﻐﻴﺭ ) ﺍﻟﻤﻌﺭﻑ ( ﺍﻟﻤﻭﺠﻭﺩ ﻋﻠﻰ ﺍﻟﻴﺴﺎﺭ ‪.‬‬
‫ﻭﻴﺴﻤﺢ ﻓﻰ ﺍﻟﺠﺎﻓﺎ ﺒﺎﻟﺘﺤﺩﻴﺩﺍﺕ ﺍﻟﻤﺘﻌﺩﺩﺓ ﻭﺘﻨﻔﻴﺫ ﺍﻟﺘﺤﺩﻴﺩ ﻴﻜﻭﻥ ﻤﻥ ﺍﻟﻴﻤﻴﻥ ﺍﻟﻰ ﺍﻟﻴﺴﺎﺭ ﻤﺜﻼ ‪j = k =6‬‬
‫ﻓﺎﻥ ﻫﺫﺍ ﺍﻟﺘﻌﺒﻴﺭ ﻴﻌﻨﻰ ﺍﻥ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ k‬ﺴﺘﺼﺒﺢ ‪ 6‬ﺜﻡ ﺒﻌﺩ ﺫﻟﻙ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ j‬ﺘﺼﺒﺢ ‪. 6‬‬
‫ﺘﺫﻜﺭ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺍﻟﻔﺭﻕ ﺒﻴﻥ = ﻭ ==‬
‫ﺜﺎﻨﻴﺎ ﻤﺅﺜﺭﺍﺕ ﺍﻟﺘﺤﺩﻴﺩ ﺍﻟﻤﺭﻜﺒﺔ‬
‫ﺍﻥ ﺍﺴﺘﺨﺩﺍﻡ ﻤﺅﺜﺭﺍﺕ ﺍﻟﺘﺤﺩﻴﺩ ﺍﻟﻤﺭﻜﺒﺔ ﻫﻭ ﻋﺒﺎﺭﺓ ﻋﻥ ﻁﺭﻴﻘﺔ ﻤﺨﺘﺼﺭ ﻟﺘﻌﺒﻴﺭﺍﺕ ﺍﻟﺘﺤﺩﻴﺩ ﺍﻭ‬
‫ﺍﻟﺘﺨﺼﻴﺹ ﻭﻫﺫﻩ ﺍﻟﻤﺅﺜﺭﺍﺕ ﻫﻰ ‪:‬‬
‫=‪+‬‬ ‫‪,‬‬ ‫=‪-‬‬ ‫‪,‬‬ ‫=*‬ ‫‪,‬‬ ‫=‪/‬‬ ‫‪,‬‬ ‫=‪%‬‬
‫ﻭﻨﻼﺤﻅ ﺍﻥ ﻫﺫﻩ ﺍﻟﻤﺅﺜﺭﺍﺕ ﻋﺒﺎﺭﺓ ﻋﻥ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﻭﺒﺠﻭﺍﺭﻫﺎ ﻤﺅﺜﺭ ﺍﻟﺘﺤﺩﻴﺩ ﻴﺴﺎﻭﻯ‬
‫ﻭﻟﻜﻥ ﻤﺎﺫﺍ ﺘﻤﺜل ﻫﺫﻩ ﺍﻻﺨﺘﺼﺎﺭﺍﺕ ؟‬
‫‪y=6‬‬ ‫‪, x=5‬‬
‫ﻓﻤﺎ ﻫﻰ ﻗﻴﻤﺔ ‪ x‬ﻫﻨﺎ ‪x = x + y‬‬
‫ﺘﻜﻭﻥ ﻗﻴﻤﺔ ‪ x‬ﻫﻰ ‪ x = 5 + 6‬ﺍﻯ ﺍﻥ ‪x = 11‬‬
‫ﻴﻤﻜﻥ ﻜﺘﺎﺒﺔ ﺍﻟﺘﻌﺒﻴﺭ ‪ x = x + y‬ﺒﻬﺫﻩ ﺍﻟﺼﻭﺭﺓ ‪x + = y‬‬
‫ﻭﻫﻜﺫﺍ ﺒﺎﻟﻨﺴﺒﺔ ﻟﺒﺎﻗﻰ ﻫﺫﻩ ﺍﻟﻤﺅﺜﺭﺍﺕ ﻭﺍﻟﺠﺩﻭل ﺍﻟﺘﺎﻟﻰ ﻴﻭﻀﺢ ﺍﻟﺸﺭﺡ‬
‫ﻴﻜﺎﻓﺊ ﺍﻟﺘﻌﺒﻴﺭ‬ ‫ﺍﻟﺘﻌﺒﻴﺭ‬
‫‪x += y‬‬ ‫‪x=x+y‬‬
‫‪x -= y‬‬ ‫‪x=x-y‬‬
‫‪x *= y‬‬ ‫‪x=x*y‬‬
‫‪x /= y‬‬ ‫‪x=x/y‬‬
‫‪x %= y‬‬ ‫‪x=x%y‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺘﺎﺴﻊ ﻋﺸﺭ ‪:‬‬


‫ﺍﻭﻟﻭﻴﺎﺕ ﺘﻨﻔﻴﺫ ﺍﻟﻤﺅﺜﺭﺍﺕ‬
‫ﺍﺫﺍ ﺍﺠﺘﻤﻊ ﺍﻜﺜﺭ ﻤﻥ ﻤﺅﺜﺭ ﻓﻰ ﻋﻤﻠﻴﺔ ﻭﺍﺤﺩ ﻓﻼﻯ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻻﺴﺒﻘﻴﺔ ﻓﻰ ﺍﻟﺘﻨﻔﻴﺫ ﻭﻤﻥ ﺍﻯ ﺍﺘﺠﺎﻩ‬
‫ﻴﺒﺩﺃ ﺘﻨﻔﻴﺫ ﻫﺫﺍ ﺍﻟﻤﺅﺜﺭ ؟‬
‫ﻴﻭﻀﺢ ﺍﻟﺠﺩﻭل ﺍﻻﺘﻰ ﺍﻻﺴﺒﻘﻴﺔ ﻭﺍﻟﻤﺼﺎﺤﺒﺔ ) ﺍﺘﺠﺎﺓ ﺘﻨﻔﻴﺫ ﺍﻟﻤﺅﺜﺭ ﻋﻠﻰ ﺍﻟﻌﻤﻠﻴﺔ ( ﻭﺫﻟﻙ ﻤﻥ ﺍﻻﻋﻠﻰ‬
‫ﺍﻟﻰ ﺍﻻﺴﻔل ﺍﻯ ﺍﻥ ﺍﻻﺴﺒﻘﻴﻪ ﻟﻤﺎ ﻓﻰ ﺒﺩﺍﻴﺔ ﺍﻟﺠﺩﻭل‬
‫ﺍﻟﻤﺼﺎﺤﺒﻪ‬ ‫ﺍﻟﻤﺅﺜﺭ‬ ‫ﻓﺌﺔ ﺍﻟﻤﺅﺜﺭ‬
‫ﻤﻥ ﺍﻟﻴﻤﻴﻥ ﺍﻟﻰ ﺍﻟﻴﺴﺎﺭ‬ ‫!‬ ‫‪,‬‬ ‫‪-‬‬ ‫‪,‬‬ ‫‪++‬‬ ‫‪,‬‬ ‫‪--‬‬ ‫ﻤﺅﺜﺭﺍﺕ ﺍﺤﺎﺩﻴﺔ‬
‫ﻤﻥ ﺍﻟﻴﺴﺎﺭ ﺍﻟﻰ ﺍﻟﻴﻤﻴﻥ‬ ‫‪%‬‬ ‫‪,‬‬ ‫‪/‬‬ ‫‪,‬‬ ‫*‬ ‫ﻀﺭﺏ ﻭﻗﺴﻤﺔ ﻭﺒﺎﻗﻰ ﺍﻟﻘﺴﻤﺔ‬
‫ﻤﻥ ﺍﻟﻴﺴﺎﺭ ﺍﻟﻰ ﺍﻟﻴﻤﻴﻥ‬ ‫‪+‬‬ ‫‪,‬‬ ‫‪-‬‬ ‫ﺠﻤﻊ ﻭﻁﺭﺡ‬
‫ﻤﻥ ﺍﻟﻴﺴﺎﺭ ﺍﻟﻰ ﺍﻟﻴﻤﻴﻥ‬ ‫=>‬ ‫‪,‬‬ ‫>‬ ‫‪,‬‬ ‫=<‬ ‫‪,‬‬ ‫<‬ ‫ﻤﺅﺜﺭﺍﺕ ﻋﻼﻗﻴﺔ ) ﻤﻨﻁﻘﻴﺔ (‬
‫ﻤﻥ ﺍﻟﻴﺴﺎﺭ ﺍﻟﻰ ﺍﻟﻴﻤﻴﻥ‬ ‫=!‬ ‫‪,‬‬ ‫=‬ ‫=‬ ‫ﻤﺅﺜﺭﺍﺕ ﺍﻟﺘﺴﺎﻭﻯ‬
‫ﻤﻥ ﺍﻟﻴﺴﺎﺭ ﺍﻟﻰ ﺍﻟﻴﻤﻴﻥ‬ ‫&&‬ ‫‪And‬‬
‫ﻤﻥ ﺍﻟﻴﺴﺎﺭ ﺍﻟﻰ ﺍﻟﻴﻤﻴﻥ‬ ‫||‬ ‫‪Or‬‬
‫= ‪ + = , - = , * = , / = , % = ,‬ﻤﻥ ﺍﻟﻴﻤﻴﻥ ﺍﻟﻰ ﺍﻟﻴﺴﺎﺭ‬ ‫ﻤﺅﺜﺭﺍﺕ ﺍﻟﺘﺤﺩﻴﺩ‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﻌﺸﺭﻭﻥ ‪:‬‬


‫ﻋﻤﻠﻴﺎﺕ ﺍﻟﺘﺤﻭﻴل‬
‫ﻭﻫﺫﻩ ﺍﻟﻌﻤﻠﻴﻪ ﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﺘﺤﻭﻴل ﺍﻟﻤﺘﻐﻴﺭ ﻤﻥ ﻨﻭﻉ ﺒﻴﺎﻥ ﺍﻟﻰ ﻨﻭﻉ ﺒﻴﺎﻥ ﺍﺨﺭ ﻭﺘﺴﻤﻰ ‪data type‬‬
‫‪ casting‬ﻭﺒﺎﻟﻨﺴﺒﺔ ﻟﻠﻨﻭﻉ ‪ boolean‬ﻻﻴﻤﻜﻥ ﺘﺤﻭﻴﻠﻪ ﺍﻟﻰ ﺍﻯ ﻨﻭﻉ ﺍﺨﺭ ﺍﻭ ﺘﺤﻭﻴل ﻨﻭﻉ ﺍﺨﺭ ﺍﻟﻴﻪ‪.‬‬
‫ﻭﻓﻰ ﺍﻟﻐﺎﻟﺏ ﻋﻤﻠﻴﺔ ﺍﻟﺘﺤﻭﻴل ﺘﺘﻡ ﻤﻥ ﺍﻟﻨﻭﻉ ﺍﻻﺼﻐﺭ ﺍﻟﻰ ﺍﻟﻨﻭﻉ ﺍﻻﻜﺒﺭ‬
‫ﻓﻤﺜﻼ ﻴﻤﻜﻥ ﺘﺤﻭﻴل ﻤﺘﻐﻴﺭ ﻤﻥ ﺍﻟﻨﻭﻉ ‪ char‬ﺍﻟﻰ ‪ int‬ﻤﺜﻼ '‪ int i , char c='A‬ﺍﻻﻥ ﺍﺫﺍ ﻭﻀﻌﻨﺎ‬
‫‪ i=c‬ﻓﺎﻥ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ i‬ﺘﺼﺒﺢ ‪ 65‬ﻭﻫﺫﺍ ﻫﻭ ﺍﻟﺭﻗﻡ ﺍﻟﻤﻨﺎﻅﺭ ﻟﻠﺤﺭﻑ ‪ A‬ﻓﻰ ﺍﻻﺴﻜﻰ ﻜﻭﺩ ﻭﻫﻨﺎ ﺘﻡ‬
‫ﺘﺤﻭﻴل ﺍﻟﺒﻴﺎﻥ ﻤﻥ ‪ char‬ﺍﻟﻰ ‪int‬‬
‫ﺍﻴﻀﺎ ﻴﻤﻜﻥ ﺘﺤﻭﻴل ﻤﻥ ﺍﻟﻨﻭﻉ ‪ char‬ﺍﻟﻰ ‪ float‬ﻤﺜﻼ '‪ float f , char c='A‬ﺍﻻﻥ ﺍﺫﺍ ﻭﻀﻌﻨﺎ ‪f=c‬‬
‫ﻓﺎﻥ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ f‬ﺘﺼﺒﺢ ‪ 65.0‬ﻭﻫﻨﺎ ﻨﻼﺤﻅ ﺍﻟﻔﺭﻕ ﺒﻴﻥ ﺍﻟﻤﺜﺎﻟﻴﻥ ﺤﻴﺙ ﺍﻥ ‪ float‬ﺘﻤﺜل ﺍﻻﺭﻗﺎﻡ‬
‫ﺍﻟﻌﺸﺭﻴﺔ ﺍﻭ ﺍﻟﻜﺴﺭﻴﺔ ‪.‬‬
‫ﺍﻴﻀﺎ ﻴﻤﻜﻥ ﺘﺤﻭﻴل ﺍﻻﻋﺩﺍﺩ ﺍﻟﺼﺤﻴﺤﺔ ﺒﺎﻨﻭﻋﻬﺎ ﺍﻟﻰ ﺍﻻﻋﺩﺍﺩ ﺍﻟﻌﺸﺭﻴﺔ ﺒﻤﻌﻨﻰ ﻴﻤﻜﻥ ﺘﺤﻭﻴل‬
‫‪ byte,int,short,long‬ﺍﻟﻰ ‪float , double‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺤﺎﺩﻯ ﻭﺍﻟﻌﺸﺭﻭﻥ ‪:‬‬


‫ﺍﻟﺘﻌﺒﻴﺭﺍﺕ ﻭﺍﻟﻌﺒﺎﺭﺍﺕ‬
‫ﺍﻟﺘﻌﺒﻴﺭ ‪ expression‬ﻴﻤﺜل ﻋﻨﺼﺭ ﺒﻴﺎﻨﺎﺕ ﻤﻔﺭﺩ ) ﻤﺜل ﺍﻟﺭﻗﻡ ﺍﻭ ﺍﻟﺤﺭﻑ ( ﻭﻴﻤﻜﻥ ﺍﻥ ﻴﺤﺘﻭﻯ ﻋﻠﻰ‬
‫ﻤﺤﺘﻭﻯ ﻤﻔﺭﺩ ﻤﺜل ) ﺍﻟﺜﺎﺒﺕ ﺍﻭ ﺍﻟﻤﺘﻐﻴﺭ ( ﻜﺫﻟﻙ ﻴﻤﻜﻥ ﺒﻌﺽ ﺍﻟﺨﻠﻴﻁ ﺒﻴﻥ ﻫﺫﻩ ﺍﻟﻤﺤﺘﻭﻴﺎﺕ ﻤﺘﺼﻠﺔ‬
‫ﺒﻌﻀﻬﺎ ﺒﺒﻌﺽ ﺒﻤﺅﺜﺭ ﺍﻭ ﺍﻜﺜﺭ ﻭﻴﻤﻜﻥ ﺍﻴﻀﺎ ﺍﻥ ﻴﻤﺜل ﺍﻟﺘﻌﺒﻴﺭ ﺸﺭﻭﻁﺎ ﻤﻨﻁﻘﻴﺔ ‪.‬‬
‫ﺍﻤﺎ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻭ ﺍﻟﺠﻤﻠﺔ ‪ statement‬ﻓﺎﻨﻬﺎ ﺘﺘﺴﺒﺏ ﻓﻰ ﺍﺠﺭﺍﺀ ﺍﻟﻜﻤﺒﻴﻭﺘﺭ ﺍﻟﻰ ﻨﺸﺎﻁ ﻤﻌﻴﻥ ﻟﺫﺍ ﻓﻬﻰ‬
‫ﺍﻻﻤﺭ ﺍﻟﻤﻭﺠﻪ ﺍﻟﻰ ﺍﻟﻜﻤﺒﻴﻭﺘﺭ ﻻﺩﻯ ﺸﺊ ﻤﻌﻴﻥ ﺍﻟﻤﻁﻠﻭﺏ ﺍﻟﻘﻴﺎﻡ ﺒﻪ ﻭﺘﻭﺠﺩ ﺜﻼﺙ ﻓﺌﺎﺕ ﻤﻥ‬
‫ﺍﻟﻌﺒﺎﺭﺍﺕ ‪:‬‬
‫‪ -1‬ﻋﺒﺎﺭﺍﺕ ﺍﻭ ﺠﻤل ﺘﻌﺒﻴﺭﺍﺕ ﻭﺘﺤﺘﻭﻯ ﻋﻠﻰ ﺘﻌﺒﻴﺭ ﻭﻴﺘﺴﺒﺏ ﺘﻨﻔﻴﺫ ﻋﺒﺎﺭﺓ ﺍﻟﺘﻌﺒﻴﺭ ﻓﻰ ﺘﻘﻭﻴﻡ‬
‫ﺍﻟﺘﻌﺒﻴﺭ‬
‫‪ -2‬ﻋﺒﺎﺭﺍﺕ ﺍﻭ ﺠﻤل ﻤﺭﻜﺒﺔ ﻭﻫﻰ ﺘﻠﻙ ﺍﻟﺘﻰ ﺘﺘﻜﻭﻥ ﻤﻥ ﺍﻜﺜﺭ ﻤﻥ ﺠﻤﻠﺔ ﺍﻭ ﻋﺒﺎﺭﺓ ﻤﻔﺭﺩﺓ ﻴﻤﻜﻥ ﺍﻥ‬
‫ﺘﻜﻭﻥ ﻋﺒﺎﺭﺍﺕ ﺘﻌﺒﻴﺭ ﺍﻭ ﻋﺒﺎﺭﺍﺕ ﻤﺭﻜﺒﺔ ﺍﻭ ﻋﺒﺎﺭﺍﺕ ﺘﺤﻜﻡ ﻭﻋﻠﻰ ﻫﺫﺍ ﺘﻘﺩﻡ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﻤﺭﻜﺒﺔ‬
‫ﺍﻤﻜﺎﻨﻴﺔ ﺍﺩﺨﺎل ﻋﺒﺎﺭﺍﺕ ﺩﺍﺨل ﻋﺒﺎﺭﺍﺕ ﺍﺨﺭﻯ ﻭﺘﻜﻭﻥ ﺠﻤﻴﻊ ﻫﺫﻩ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻤﺤﺼﻭﺭﺓ ﺒﻴﻥ ﺯﺠﻴﻥ‬
‫ﺍﻗﻭﺍﺱ ﺍﻟﻔﺌﺔ } {‬
‫‪ -3‬ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻡ ﻭﺘﺴﺘﺨﺩﻡ ﻓﻰ ﺍﻨﺘﺎﺝ ﺴﻤﺎﺕ ﺒﺭﻨﺎﻤﺞ ﺨﺎﺼﺔ ﻤﺜل ‪ :‬ﺍﻻﺨﺘﺒﺎﺭﺍﺕ ﺍﻟﻤﻨﻁﻘﻴﺔ‬
‫ﻭﺍﻟﺩﻭﺭﺍﺕ ﻭﺍﻟﺘﻔﺭﻴﻌﺎﺕ ﻭﻴﺘﻁﻠﺏ ﻤﻥ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻡ ﻭﺠﻭﺩ ﻋﺒﺎﺭﺍﺕ ﺩﺍﺨل ﻋﺒﺎﺭﺍﺕ ﺍﺨﺭﻯ‬
‫ﻭﺴﻴﺘﻡ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺸﺭﺡ ﻫﺫﻩ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺒﺎﻟﺘﻔﺼﻴل ﻓﻰ ﺩﺭﻭﺴﺔ ﻻﺤﻘﺔ‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﺎﻨﻰ ﻭﺍﻟﻌﺸﺭﻭﻥ ‪:‬‬


‫ﺘﺸﻐﻴل ﻤﺘﺭﺠﻡ ﺍﻟﺠﺎﻓﺎ‬
‫ﻋﺯﻴﺯﻯﺍﻟﻘﺎﺭﺉ ﺫﻜﺭﻨﺎ ﻓﻰ ﺩﺭﻭﺱ ﺴﺎﺒﻘﺔ ﺍﻟﻤﺴﺎﺭ ﺍﻟﺫﻯ ﻴﺴﻠﻜﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺩﺍﻴﺔ ﻤﻥ ﻜﺘﺎﺒﺘﻪ ﺤﺘﻰ‬
‫ﺘﺸﻐﻴﻠﻪ ﺍﻻﻥ ﺘﻌﺎﻟﻰ ﻨﺘﻌﺭﻑ ﻋﻠﻰ ﻁﺭﻴﻘﺔ ﺍﻟﺤﺼﻭل ﻋﻠﻰ ﻤﻠﻑ ‪ class‬ﻭﺘﺸﻐﻴل ﻫﺫﺍ ﺍﻟﻤﻠﻑ‪.‬‬
‫ﺍﻭﻻ ﺒﻌﺩ ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻴﺘﻡ ﺤﻔﻅ ﺍﻟﻤﻠﻑ ) ﻤﻠﻑ ﺍﻟﻤﺼﺩﺭ ( ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﺴﺎﺭ‬
‫‪ c:\jdk1.3.0_02\bin‬ﺤﻴﺙ ﺍﻥ ﻫﺫﺍ ﺍﻟﻤﺠﻠﺩ ﻴﺘﻡ ﺇﻨﺸﺎﺅﻩ ﻋﻠﻰ ﺍﻟﺠﺯﺀ ﺴﻰ ‪ c:‬ﻤﻥ ﺍﻟﻬﺎﺭﺩ ﺒﻌﺩ‬
‫ﺘﻨﺼﻴﺏ ‪ j2sdk‬ﺍﻟﺫﻯ ﺘﻡ ﺘﺤﻤﻴﻠﻪ ﻤﻥ ﺍﻻﻨﺘﺭﻨﺕ ﻤﻥ ﻤﻭﻗﻊ ﺴﻥ ﻭﻴﺘﻡ ﺤﻔﻅ ﺍﻟﻤﻠﻑ ﺒﺎﻤﺘﺩﺍﺩ ‪.java‬‬
‫)‪( filename.java‬‬
‫ﺜﺎﻨﻴﺎ ﻨﻘﻭﻡ ﺒﺘﺸﻐﻴل ﻤﺤﺙ ﺍﻟﺩﻭﺱ ‪ dos‬ﻭﺘﺨﺘﻠﻑ ﻁﺭﻴﻘﺔ ﺘﺸﻐﻴﻠﻪ ﻋﻠﻰ ﺤﺴﺏ ﻨﻅﺎﻡ ﺘﺸﻐﻴل ﺍﻟﻭﻴﻨﺩﻭﺯ‬
‫ﻓﺎﺫﺍ ﻜﺎﻥ ﺍﻟﻭﻴﻨﺩﻭﺯ ﺍﻟﻤﺴﺘﺨﺩﻡ ‪ 98‬ﺍﻭ ﻤﻴﻠﻴﻨﻴﻭﻡ ﻨﺘﺒﻊ ﺍﻻﺘﻰ ‪:‬‬

‫‪ -1‬ﺍﻀﻐﻁ ‪start‬‬

‫‪ -2‬ﺍﺨﺘﺭ ‪programs‬‬

‫‪ -3‬ﺍﻀﻐﻁ ﻋﻠﻰ ‪Ms-Dos Prompt‬‬

‫ﻨﺠﺩ ﻨﺎﻓﺫﺓ ﺍﻟﺩﻭﺱ ﻅﻬﺭﺕ ﺍﻤﺎﻤﻨﺎ‬

‫ﺍﻤﺎ ﺍﺫﺍ ﻜﺎﻥ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻭﻴﻨﺩﻭﺯ ﺍﻜﺱ ﺒﻰ ﺍﻭ ‪ 2000‬ﺍﺘﺒﻊ ﺍﻟﺨﻁﻭﺍﺕ ﺍﻻﺘﻴﺔ‬
‫‪ -1‬ﺍﻀﻐﻁ ‪start‬‬
‫‪ -2‬ﺍﻀﻐﻁ ‪Run‬‬
‫‪ -3‬ﺍﻜﺘﺏ ‪ cmd‬ﺜﻡ ﺍﻀﻐﻁ ‪ok‬‬
‫ﺘﺠﺩ ﺍﻨﻪ ﺘﻡ ﻓﺘﺢ ﻨﺎﻓﺫﻩ ﺍﻟﺩﻭﺱ‬

‫ﺜﺎﻟﺜﺎ ﻭﻓﻰ ﺠﻤﻴﻊ ﺍﻟﺤﺎﻻﺕ ﻴﻜﻭﻥ ﻤﺤﺙ ﺍﻟﺩﻭﺱ ﻋﻨﺩ ﻤﺠﻠﺩ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻟﻠﻭﻴﻨﺩﻭﺯ ﻓﺎﺘﺒﻊ ﺍﻟﺨﻁﻭﺍﺕ‬
‫ﺍﻻﺘﻴﺔ ﻟﻠﻭﻗﻑ ﻋﻨﺩ ﺍﻟﻤﺤﺙ ‪c:\jdk1.3.0_02\bin‬‬
‫‪ -1‬ﺍﻜﺘﺏ ‪ cd..‬ﺜﻡ ﺍﻀﻐﻁ ﻤﻔﺘﺎﺡ ﺍﺩﺨﺎل ﻓﻰ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ‬
‫‪ -2‬ﺍﻜﺘﺏ ‪ cd jdk1.3.0_02‬ﺜﻡ ﺍﻀﻐﻁ ﻤﻔﺘﺎﺡ ﺍﺩﺨﺎل ﻓﻰ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ‬
‫‪ -3‬ﺍﻜﺘﺏ ‪ cd bin‬ﺜﻡ ﺍﻀﻐﻁ ﻤﻔﺘﺎﺡ ﺍﺩﺨﺎل ﻓﻰ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ‬
‫ﺭﺍﺒﻌﺎ ﺍﻻﻥ ﺴﻨﻘﻭﻡ ﺒﺘﺭﺠﻤﺔ ﻤﻠﻑ ﺍﻟﻤﺼﺩﺭ ﺍﻟﻰ ﻤﻠﻑ ‪.class‬‬
‫ﺍﻜﺘﺏ ﺍﻻﻥ ‪ javac filename.java‬ﺜﻡ ﺍﻀﻐﻁ ﻤﻔﺘﺎﺡ ﺍﺩﺨﺎل ﺍﻯ ﻨﻘﻭﻡ ﺒﻜﺘﺎﺒﺔ ‪ javac‬ﻭﺒﻌﺩﻫﺎ ﻨﻜﺘﺏ‬
‫ﺍﺴﻡ ﻤﻠﻑ ﺍﻟﻤﺼﺩﺭ ﺒﺎﻤﺘﺩﺍﺩﻩ ‪ .‬ﺍﻻﻥ ﺍﺫﺍ ﻗﻤﺕ ﺒﻔﺘﺢ ﺍﻟﻤﺴﺎﺭ ﺍﻟﺴﺎﺒﻕ ﺴﺘﺠﺩ ﺍﻨﻪ ﺘﻡ ﺍﻨﺸﺎﺀ ﻤﻠﻑ ﺠﺩﻴﺩ‬
‫ﺒﺎﻤﺘﺩﺍﺩ ‪ filename.class‬ﻭﻫﺫﺍ ﻫﻭ ﺍﻟﻤﻠﻑ ﺍﻟﺫﻯ ﻴﻤﻜﻨﻙ ﺘﺸﻐﻴﻠﻪ ﺘﺤﺕ ﺍﻯ ﻨﻅﺎﻡ ﺘﺸﻐﻴل ﺩﻭﻥ ﺍﻟﺘﻘﻴﺩ‬
‫ﺒﺎﻟﻨﻅﺎﻡ ﺍﻟﺫﻯ ﺘﻤﺕ ﺍﻟﺘﺭﺠﻤﺔ ﺘﺤﺘﻪ ‪.‬‬

‫ﺨﺎﻤﺴﺎ ﻓﻰ ﺍﻟﻨﻬﺎﻴﺔ ﻟﺘﺸﻐﻴل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﺫﻯ ﻗﻤﺕ ﺒﻜﺘﺎﺒﺘﻪ ﺍﻯ ﻤﻠﻑ ﺍﻟﻤﺼﺩﺭ ﺍﻜﺘﺏ ‪java filename‬‬
‫ﺍﻯ ﺍﻜﺘﺏ ‪ java‬ﺜﻡ ﺍﻜﺘﺏ ﺍﺴﻡ ﺍﻟﻤﻠﻑ ﺍﻟﺫﻯ ﺍﻤﺘﺩﺍﺩﻩ ‪ class‬ﺩﻭﻥ ﻜﺘﺎﺒﺔ ﺍﻻﻤﺘﺩﺍﺩ ‪.‬‬
‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﺎﻟﺙ ﻭﺍﻟﻌﺸﺭﻭﻥ ‪:‬‬
‫ﺍﻭل ﺒﺭﻨﺎﻤﺞ ﺠﺎﻓﺎ‬
‫ﺍﻻﻥ ﺘﻌﺎﻟﻰ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﻘﻭﻡ ﺒﻌﻤل ﺍﻭل ﺒﺭﻨﺎﻤﺞ ﻟﻙ ﺒﻠﻐﺔ ﺍﻟﺠﺎﻓﺎ ﻭﺴﻴﻜﻭﻥ ﺒﺭﻨﺎﻤﺞ ﺒﺴﻴﻁ ﺠﺩﺍ‬
‫ﻴﻘﻭﻡ ﺒﻁﺒﺎﻋﺔ ﻜﻠﻤﺔ ‪Hello‬‬
‫ﻗﻡ ﺒﻔﺘﺢ ﺍﻯ ﻤﺤﺭﺭ ﻨﺼﻭﺹ ﻭﻟﻴﻜﻥ ﻤﺜﻼ ﺍﻟﺩﻓﺘﺭ ‪ notepad‬ﻭﻗﻡ ﺒﻜﺘﺎﺒﺔ ﻫﺫﺍ ﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫‪class Hello‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;)"‪System.out.println("Hello‬‬

‫}‬
‫}‬
‫ﺍﻜﺘﺏ ﺍﻟﺤﺭﻭﻑ ﻜﻤﺎ ﻫﻰ ﺍﻯ ﻻﺘﻐﻴﺭ ﻓﻰ ﺤﺎﻟﺔ ﺍﻟﺤﺭﻭﻑ ﻜﺒﻴﺭﻩ ﺍﻭ ﺼﻐﻴﺭﻩ ﻭﻟﻥ ﺍﻜﺘﺒﻬﺎ ﻜﻤﺎ ﻫﻰ‬
‫ﺍﻤﺎﻤﻙ‬
‫ﻗﻡ ﺍﻻﻥ ﺒﺤﻔﻅ ﻫﺫﺍ ﺍﻟﻤﻠﻑ ﻓﻰ ﺍﻟﻤﺠﻠﺩ ‪ bin‬ﺍﻟﻤﻭﺠﻭﺩ ﺩﺍﺨل ﺍﻟﻤﺠﻠﺩ ‪ jdk1.3.0_02‬ﻭﻫﺫﺍ ﺍﻟﻤﺠﻠﺩ‬
‫ﺴﺘﺠﺩ ﻓﻰ ﺍﻟﺠﺯﺀ ‪ c:‬ﻤﻥ ﺍﻟﻬﺎﺭﺩ ﺩﻴﺴﻙ ﺍﻟﺨﺎﺹ ﺒﻙ‪.‬‬
‫ﺍﺤﻔﻅ ﺍﻟﻤﻠﻑ ﺒﺎﺴﻡ ‪ Hello.java‬ﻭﻻﺘﻨﺴﻰ ﺍﻻﻤﺘﺩﺍﺩ ‪.‬‬
‫ﻗﻡ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺒﺎﺘﺒﺎﻉ ﺍﻟﺨﻁﻭﺍﺕ ﺍﻟﻤﻭﺠﻭﺩﻩ ﻓﻰ ﺍﻟﺩﺭﺱ ﺍﻟﺴﺎﺒﻕ ﺘﺠﺩ ﺍﻨﻪ ﺘﻡ ﻁﺒﺎﻋﺔ ﻜﻠﻤﺔ‬
‫‪Hello‬‬
‫ﺘﻌﺎﻟﻰ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﻔﺴﺭ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺨﻁﻭﻩ ﺨﻁﻭﻩ‬
‫ﺍﻭﻻ ‪ class Hello‬ﺍﻯ ﺒﺭﻨﺎﻤﺞ ﻟﻠﺠﺎﻓﺎ ﻴﺠﺏ ﺍﻥ ﻴﻜﺘﺏ ﺩﺍﺨل ﺯﻤﺭﻩ ﺍﻭ ﻤﺠﻤﻭﻋﺔ ﺍﻭ ﻓﺼل ﺘﺴﻤﻰ‬
‫‪ class‬ﻓﻴﻠﺯﻡ ﺍﻭﻻ ﻜﺘﺎﺒﺔ ﻜﻠﻤﺔ ‪ class‬ﻭﺒﻌﺩﻫﺎ ﺍﻻﺴﻡ ﺍﻟﺫﻯ ﺴﻴﻌﻁﻰ ﻟﻬﺫﺍ ‪ class‬ﻭﻴﻔﻀل ﺩﺍﺌﻤﺎ ﺍﻥ‬
‫ﻴﻜﻭﻥ ﺍﻭل ﺤﺭﻑ ﻓﻰ ﻫﺫﺍ ﺍﻻﺴﻡ ﻜﺒﻴﺭ ‪ capital‬ﻭﻴﺘﻡ ﺒﻌﺩ ﺫﻟﻙ ﻜﺘﺎﺒﺔ ﺒﺎﻗﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺩﺍﺨل ﺍﻗﻭﺍﺱ‬
‫ﺍﻟﻔﺌﺔ } {‬
‫ﺜﺎﻨﻴﺎ ﺒﻌﺩ ﺫﻟﻙ ﺍﻟﺩﺍﻟﺔ ﺍﻻﺴﺎﺴﻴﺔ ﻟﻠﺘﺸﻐﻴل ﻭﻫﻰ ‪ main‬ﻭﻗﺩ ﺘﻡ ﺸﺭﺡ ﺍﻫﻤﻴﺘﻬﺎ ﻓﻰ ﺩﺭﺱ ﺴﺎﺒﻕ‬
‫ﺜﺎﻟﺜﺎ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺘﻰ ﻫﻰ ﻤﺤﻭﺭ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻻﻥ ﻜﻤﺎ ﺍﺘﻔﻘﻨﺎ ﻤﻥ ﻗﺒل ﺍﻥ ﺍﻟﺠﺎﻓﺎ ﺘﺘﻜﻭﻥ ﻤﻥ ﻤﺠﻤﻭﻋﺔ ﻤﻥ‬
‫ﺍﻟﺤﺯﻡ ‪ package‬ﻭﻴﻭﺠﺩ ﺤﺯﻤﺔ ﺘﺴﺘﺩﻋﻰ ﺫﺍﺘﻴﺎ ﺩﻭﻥ ﺍﻥ ﺘﻘﻭﻡ ﺒﺎﺴﺘﺩﻋﺎﺌﻬﺎ ﺒﺨﻁﻭﻩ ﻓﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻜﻤﺎ‬
‫ﺴﻨﺘﻌﻠﻡ ﺒﻌﺩ ﺫﻟﻙ ﻫﺫﻩ ﺍﻟﺤﺯﻤﺔ ﻫﻰ ‪ java.lang‬ﻭﻴﻭﺠﺩ ﺒﺩﺍﺨﻠﻬﺎ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺩﻭﺍل ﺍﻭ ﺍﻟﻁﺭﻕ‬
‫‪ method‬ﻭﻤﻨﻬﺎ ﺍﻟﺘﻰ ﺍﺴﺘﺨﺩﻤﻨﻬﺎ ﺍﻻﻥ ‪ System.out.println‬ﺒﻴﻥ ﺍﻟﻘﻭﺴﻴﻥ ﻜﺘﺒﻨﺎ ﺍﻟﺠﻤﻠﺔ ﺍﻟﻤﺭﺍﺩ‬
‫ﻁﺒﺎﻋﺘﻬﺎ ﺒﻴﻥ ﻋﻼﻤﺎﺕ ﺘﻨﺼﻴﺹ ﺤﺘﻰ ﺘﻁﺒﻊ ﻜﻤﺎ ﻫﻰ ‪ .‬ﻭ ‪ System‬ﻫﺫﺍ ﺍﺴﻡ ﺍﻟﻔﺼل ‪ class‬ﻟﺫﻟﻙ‬
‫ﻨﻼﺤﻅ ﺍﻥ ﺍﻭل ﺤﺭﻑ ﻜﺘﺏ ﻜﺒﻴﺭ ‪ capital‬ﻭﺒﺩﺍﺨﻠﻪ ‪ method‬ﺩﺍﻟﻪ ﺍﺴﻤﻬﺎ ‪ out‬ﻭﺩﺍﺨﻠﻬﺎ ﺩﺍﻟﻪ‬
‫ﺍﺨﺭﻯ ﺍﺴﻤﻬﺎ ‪ println‬ﻭﻤﻥ ﻫﻨﺎ ﻨﻔﻬﻡ ﺍﻥ ‪ class‬ﻴﺘﻜﻭﻥ ﻤﻥ ﻋﺩﺩ ‪ method‬ﻭ ﺍل ‪ method‬ﻴﻤﻜﻥ‬
‫ﺍﻥ ﺘﺘﻜﻭﻥ ﻫﻰ ﺍﻻﺨﺭﻯ ﻤﻥ ‪ method‬ﻭﻓﻰ ﺍﻟﻨﻬﺎﻴﺔ ﺍﻟﺤﺯﻤﺔ ﺍﻭ ‪ package‬ﺘﺘﻜﻭﻥ ﻤﻥ ﻋﺩﺩﺓ ‪class‬‬
‫ﻭﺍﻻﻥ ﻨﺤﻥ ﻨﺴﺘﺨﺩﻡ ﺍﻟﺤﺯﻡ ﺍﻟﺘﻰ ﺘﺘﻜﻭﻥ ﻤﻨﻬﺎ ﺍﻟﺠﺎﻓﺎ‪.‬‬
‫ﺒﺎﺨﺘﺼﺎﺭ ‪:‬‬
‫ﺍﻟﺤﺯﻤﺔ ‪ java.lang‬ﺘﺘﻜﻭﻥ ﻤﻥ ﻋﺩﺓ ‪ class‬ﻭﻤﻥ ﻫﺫﻩ ﺍل‪System class‬‬
‫ﻭﺩﺍﺨل ‪ System‬ﺘﻭﺠﺩ ﺩﻭﺍل ﻭﻤﻨﻬﺎ ‪out‬‬
‫ﻭﺩﺍﺨل ﺍﻟﺩﺍﻟﺔ ‪ out‬ﺘﻭﺠﺩ ‪ println‬ﺍﻟﺘﻰ ﻫﻰ ﺨﺎﺼﺔ ﺒﺎﻟﻁﺒﺎﻋﺔ‪.‬‬
‫ﻭﻻﺘﻨﺴﻰ ﺍﻥ ﺍﻟﺠﻤل ﻭﺍﻟﻌﺒﺎﺭﺍﺕ ﺘﻨﺘﻬﻰ ﺩﺍﺌﻤﺎ ; ﻓﺎﺼﻠﻪ ﻤﻨﻘﻭﻁﻪ‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺭﺍﺒﻊ ﻭﺍﻟﻌﺸﺭﻭﻥ ‪:‬‬


‫ﺍﻻﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ‬
‫ﺘﻌﺎﻟﻰ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﻀﻊ ﺍﻨﻭﺍﻉ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺘﻰ ﺫﻜﺭﻨﺎﻫﺎ ﻭﻨﻌﻠﻥ ﺒﻬﺎ ﻋﻥ ﻤﺘﻐﻴﺭﺍﺕ ﺩﺍﺨل‬
‫ﺒﺭﻨﺎﻤﺞ ﺒﺎﻟﺠﺎﻓﺎ‪.‬‬

‫ﺍﺫﺍ ﻜﺎﻥ ﻟﺩﻴﻨﺎ ﻤﺘﻐﻴﺭ ﺍﺴﻤﻪ ‪ b‬ﻭﻗﻴﻤﺔ ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ‪ 5‬ﻜﻴﻑ ﻴﻤﻜﻥ ﺍﻥ ﻨﻌﻠﻥ ﻋﻨﻪ‬
‫ﺍﻭﻻ ﻨﻨﻅﺭ ﺍﻟﻰ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺘﻰ ﺴﻴﺸﻴﺭ ﺍﻟﻴﻬﺎ ‪ b‬ﻨﺠﺩﻫﺎ ﺭﻗﻡ ﺼﺤﻴﺢ ﻤﻭﺠﺏ ﺼﻐﻴﺭ ﺠﺩﺍ ﺍﺫﻥ ﻴﻜﻭﻥ ﻨﻭﻉ‬
‫ﺍﻟﻤﺘﻐﻴﺭ ‪ b‬ﺍﺤﺩﻯ ﺍﻨﻭﺍﻉ ﺍﻟﺒﻴﺎﻨﺎﺕ ﺍﻟﺨﺎﺼﺔ ﺒﺎﻻﻋﺩﺍﺩ ﺍﻟﺼﺤﻴﺤﺔ ﻭﻟﻥ ﻨﻔﺽ ﺍﻥ ﻴﻜﻭﻥ ‪ byte‬ﻓﻠﻤﺎﺫﺍ‬
‫ﻓﻀﻠﺕ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻋﻥ ﺒﺎﻗﻰ ﺍﻻﻨﻭﺍﻉ ؟ ﻻﻥ ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻴﺸﻴﺭ ﺍﻟﻰ ﻗﻴﻤﺔ ﺼﻐﻴﺭﺓ ﻓﻼ ﺩﺍﻋﻰ‬
‫ﻟﺘﻌﺭﻴﻑ ﻨﻭﻉ ﻴﺴﺘﻐل ﻤﺴﺎﺤﺔ ﻜﺒﻴﺭﺓ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ ‪.‬‬

‫ﻭﻟﻠﻼﻋﻼﻥ ﻋﻥ ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻴﻜﻭﻥ ﻫﻜﺫﺍ‬


‫; ‪byte b = 5‬‬
‫ﺴﻨﻜﺘﺏ ﺍﻻﻥ ﺒﺭﻨﺎﻤﺞ ﻨﻌﻠﻥ ﻓﻴﻪ ﻋﻥ ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻭﻨﻁﺒﻌﻪ‬

‫‪class DataType‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪byte b=5‬‬
‫;)‪System.out.println("byte b ="+b‬‬

‫}‬
‫}‬

‫ﻗﻡ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺒﺘﺸﻴﻐل ﻫﺫﺍ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﻻﺤﻅ ﺍﻟﻨﺘﻴﺠﺔ !‬


‫ﻨﺴﺘﻨﺘﺞ ﺍﻴﻀﺎ ﺍﻨﻪ ﻟﻁﺒﺎﻋﺔ ﺠﻤﻠﻪ ﺒﺠﻭﺍﺭ ﺭﻗﻡ ﻴﺘﻡ ﺍﻟﺭﺒﻁ ﺒﻴﻨﻬﻡ ﺒﻌﻼﻤﺔ ﺯﺍﺌﺩ ‪ +‬ﻭﻫﻭ ﺍﺴﺘﺨﺩﺍﻡ ﻟﻬﺫﻩ‬
‫ﺍﻻﺸﺎﺭﺓ ﻟﻡ ﻨﺫﻜﺭﻩ ﻤﻥ ﻗﺒل ‪.‬‬
‫ﻗﻡ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺒﻌﻤل ﺒﺭﻨﺎﻤﺞ ﺘﻌﻠﻥ ﻓﻴﻪ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻻﺘﻴﺔ ﻭﺘﻁﺒﻌﻬﺎ ﻫﺫﺍ ﻜﺘﺩﺭﻴﺏ ﻟﻙ‬
‫‪s=100 ,‬‬ ‫‪i=10000 ,‬‬ ‫‪L=1000000000‬‬ ‫‪,‬‬ ‫‪d=105.55‬‬ ‫'‪, c='G‬‬
‫‪state=false‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺨﺎﻤﺱ ﻭﺍﻟﻌﺸﺭﻭﻥ ‪:‬‬


‫ﻤﺜﺎل ﻋﻠﻰ ﺍﺴﺘﺨﺩﺍﻡ ﻤﺘﺴﻠﺴﻼﺕ ﺍﻟﻬﺭﻭﺏ‬
‫ﻓﻰ ﻨﻬﺎﻴﺔ ﺍﻟﺩﺭﺱ ﺍﻟﺴﺎﺒﻕ ﻜﺎﻥ ﻫﻨﺎﻙ ﺘﺩﺭﻴﺏ ﻟﻌﻤل ﺒﺭﻨﺎﻤﺞ ﻟﻠﻼﻋﻼﻥ ﻋﻥ ﻤﺘﻐﻴﺭﺍﺕ ﻭﻁﺒﺎﻋﺘﻬﺎ‬

‫‪s=100 ,‬‬ ‫‪i=10000 ,‬‬ ‫‪L=1000000000‬‬ ‫‪,‬‬ ‫‪d=105.55‬‬ ‫'‪, c='G‬‬


‫‪state=false‬‬

‫ﺘﻌﺎﻟﻰ ﻋﺯﻴﺯﺉ ﺍﻟﻘﺎﺭﺉ ﻨﻘﻭﻡ ﻤﻌﺎ ﺒﻌﻤل ﻫﺫﺍ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺤﻴﺙ ﻴﺘﻡ ﻁﺒﺎﻋﺔ ﻓﻰ ﺍﻟﺴﻁﺭ ﺍﻟﻭﺍﺤﺩ‬
‫ﻤﺘﻐﻴﺭﺍﻥ ﺒﻴﻨﻬﻡ ﻤﺴﺎﻓﺔ ‪.‬‬
‫ﻜﻤﺎ ﺸﺭﺤﻨﺎ ﺴﻴﻜﻭﻥ ﺸﻜل ﺍﻟﺒﺭﻨﺎﻤﺞ ﻫﻜﺫﺍ‬
‫‪class DataType‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫; ‪short s=100‬‬
‫; ‪int i=10000‬‬
‫;‪long L=1000000000‬‬
‫; ‪float d=105.55f‬‬
‫;'‪char c='G‬‬
‫;‪boolean state=false‬‬

‫"‪System.out.println("s ="+s+‬‬ ‫;)‪"+"i="+i‬‬


‫"‪System.out.println("L ="+L+‬‬ ‫;)‪"+"d="+d‬‬
‫"‪System.out.println("c ="+c+‬‬ ‫;)‪"+"state="+state‬‬

‫}‬
‫}‬
‫ﻟﻜﻥ ﻫﻨﺎﻙ ﺘﻜﺭﺍﺭ ﻟﻌﺒﺎﺭﺓ ﺍﻟﻁﺒﺎﻋﺔ ﻭﻴﻤﻜﻥ ﺍﻥ ﺘﻜﻭﻥ ﺍﻟﻤﺴﺎﻓﺎﺕ ﻏﻴﺭ ﻤﺘﺴﺎﻭﻴﺔ ﻓﺘﻌﺎﻟﻰ ﻨﺴﺘﺨﺩﻡ‬
‫ﻤﺘﺴﻠﺴﻼﺕ ﺍﻟﻬﺭﻭﺏ ﻓﻴﻜﻭﻥ ﺸﻜل ﺍﻟﺒﺭﻨﺎﻤﺞ‪.‬‬
‫‪class DataType‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫; ‪short s=100‬‬
‫; ‪int i=10000‬‬
‫;‪long L=1000000000‬‬
‫; ‪float d=105.55f‬‬
‫;'‪char c='G‬‬
‫;‪boolean state=false‬‬

‫"=‪System.out.println("s="+s+"\t"+"i="+i+"\n"+"L="+L+"\t"+"d="+d+"\n"+"c‬‬
‫;)‪c+"\t"+"state="+state‬‬

‫}‬
‫}‬
‫ﺭﺍﺠﻊ ﺍﻟﺩﺭﺱ ﺍﻟﻌﺎﺸﺭ ﻭﺴﺘﻜﻭﻥ ﺸﻜل ﺍﻟﻤﺨﺭﺠﺎﺕ ﻫﻜﺫﺍ‬
‫ﻻﺤﻅ ﻓﻰ ﻫﺫﺍ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻋﻨﺩ ﺘﻌﺭﻴﻑ ﺍﻟﻨﻭﻉ ‪ float‬ﺘﻡ ﻭﻀﻊ ﺤﺭﻑ ‪ f‬ﺒﻌﺩ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ ﺍﻤﺎ ﻓﻰ‬
‫ﺤﺎﻟﺔ ﺘﻌﺭﻴﻑ ‪ double‬ﻻﻴﺘﻡ ﻭﻀﻊ ﺍﻯ ﺤﺭﻭﻑ ﺒﻌﺩ ﺍﻟﻘﻴﻤﺔ‬
‫ﺍﻻﻥ ﺒﺎﻟﺘﺄﻜﻴﺩ ﺘﻌﺭﻑ ﺍﻫﻤﻴﺔ ﺍﺴﺘﺨﺩﺍﻡ ﻤﺘﺴﻠﺴﻼﺕ ﺍﻟﻬﺭﻭﺏ ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺞ ﻭﺍﺴﺘﺨﺩﻡ ﻓﻴﺔ ﺍﻟﻤﺘﺴﻠﺴﻼﺕ‬
‫ﺍﻻﺨﺭﻯ ﻟﻤﻌﺭﻓﺔ ﺍﻫﻤﻴﺘﻬﺎ ‪.‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺴﺎﺩﺱ ﻭﺍﻟﻌﺸﺭﻭﻥ ‪:‬‬


‫ﻤﺜﺎل ﻋﻠﻰ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ‬
‫ﺘﻌﺎﻟﻰ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﻘﻭﻡ ﺒﻌﻤل ﺒﺭﻨﺎﻤﺞ ﻴﻭﻀﺢ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﺍﻟﻤﺨﺘﻠﻔﺔ ‪.‬‬
‫ﻟﺩﻴﻨﺎ ﻤﺘﻐﻴﺭﺍﻥ ‪ a,b‬ﻭﻗﻴﻤﻬﻡ ﻫﻰ ‪ b=4 , a=15‬ﻗﻡ ﺒﻁﺒﺎﻋﺔ ﺍﻟﺘﻌﺒﻴﺭﺍﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻭﻨﺘﻴﺠﺘﻬﺎ‬

‫‪class ArithOper‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪int a=15‬‬
‫;‪int b=4‬‬
‫;‪int x,y,z,v,u‬‬
‫;‪float f,c=4.0f‬‬
‫;‪x=a+b‬‬
‫;‪y=a-b‬‬
‫;‪z=a*b‬‬
‫;‪v=a/b‬‬
‫;‪f=a/c‬‬
‫;‪u=a%b‬‬
‫;)‪System.out.println("a+b="+x‬‬
‫;)‪System.out.println("a-b="+y‬‬
‫;)‪System.out.println("a*b="+z‬‬
‫;)‪System.out.println("a/b="+v+"\t"+"a/b="+f‬‬
‫;)‪System.out.println("a%b="+u‬‬

‫}‬
‫}‬
‫ﻗﻤﻨﺎ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺒﻁﺒﺎﻋﺔ ﻜل ﺘﻌﺒﻴﺭ ﺒﻌﺒﺎﺭﺓ ﺠﺩﻴﺩﺓ ﻟﺘﻭﻀﻴﺢ ﺍﻟﻤﺜﺎل ﻓﻘﻁ ‪.‬‬
‫ﺍﻭﻻ ﺘﻡ ﺍﻻﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻭﻨﻼﺤﻅ ﺍﻨﻪ ﻴﻤﻜﻥ ﺍﻻﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﻤﻥ ﻨﻭﻉ ﻭﺍﺤﺩ ﻓﻰ‬
‫ﻨﻔﺱ ﺍﻟﺨﻁﻭﺓ ‪.‬‬
‫ﺜﺎﻨﻴﺎ ﺘﻡ ﻜﺘﺎﺒﺔ ﺍﻟﺘﻌﺒﻴﺭﺍﺕ ﻭﻨﻼﺤﻅ ﻫﻨﺎ ﺍﻨﻪ ﻴﻜﺘﺏ ﻋﻠﻰ ﺍﻟﻴﺴﺎﺭ ﺍﺴﻡ ﺍﻟﻤﺘﻐﻴﺭ ﻭﻋﻠﻰ ﺍﻟﻴﻤﻴﻥ ﺍﻟﻌﻤﻠﻴﺔ‬
‫ﺍﻟﺤﺴﺎﺒﻴﺔ ﻭﻨﺎﺘﺞ ﺍﻟﻌﻤﻠﻴﺔ ﻴﻜﻭﻥ ﻫﻭ ﻗﻴﻤﺔ ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ‪.‬‬
‫ﺍﺨﻴﺭﺍ ﺘﻡ ﻁﺒﺎﻋﺔ ﺍﻟﻌﻤﻠﻴﺔ ﻭﻨﺎﺘﺠﻬﺎ ﻟﺘﻜﺯﻥ ﺍﻟﻨﺘﻴﺠﺔ ﻋﻠﻰ ﺍﻟﺸﻜل ﺍﻟﺘﺎﻟﻰ‪:‬‬

‫ﻟﻜﻥ ﻻﺤﻅ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺍﻨﻨﺎ ﻗﻤﻨﺎ ﺒﻌﻤﻠﻴﺔ ﺍﻟﻘﺴﻤﺔ ﻤﺭﺘﻴﻥ ﻭﻫﺫﺍ ﻻﻨﻨﺎ ﺍﺭﺩﻨﺎ ﺘﻭﻀﻴﺢ ﺍﻟﻔﺭﻕ ﺒﻴﻥ‬
‫ﻗﺴﻤﺔ ﻋﺩﺩ ﺼﺤﻴﺢ ﻋﻠﻰ ﻋﺩﺩ ﺼﺤﻴﺢ ﻭﻋﺩﺩ ﺼﺤﻴﺢ ﻤﻊ ﻋﺩﺩ ﻋﺸﺭﻯ ﻜﻤﺎ ﺘﺭﻯ ﺍﻥ ﻫﻨﺎﻙ ﻓﺭﻕ ﻓﻰ‬
‫ﺍﻟﻨﺘﻴﺠﺔ ﻓﻌﻨﺩﻤﺎ ﻗﺴﻤﻨﺎ ‪ 15/4‬ﻜﺎﻥ ﺍﻟﻨﺎﺘﺞ ‪ 3‬ﻻﻥ ﺍﻟﻌﺩﺩﻴﻥ ﺼﺤﻴﺤﻴﻥ ﺍﻤﺎ ﻋﻨﺩﻤﺎ ﻗﺴﻤﻨﺎ ‪ 15/4.0‬ﻜﺎﻥ‬
‫ﺍﻟﻨﺎﺘﺞ ‪ 3.75‬ﻻﻥ ﺍﺤﻰ ﺍﻟﺭﻗﻤﻴﻥ ﻋﺸﺭﻯ ‪ .‬ﺍﻨﺘﺒﻪ ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻤﻙ ﻤﺅﺜﺭ ﺍﻟﻘﺴﻤﺔ‪.‬‬

‫ﺘﻌﺎﻟﻰ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﺎﺨﺫ ﻤﺜﺎل ﺍﺨﺭ ﺍﺫﺍ ﻜﺎﻥ ﻟﺩﻴﻙ ﻤﺘﻐﻴﺭﺍﻥ ‪ a,b‬ﻭﻗﻴﻤﻬﻡ ﻫﻰ ‪, a=12.5‬‬
‫‪ b=2.5‬ﻗﻡ ﺒﻁﺒﺎﻋﺔ ﺍﻟﺘﻌﺒﻴﺭﺍﺕ ﺍﻟﺤﺴﺎﺒﻴﺔ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻭﻨﺘﻴﺠﺘﻬﺎ‬

‫‪class ArithOper1‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪float a=12.5f , b=2.5f‬‬


‫;‪float x,y,z,v,u‬‬
‫;‪x=a+b‬‬
‫;‪y=a-b‬‬
‫;‪z=a*b‬‬
‫;‪v=a/b‬‬
‫;‪u=a%b‬‬
‫‪System.out.println("a+b="+x+"\n"+"a-‬‬
‫;)‪b="+y+"\n"+"a*b="+z+"\n"+"a/b="+v+"\n"+"a%b="+u‬‬
‫}‬
‫}‬
‫ﻓﻴﻜﻭﻥ ﺍﻟﻨﺎﺘﺞ ﻋﻠﻰ ﺍﻟﺼﻭﺭﺓ‬

‫ﻗﻤﻨﺎ ﺒﻭﻀﻊ ﺠﻤﻠﺔ ﻭﺍﺤﺩﺓ ﻟﻠﻁﺒﺎﻋﺔ ﻟﻠﻤﻘﺎﺭﻨﻬﺎ ﺒﻴﻨﻬﺎ ﻭﺒﻴﻥ ﺍﺴﺘﺨﺩﺍﻡ ﺨﻤﺱ ﺠﻤل ﻭﻤﺘﺭﻭﻙ ﻟﻙ‬
‫ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺤﺭﻴﺔ ﺍﻻﺨﺘﻴﺎﺭ ﻓﻰ ﺍﻯ ﻤﻨﻬﻡ ﺘﺴﺘﺨﺩﻡ ﻭﻟﻜﻥ ﺍﻟﻬﺩﻑ ﺍﻥ ﺘﺴﺘﻭﻋﺏ ﺍﻟﻔﻜﺭﺓ ‪.‬‬
‫ﻨﻼﺤﻅ ﻓﻰ ﺍﻟﻨﻭﺍﺘﺞ ﺍﻥ ﺠﻤﻴﻌﻬﺎ ﻓﻰ ﺼﻭﺭﺓ ﺭﻗﻡ ﻋﺸﺭﻯ ﻭﺫﻟﻙ ﺤﺴﺏ ﺘﻌﺭﻴﻔﻨﺎ ﻟﻨﻭﺍﻉ ﻫﺫﻩ‬
‫ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻴﻀﺎ ﻨﻼﺤﻅ ﺍﻥ ﻨﺎﺘﺞ ﺒﺎﻗﻰ ﺍﻟﻘﺴﻤﺔ ﺼﻔﺭ ﻭﺫﻟﻙ ﻻﻨﻪ ﻻﻴﻭﺠﺩ ﺒﺎﻗﻰ ﻤﻥ ﻗﺴﻤﺔ ﺍﻟﺭﻗﻤﻴﻥ‬
‫ﻭﺍﻨﺘﺒﻪ ﺤﺘﻰ ﺍﻟﺼﻔﺭ ﻜﺘﺏ ﻓﻰ ﺼﻭﺭﺓ ﺭﻗﻡ ﻋﺸﺭﻯ‪.‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺴﺎﺒﻊ ﻭﺍﻟﻌﺸﺭﻭﻥ ‪:‬‬


‫ﻤﺜﺎل ﻋﻠﻰ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻻﺤﺎﺩﻴﺔ‬
‫ﺘﻌﺎﻟﻰ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﻘﻭﻡ ﺒﻌﻤل ﺒﺭﻨﺎﻤﺞ ﻴﻭﻀﺢ ﻋﻤل ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻻﺤﺎﺩﻴﺔ ‪.‬‬
‫ﺍﺫﺍ ﻜﺎﻥ ﻟﺩﻴﻨﺎ ﻤﺘﻐﻴﺭ ‪ i,j‬ﻗﻴﻤﺘﻪ ﻜل ﻤﻨﻬﻤﺎ ﺘﺴﺎﻭﻯ ‪5‬‬

‫‪class UnaryOper‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪int a,b,i,j‬‬
‫;‪i=j=5‬‬
‫;‪a=i++ * 3‬‬
‫;‪b=++j *3‬‬
‫;)‪System.out.println("a = "+a+"\n"+"b = "+b‬‬

‫}‬
‫}‬
‫ﻓﻴﻜﻭﻥ ﺸﻜل ﺍﻟﻨﺘﺎﺌﺞ ﻫﻜﺫﺍ‬

‫ﻭﺒﺎﻟﺘﺎﻜﻴﺩ ﻜﺎﻨﺕ ﺍﻟﻨﺘﺎﺌﺞ ﻤﺘﻭﻗﻌﺔ ﻤﻥ ﺍﻟﺸﺭﺡ ﺍﻟﺴﺎﺒﻕ ﻟﻌﻤل ﻫﺫﺍ ﺍﻟﻤﺅﺜﺭ ﻟﻜﻥ ﺘﻌﺎﻟﻰ ﻤﻌﻰ ﻨﻭﻀﺢ ﺍﻜﺜﺭ‬
‫ﻋﻤل ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻻﺤﺎﺩﻴﺔ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﺜﺎل‬
‫‪class UnaryOper1‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪int x1,x2,z=10‬‬
‫;‪x1=z--‬‬
‫;)‪System.out.println("x1 = "+x1‬‬
‫;‪x2=--z‬‬
‫;)‪System.out.println("x2 = "+x2‬‬

‫}‬
‫}‬

‫ﻗﺒل ﻋﺭﺽ ﺍﻟﻨﺘﺎﺌﺞ ﻤﺎﺫﺍ ﺘﺘﻭﻗﻊ ﺍﻥ ﺘﻜﻭﻥ ؟‬


‫ﺍﻭﻻ ‪ x1‬ﺤﺴﺏ ﺍﻟﻤﺅﺜﺭ ﺘﻡ ﺍﻨﻘﺎﺹ ﻤﻨﻬﺎ ‪ 1‬ﺍﺫﻥ ﻗﻴﻤﺘﻬﺎ ﺍﺼﺒﺤﺕ ‪ 9‬ﻫﺫﻩ ﺍﺠﺎﺒﻪ ﺨﻁﺄ ﻻﻥ ﻗﻴﻤﺔ ‪ z‬ﻓﻰ‬
‫ﻫﺫﻩ ﺍﻟﺨﻁﻭﺓ ﻻﺯﺍﻟﺕ ﺘﺴﺎﻭﻯ ‪ 10‬ﻭﻻ ﻴﺘﻡ ﺍﻨﻘﺎﺹ ﻤﻨﻬﺎ ﺍﻟﻭﺍﺤﺩ ﺍﻻ ﺒﻌﺩ ﺍﻟﺨﺭﻭﺝ ﻤﻥ ﻫﺫﻩ ﺍﻟﺨﻁﻭﺓ‬
‫ﻭﺘﺼﺒﺢ ﺍﻟﻘﻴﻤﺔ ﺍﻟﺠﺩﻴﺩ ‪z=9‬‬
‫ﺜﺎﻨﻴﺎ ﻟﺫﻟﻙ ‪ x2=8‬ﻭﻫﺫﻩ ﺍﻻﺠﺎﺒﺔ ﺼﺤﻴﺤﺔ ‪.‬‬
‫ﺘﻌﺎﻟﻰ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﻌﺭﺽ ﺍﻟﻨﺘﺎﺌﺞ ﻭﻨﺭﻯ‬
‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﺎﻤﻥ ﻭﺍﻟﻌﺸﺭﻭﻥ ‪:‬‬
‫ﻤﺜﺎل ﻋﻠﻰ ﺍﺴﺘﺨﺩﺍﻡ ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﻌﻼﻗﻴﺔ ﻭﺍﻟﻤﻨﻁﻘﻴﺔ‬
‫ﺘﻌﺎﻟﻰ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﻘﻭﻡ ﺒﻌﻤل ﺒﺭﻨﺎﻤﺞ ﻴﻭﻀﺢ ﻋﻤل ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﻌﻼﻗﻴﺔ ﻭﺍﻟﻤﻨﻁﻘﻴﺔ ‪.‬‬
‫ﺍﺫﺍ ﻜﺎﻥ ﻟﺩﻴﻨﺎ ﻫﺫﻩ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ‪ i,f,c‬ﻭﻗﻴﻤﻬﺎ '‪ i=7,f=5.5,c='w‬ﻗﻡ ﺒﻌﻤل ﺒﺭﻨﺎﻤﺞ ﻴﻭﺠﺩ ﻨﺘﺎﺌﺞ‬
‫ﺍﻟﻌﻼﻗﺎﺕ ﺍﻻﺘﻴﺔ ‪:‬‬
‫)‪(i>=6)&&(c==119‬‬
‫)'‪(i>6)||(c='w‬‬
‫)‪(f<11)&&(i>100‬‬
‫)‪(c!='p')||((i+f)<=10‬‬
‫ﻗﺒل ﺍﻥ ﻨﻘﻭﻡ ﺒﻌﻤل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺤﺎﻭل ﺍﻥ ﺘﺘﻭﻗﻊ ﺍﻟﻨﺘﺎﺌﺞ‬
‫‪class LogOper‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪boolean b1,b2,b3,b4‬‬
‫;‪int i=7‬‬
‫;‪float f=5.5f‬‬
‫;'‪char c='w‬‬
‫;)‪b1=(i>=6)&&(c==119‬‬
‫;)'‪b2= (i>6)||(c=='w‬‬
‫;)‪b3=(f<11)&&(i>100‬‬
‫;)‪b4=(c!='p')||((i+f)<=10‬‬

‫;)‪System.out.println("(i>=6)&&(c==119) is "+b1‬‬
‫;)‪System.out.println("(i>6)||(c=='w') is "+b2‬‬
‫;)‪System.out.println("(f<11)&&(i>100) is "+b3‬‬
‫;)‪System.out.println("(c!='p')||((i+f)<=10) is "+b4‬‬

‫}‬
‫}‬
‫ﻭﺘﻜﻭﻥ ﻨﺘﻴﺠﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻫﻜﺫﺍ‬

‫ﺘﻼﺤﻅ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺍﻨﻪ ﻓﻰ ﺍﻟﻌﻼﻗﺔ ﺍﻻﻭﻟﻰ ﻜﺎﻨﺕ ﺍﻟﻨﺘﻴﺠﺔ ‪ true‬ﺒﺎﻟﺭﻏﻡ ﻤﻥ ﺍﻥ '‪ c='w‬ﻨﻌﻡ‬
‫ﻟﻜﻥ ﺍﺫﺍ ﺘﺫﻜﺭﺕ ﻤﻌﻰ ﺍﻥ ‪ w‬ﻴﻤﻜﻥ ﺍﻟﺘﻌﺒﻴﺭ ﻋﻨﻬﺎ ﺒﺎﻟﺭﻗﻡ ﺍﻟﺫﻯ ﻴﻤﺜﻠﻬﺎ ﻓﻰ ﺍﻻﺴﻜﻰ ﻜﻭﺩ ﺘﺠﺩ ﺍﻥ‬
‫ﺍﻟﻨﺘﻴﺠﺔ ﻫﻨﺎ ﺼﺤﻴﺤﺔ ﻻﻥ ﺍﻟﻌﺎﻤﻠﻴﻥ ﻜل ﻤﻨﻬﻤﺎ ﺼﺤﻴﺢ‪.‬‬
‫ﺍﻟﻌﻼﻗﺔ ﺍﻟﺜﺎﻨﻴﺔ ﻜل ﻤﻥ ﺍﻟﺘﻌﺒﻴﺭﻴﻥ ﺼﺤﻴﺢ ﻭﻋﻠﻴﺔ ﻓﺎﻥ ﺍﻟﻨﺘﻴﺠﺔ ‪ true‬ﻭﻜﺎﻥ ﻴﻜﻔﻰ ﺍﻥ ﻴﻜﻭﻥ ﺍﺤﺩﺍﻫﻤﺎ‬
‫ﺼﺤﻴﺤﺎ ﻟﻜﻰ ﺘﻜﻭﻥ ﺍﻻﺠﺎﺒﺔ ﺼﺤﻴﺤﺔ ﺘﺫﻜﺭ ﻋﻤل ‪.or‬‬
‫ﺍﻟﻌﻼﻗﺔ ﺍﻟﺜﺎﻟﺜﺔ ‪ false‬ﻻﻥ ﺍﻟﻌﺎﻤل ﺍﻟﺜﺎﻨﻰ ﺨﻁﺎ ﻭﻤﻊ ‪ and‬ﻟﻜﻰ ﺘﻜﻭﻥ ﺍﻟﻨﺘﻴﺠﺔ ﺼﺤﻴﺤﺔ ﻴﻠﺯﻡ ﺍﻥ‬
‫ﻴﻜﻭﻥ ﺍﻟﻌﺎﻤﻠﻴﻥ ﺼﺤﻴﺤﺎ‬
‫ﺍﻟﻌﻼﻗﺔ ‪ true‬ﻻﻥ ﺍﻭل ﻋﺎﻤل ﺼﺤﻴﺢ‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺘﺎﺴﻊ ﻭﺍﻟﻌﺸﺭﻭﻥ ‪:‬‬


‫ﻤﺜﺎل ﻋﻠﻰ ﺍﺴﺘﺨﺩﺍﻡ ﻤﺅﺜﺭﺍﺕ ﺍﻟﺘﺤﺩﻴﺩ‬
‫ﺘﻌﺎﻟﻰ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﻘﻭﻡ ﺒﻌﻤل ﺒﺭﻨﺎﻤﺞ ﻴﻭﻀﺢ ﻋﻤل ﻤﺅﺜﺭﺍﺕ ﺍﻟﺘﺤﺩﻴﺩ‪.‬‬
‫ﺍﺫﺍ ﻜﺎﻥ ﻟﺩﻴﻨﺎ ﻫﺫﻩ ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ‪ i,j,f,k‬ﻭﻜﺎﻨﺕ ﻗﻴﻤﻬﺎ ‪i=6,j=8,f=6.6,k=-4.25‬‬
‫ﺒﻴﻥ ﺒﺒﺭﻨﺎﻤﺞ ﻨﺘﺎﺌﺞ ﺍﻟﻌﻤﻠﻴﺎﺕ ﺍﻻﺘﻴﺔ‪:‬‬
‫‪i=i+6‬‬
‫‪f=f-k‬‬
‫)‪j=j*(i-4‬‬
‫‪f=f/4‬‬
‫)‪i=i%(j-2‬‬

‫‪class AssOper‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪int i=6,j=8‬‬
‫;‪float f=6.5f,k=-4.25f‬‬
‫;))‪System.out.println("i=i+6 -> i="+(i+=6‬‬
‫‪System.out.println("f=f-k‬‬ ‫;))‪-> f= "+(f-=k‬‬
‫;)))‪System.out.println("j=j*(i-4) -> j="+(j*=(i-4‬‬
‫‪System.out.println("f=f/4‬‬ ‫;))‪-> f="+(f/=4‬‬
‫;)))‪System.out.println("i=i%(j-2) -> i="+(i%=(j-2‬‬
‫}‬
‫}‬
‫ﻭﺘﻜﻭﻥ ﻨﺘﻴﺠﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻫﻜﺫﺍ‪:‬‬

‫ﻤﻥ ﺍﻫﻡ ﺍﻟﻤﻼﺤﻅﺎﺕ ﻓﻰ ﻫﺫﺍ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻨﻪ ﻋﻨﺩ ﺍﺠﺭﺍﺀ ﻋﻤﻠﻴﺔ ﻋﻠﻰ ﻤﺘﻐﻴﺭ ﺘﻜﻭﻥ ﻗﻴﻤﺘﻪ ﻫﻰ ﺍﻟﻘﻴﻤﺔ‬
‫ﺍﻟﺠﺩﻴﺩ ﺍﺫﺍ ﻜﺎﻥ ﻗﺩ ﺘﻐﻴﺭﺕ ﻗﻴﻤﺘﻪ ‪.‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﻼﺜﻭﻥ‪:‬‬
‫ﻋﺒﺎﺭﺓ ﺒﻴﻨﻤﺎ ‪while statement‬‬
‫ﻫﻰ ﺍﺤﺩﻯ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻡ ﺍﻟﺘﻰ ﺘﻡ ﺫﻜﺭﻫﺎ ﻓﻰ ﺍﻟﻔﺼل ﺍﻟﺤﺎﺩﻯ ﻭﺍﻟﻌﺸﺭﻭﻥ ﻭﻫﻰ ﻤﻥ ﻋﺒﺎﺭﺍﺕ‬
‫ﺍﻟﺘﻜﺭﺍﺭ ﻭﺘﺴﺘﺨﺩﻡ ﻓﻰ ﺘﻨﻔﻴﺫ ﻋﺒﺎﺭﺓ ﺍﻭ ﻋﺩﺓ ﻋﺒﺎﺭﺕ ﻋﺩﺩﺍ ﻤﻥ ﺍﻟﻤﺭﺍﺕ ﺍﻟﻤﺘﺘﺎﺒﻌﺔ ﻭﺫﻟﻙ ﺘﺤﺕ ﺸﺭﻁ‬
‫ﻤﻌﻴﻥ ‪.‬‬
‫ﺍﻟﺼﻴﻐﺔ ﺍﻟﻌﺎﻤﺔ ‪:‬‬
‫ﻋﺒﺎﺭﺓ )ﺠﻤﻠﺔ ﺸﺭﻁﻴﺔ( ‪while‬‬
‫ﻭﺘﻜﻭﻥ ﺒﻬﺫﺍ ﺍﻟﺸﻜل ﻓﻰ ﺤﺎﻟﺔ ﺍﻥ ﺘﻜﻭﻥ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ ﺼﺤﻴﺤﺔ ﺘﻨﻔﺫ ﻋﺒﺎﺭﺓ ﻭﺍﺤﺩﺓ ﺍﻭ ﺍﻤﺭ ﻭﺍﺤﺩ‪.‬‬
‫)ﺠﻤﻠﺔ ﺸﺭﻁﻴﺔ( ‪while‬‬
‫{‬
‫ﻋﺒﺎﺭﺍﺕ‬
‫}‬
‫ﻭﺘﻜﻭﻥ ﺒﻬﺫﺍ ﺍﻟﺸﻜل ﻓﻰ ﺤﺎﻟﺔ ﺍﻥ ﺘﻜﻭﻥ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ ﺼﺤﻴﺤﺔ ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺍﻜﺜﺭ ﻤﻥ ﺠﻤﻠﺔ ﺤﻴﺙ‬
‫ﺍﻨﻪ ﻴﺘﻭﻗﻑ ﺘﻨﻔﻴﺫ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ ﺩﺍﺨل ﺍﻟﻘﻭﺴﻴﻥ } { ﻋﻠﻰ ﻨﺘﻴﺠﺔ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ ﻓﺎﺫﺍ ﻜﺎﻨﺕ‬
‫ﻨﺘﻴﺠﺘﻬﺎ ‪ true‬ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻭﻴﺘﻜﺭﺭ ﺘﻨﻔﻴﺫ ﺍﻟﻌﺒﺎﺭﺍﺕ ﻤﺎﺩﺍﻤﺕ ﻨﺘﻴﺠﺔ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ ‪true‬‬
‫ﻓﺎﺫﺍ ﺘﻐﻴﺭﺕ ﺍﻟﻨﺘﻴﺠﺔ ﺍﻟﻰ ‪ flae‬ﻓﺴﻭﻑ ﺘﻬﻤل ﺍﻟﻌﺒﺎﺭﺍﺕ ﻭﻴﻨﺘﻘل ﺍﻟﺘﺤﻜﻡ ﻟﺘﻨﻔﻴﺫ ﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﺘﻰ ﺘﻠﻰ‬
‫ﺍﻟﻘﻭﺱ } ‪.‬‬
‫ﺘﻌﺎﻟﻰ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﻘﻭﻡ ﺒﻌﻤل ﺒﺭﻨﺎﻤﺞ ﺒﺴﻴﻁ ﻟﻁﺒﺎﻋﺔ ﺍﻻﻗﺎﻡ ﻤﻥ ‪ 0‬ﺍﻟﻰ ‪7‬‬

‫‪class WhileSt‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪int i=0‬‬
‫)‪while (i<=7‬‬
‫{‬
‫;)‪System.out.println(i‬‬
‫;‪++i‬‬
‫}‬

‫}‬
‫}‬
‫ﺸﺭﺡ ﺍﻟﺒﺭﻨﺎﻤﺞ ‪:‬‬
‫ﺍﻭﻻ ﺘﻡ ﺍﻻﻋﻼﻥ ﻋﻥ ﻤﺘﻐﻴﺭ ‪ i‬ﻭﺘﺤﺩﻴﺩ ﻗﻴﻤﺔ ﺍﺒﺘﺩﺍﺌﻴﺔ ﻟﻪ ﺼﻔﺭ‬
‫ﺜﺎﻨﻴﺎ ﻋﺒﺎﺭﺓ ﺍﻟﺘﻜﺭﺍﺭ ‪ while‬ﺘﻘﻭل ﻤﺎﺩﺍﻤﺕ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ i‬ﺍﻗل ﻤﻥ ﺍﻭ ﺘﺴﺎﻭﻯ ‪ 7‬ﻓﺎﺴﺘﻤﺭ ﻓﻰ ﺘﻨﻔﻴﺫ‬
‫ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻟﺘﺎﻟﻴﺔ ‪ :‬ﺍﻟﻌﺒﺎﺭﺓ ﺍﻻﻭﻟﻰ ﺍﻁﺒﻊ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ i‬ﻭﺍﻟﻌﺒﺎﺭﺓ ﺍﻟﺜﺎﻨﻴﺔ ﺯﻴﺎﺩﺓ ﺍﻟﻤﺘﻐﻴﺭ ‪ i‬ﺒﻤﻘﺩﺍﺭ‬
‫‪ 1‬ﻭﻨﻼﺤﻅ ﺍﻥ ﻫﺫﺍﻥ ﺍﻟﻌﺒﺎﺭﺘﺎﻥ ﺘﻡ ﻭﻀﻌﻤﻬﺎ ﺒﻴﻥ } { ﻻﻨﻬﻤﺎ ﺍﻜﺜﺭ ﻤﻥ ﻋﺒﺎﺭﺓ ‪.‬‬
‫ﻭﻋﻠﻰ ﻫﺫﺍ ﻴﻜﻭﻥ ﺸﻜل ﺍﻟﻤﺨﺭﺠﺎﺕ ‪:‬‬
‫ﻭﻴﻤﻜﻥ ﻜﺘﺎﺒﺔ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻜﻤﺎ ﻴﻠﻰ‬
‫‪class WhileSt1‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪int i=0‬‬
‫)‪while (i<=7‬‬

‫;)‪System.out.println(i++‬‬

‫}‬
‫}‬
‫ﻭﻻﺤﻅ ﻫﻨﺎ ﺍﻨﻪ ﺘﻠﻰ ﻋﺒﺎﺭﺕ ﺍﻟﺘﻜﺭﺍﺭ ‪ while‬ﻋﺒﺎﺭﺓ ﻭﺍﺤﺩﻩ ﻓﻘﻁ ﻟﺫﺍ ﻟﻡ ﻨﺴﺘﺨﺩﻡ ﺍﻻﻗﻭﺍﺱ ﻭﻋﻨﺩ‬
‫ﺘﻨﻔﻴﺫ ﻫﺫﺍ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺴﺘﻜﻭﻥ ﻨﻔﺱ ﺍﻟﻤﺨﺭﺠﺎﺕ ‪.‬‬
‫ﻭﻨﻼﺤﻅ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻓﻰ ﻋﺒﺎﺭﺓ ‪ while‬ﻻ ﻴﻭﺠﺩ ﻓﻰ ﻨﻬﺎﻴﺘﻬﺎ ﺍﻟﻔﺼﻠﺔ ﺍﻟﻤﻨﻘﻭﻁﺔ ﻫﺫﺍ ﻟﻴﺱ‬
‫ﺨﻁﺄ ﻓﻰ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﻟﻜﻥ ﻫﺫﻩ ﻫﻰ ﺼﻭﺭﺘﻬﺎ ‪ .‬ﻭﻟﻜﻥ ﻤﺎﺫﺍ ﺍﺫﺍ ﻭﻀﻌﻨﺎ ﺒﻌﺩﻫﺎ ﻓﺼﻠﺔ ﻤﻨﻘﻭﻁﺔ ؟!‬
‫ﺘﻌﺎﻟﻰ ﻨﺠﺭﺏ ﻫﺫﺍ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺴﻭﻴﺎ‬
‫‪class WhileSt2‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪int i=0‬‬
‫;)‪while (++i<=7‬‬
‫;)‪System.out.println(i‬‬

‫}‬
‫}‬
‫ﻫﻨﺎ ﻓﻰ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻤﺎﺩﺍﻡ ﺍﻟﺸﺭﻁ ﻤﺘﺤﻘﻕ ﻻﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺍﻯ ﺸﺊ ﻻﻥ ﺍﻟﻌﺒﺎﺭﺓ ﻤﻨﺘﻬﻴﺔ ﻭﻟﻴﺱ ﻫﻨﺎﻙ‬
‫ﻋﺒﺎﺭﺕ ﺒﻌﺩ ‪ while‬ﻟﺘﻨﻔﺫ ﻭﻟﻜﻥ ﻫﻨﺎﻙ ﻓﺼﻠﺔ ﻤﻨﻘﻭﻁﺔ ﺍﻯ ﻻﺸﺊ ﻭﻫﻨﺎ ﻴﺯﺩﺍﺩ ﺍﻟﻤﺘﻐﻴﺭ ‪ i‬ﺒﻤﻘﺩﺍﺭ ‪1‬‬
‫ﺤﺘﻰ ﻻﻴﺘﺤﻘﻕ ﺍﻟﺸﺭﻁ ﻭﻓﻰ ﺍﻟﻨﻬﺎﻴﺔ ﻴﻁﺒﻊ ﻗﻴﻤﺔ ‪ i‬ﺍﻟﺘﻰ ﺍﺼﺒﺤﺕ ‪ 8‬ﻭﺘﻜﻭﻥ ﺸﻜل ﺍﻟﻤﺨﺭﺠﺎﺕ ﻫﻜﺫﺍ ‪:‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺤﺎﺩﻯ ﻭﺍﻟﺜﻼﺜﻭﻥ‪:‬‬


‫ﻋﺒﺎﺭﺓ ﺒﻴﻨﻤﺎ ﺍﻟﻤﺘﺩﺍﺨﻠﺔ ﻭﺍﻟﻼﻨﻬﺎﺌﻴﺔ‬
‫ﺘﺴﺘﺨﺩﻡ ﻋﺒﺎﺭﺓ ﺒﻴﻨﻤﺎ ﺍﻟﻤﺘﺩﺍﺨﻠﺔ ﻓﻰ ﺤﺎﻟﺔ ﻭﺠﻭﺩ ﺍﻜﺜﺭ ﻤﻥ ﺤﻠﻘﺔ ﺘﻜﺭﺍﺭ ﻭﺍﺤﺩﺓ ﻭﻋﻨﺩﻤﺎ ﺘﻜﻭﻥ‬
‫ﻤﺘﺩﺍﺨﻠﻪ ﻴﺘﻡ ﺍﻻﻨﺘﻬﺎﺀ ﺍﻭﻻ ﻤﻥ ﺍﻟﺤﻠﻘﺔ ﺍﻟﺩﺍﺨﻠﻴﺔ ﻟﻤﺭﺓ ﻭﺍﺤﺩ ﻤﻥ ﺘﻜﺭﺍﺭ ﺍﻟﺤﻠﻘﺔ ﺍﻟﺨﺎﺭﺠﻴﺔ ﺜﻡ ﺘﻜﺭﺭ‬
‫ﺍﻟﺤﻠﻘﺔ ﺍﻟﺩﺍﺨﻠﻴﺔ ﻤﺭﺓ ﺍﺨﺭﻯ ﻭﻫﺫﺍ ﺘﻜﺭﺭ ﺍﻟﺤﻠﻘﺔ ﺍﻟﺩﺍﺨﻠﻴﺔ ﻟﺤﻴﻥ ﺍﻨﺘﻬﺎﺀ ﺍﻟﺤﻠﻘﺔ ﺍﻟﺨﺎﺭﺠﻴﺔ ﻭﺍﻟﺒﺭﻨﺎﻤﺞ‬
‫ﺍﻟﺘﺎﻟﻰ ﻴﻭﻀﺢ ﺍﻟﺸﺭﺡ‬

‫‪class WhileSt3‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪int b,a=0‬‬
‫)‪while (a<=10‬‬
‫{‬
‫;‪b=1‬‬
‫)‪while(b<=a‬‬
‫{‬
‫;)"*"( ‪System.out.print‬‬
‫;‪++b‬‬
‫}‬
‫;)"‪System.out.print ("\n‬‬
‫;‪++a‬‬
‫}‬

‫}‬
‫}‬

‫ﻭﺘﻜﻭﻥ ﺸﻜل ﺍﻟﻤﺨﺭﺠﺎﺕ ﻋﻨﺩ ﺘﻨﻔﻴﺫ ﺍﻟﺒﺭﻨﺎﻤﺞ‬

‫ﻭﻟﻜﻥ ﻤﺎﺫﺍ ﻴﺤﺩﺙ ﻓﻰ ﻫﺫﺍ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻓﻰ ﺍﻟﺒﺩﺍﻴﺔ ﺘﻜﻭﻥ ﻗﻴﻤﺔ ‪ a‬ﺘﺴﺎﻭﻯ ﺍﻟﺼﻔﺭ ﻭﻴﺒﺩﺍ ﺒﺘﻨﻔﻴﺫ ﺠﻤﻠﺔ‬
‫‪ while‬ﺍﻻﻭﻟﻰ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ ﺼﺤﻴﺤﺔ ﻻﻨﺔ ‪ 0<10‬ﻓﺒﺠﺩ ﺍﻭل ﻋﺒﺎﺭﺓ ﺒﻌﺩ ﺠﻤﻠﺔ ‪while‬‬
‫ﺍﻻﻭﻟﻰ ﺍﻥ ﺘﻜﻭﻥ ﻗﻴﻤﺔ ‪ b=1‬ﺜﻡ ﻨﺎﺘﻰ ﺍﻟﻰ ﺠﻤﻠﺔ ‪ while‬ﺍﻟﺜﺎﻨﻴﺔ ﻭﻫﻨﺎ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ ﻏﻴﺭ‬
‫ﺼﺤﻴﺤﺔ ﻻﻥ ‪ a=0 , b=1‬ﻓﻼ ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﻋﺒﺎﺭﺕ ‪ while‬ﺍﻟﺜﺎﻨﻴﺔ ﺜﻡ ﺒﻌﺩ ﺫﻟﻙ ﻴﺠﺩ ﻋﺒﺎﺭﺓ ﺘﻨﻔﻴﺫﻴﺔ‬
‫ﻟﻴﻨﺯل ﺴﻁﺭ ﺠﺩﻴﺩ ﺜﻡ ﻴﺯﻴﺩ ﻤﻘﺩﺍﺭ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ a‬ﺍﻟﻰ ‪ 1‬ﻭﻴﻌﻭﺩ ﺍﻟﻰ ﺠﻤﻠﺔ ‪ while‬ﺍﻻﻭﻟﻰ ﻓﻴﺠﺩ‬
‫ﺍﻟﺸﺭﻁ ﻤﺘﺤﻘﻕ ﻭﺘﻜﻭﻥ ﻗﻴﻤﺔ ‪ b=1‬ﻓﻨﺠﺩ ﺍﻥ ﺸﺭﻁ ‪ while‬ﺍﻟﺜﺎﻨﻴﺔ ﻤﺘﺤﻘﻕ ﻓﻴﺒﺩﺍ ﺒﻁﺒﺎﻋﺔ ﺍﻟﻨﺠﻤﺔ‬
‫ﻭﻟﻜﻥ ﺍﻟﺠﻤﻠﺔ ﻫﻨﺎ ﺴﺘﺘﻜﺭﺭ ﻤﺭﺓ ﻭﺍﺤﺩﺓ ﻭﻫﻜﺫﺍ ﻴﺘﻡ ﺘﻜﺭﺍﺭ ﺸﻜل ﺍﻟﻨﺠﻤﺔ ﺤﺴﺏ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪a‬‬

‫ﺍﻤﺎ ﺍﻟﺘﻜﺭﺍﺭ ﺍﻟﻼﻨﻬﺎﺌﻰ ﻟﻌﺒﺎﺭﺓ ﺒﻴﻨﻤﺎ ﻫﻭ ﺍﻥ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ ﺍﻟﺨﺎﺼﺔ ‪ while‬ﺘﻜﻭﻥ ﺩﺍﺌﻤﺎ ﺼﺤﻴﺤﺔ‬
‫ﻓﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺍﻟﻌﺒﺎﺭﺕ ﺍﻟﻰ ﻤﺎﻻ ﻨﻬﺎﻴﻪ ‪.‬‬
‫‪class WhileSt4‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪int a=1‬‬
‫;‪int b‬‬
‫)‪while (true‬‬
‫{‬
‫;‪b=1‬‬

‫)‪while(b<=a‬‬
‫{‬
‫;)‪System.out.print(a‬‬
‫;‪++b‬‬
‫}‬
‫;)"‪System.out.print("\n‬‬
‫;‪++a‬‬
‫}‬

‫}‬
‫}‬

‫ﻭﺘﻜﻭﻥ ﺸﻜل ﺍﻟﻤﺨﺭﺠﺎﺕ‬

‫ﻭﻟﻠﺨﺭﻭﺝ ﻤﻥ ﻫﺫﻩ ﺍﻟﺤﻠﻘﺔ ﺍﻟﻼﻨﻬﺎﺌﻴﺔ ﺍﻀﻐﻁ ﻤﻔﺘﺎﺤﻰ ‪ctrl+c‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﺎﻨﻰ ﻭﺍﻟﺜﻼﺜﻭﻥ ‪:‬‬


‫ﻋﺒﺎﺭﺓ ﺍﻋﻤل ﺒﻴﻨﻤﺎ ‪do while‬‬
‫ﻓﻰ ﻋﺒﺎﺭﺓ ‪ while‬ﻴﺘﻡ ﺍﺨﺘﺒﺎﺭ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ ﺍﻭﻻ ﻗﺒل ﺍﻟﺩﺨﻭل ﻓﻰ ﺘﻨﻔﻴﺫ ﻋﺒﺎﺭﺍﺕ ﺍﻟﻤﻭﺠﻭﺩﻩ ﺒﻌﺩ‬
‫‪ while‬ﻭﻴﺘﻡ ﺍﺨﺘﺒﺎﺭﻫﺎ ﻜل ﺩﻭﺭﻩ ﻭﻟﻜﻥ ﻓﻰ ‪ do-while‬ﻓﺎﻥ ﺍﻻﺨﺘﺒﺎﺭ ﻴﺘﻡ ﻓﻰ ﻨﻬﺎﻴﺔ ﺍﻟﺘﻜﺭﺍﺭ‪.‬‬
‫ﻭﺘﻜﻭﻥ ﺍﻟﺼﻴﻐﺔ ﺍﻟﻌﺎﻤﺔ ﻫﻰ‬
‫‪Do‬‬
‫{‬
‫ﺍﻟﻌﺒﺎﺭﺍﺕ‬
‫}‬
‫;)ﺠﻤﻠﺔ ﺸﺭﻁﻴﺔ(‪while‬‬
‫ﻻﺤﻅ ﻫﻨﺎ ﺍﻨﻪ ﺘﻡ ﻭﻀﻊ ﻓﺎﺼﻠﺔ ﻤﻨﻘﻭﻁﺔ ﺒﻌﺩ ‪while‬‬
‫ﺘﻌﺎﻟﻰ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺉ ﻨﻘﻭﻡ ﺒﺘﻨﻔﻴﺫ ﻫﺫﺍ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻟﻨﻌﺭﻑ ﺍﻟﻔﺭﻕ‬
‫‪class DoWhileSt4‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪int i=0‬‬
‫‪do‬‬

‫{‬
‫;)"‪System.out.println("HI‬‬
‫;‪++i‬‬
‫}‬
‫;)‪while(i>7‬‬

‫}‬
‫}‬
‫ﻗﺒل ﻋﺭﺽ ﺍﻟﻨﺘﺎﺌﺞ ﺘﻌﺎﻟﻰ ﻨﺴﺘﻨﺘﺠﻬﺎ ﺍﻭﻻ‬
‫ﻫﻨﺎ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ ﺒﻌﺩ ‪ while‬ﻏﻴﺭ ﻤﺘﺤﻘﻘﺔ ﺍﺫﺍ ﺍﻟﻤﻔﺭﻭﺽ ﻋﺩﻡ ﺘﻨﻔﻴﺫ ﺍﻟﺨﻁﻭﺍﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ‬
‫ﺩﺍﺨل ﻗﻭﺴﻰ ﺍﻟﻤﺠﻤﻭﻋﺔ ﺘﻌﺎﻟﻰ ﻨﺭﻯ ﺍﻟﻨﺘﺎﺌﺞ‬

‫ﻭﻟﻜﻥ ﻤﺎﺤﺩﺙ ﻏﻴﺭ ﺍﻟﻤﺘﻭﻗﻊ ﻟﻘﺩ ﻨﻔﺫ ﺍﻟﻌﺒﺎﺭﻩ ﻤﺭﻩ ﻭﺍﺤﺩﺓ ﻨﻌﻡ ﻫﺫﺍ ﺼﺤﻴﺢ ﺤﺴﺏ ﺍﻟﺸﺭﺡ ﻓﺎﻥ ﻋﺒﺎﺭﺓ‬
‫ﺍﻋﻤل ﺒﻴﻨﻤﺎ ﻴﻨﻔﺫ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻭﻻ ﺜﻡ ﻴﺨﺘﺒﺭ ﺍﻟﺸﺭﻁ ‪.‬‬
‫ﻴﻌﻨﻰ ﺒﺎﺨﺘﺼﺎﺭ ﺍﻟﻔﺭﻕ ﺒﻴﻥ ‪ while,do-while‬ﺍﻨﻪ ﻓﻰ ‪ while‬ﺍﺫﺍ ﻜﺎﻥ ﺍﻟﺸﺭﻁ ﻏﻴﺭ ﻤﺘﺤﻘﻕ ﻻ‬
‫ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺍﻟﻌﺒﺎﺭﺕ ﻨﻬﺎﺌﻴﺎ ﺍﻤﺎ ‪ do-while‬ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺍﻟﻌﺒﺎﺭﺕ ﻋﻠﻰ ﺍﻻﻗل ﻤﺭﺓ ﻭﺍﺤﺩﺓ‪.‬‬

‫ﺍﻟﺩﺭﺱ ﺍﻟﺜﺎﻟﺙ ﻭﺍﻟﺜﻼﺜﻭﻥ ‪:‬‬


‫ﻋﺒﺎﺭﺓ ﻻﺠل ‪for statement‬‬
‫ﻫﻰ ﺍﺤﺩﻯ ﻋﺒﺎﺭﺍﺕ ﺍﻟﺘﺤﻜﻡ ﻭﺭﺒﻤﺎ ﺘﻜﻭﻥ ﺍﻜﺜﺭﻫﺎ ﺍﺴﺘﺨﺩﺍﻤﺎ ﻭﻫﻰ ﺘﺴﺘﺨﺩﻡ ﻻﺩﺍﺀ ﻋﻤﻠﻴﺔ ﻤﺎ ﻋﺩﺓ‬
‫ﻤﺭﺍﺕ ﻤﺘﺘﺎﺒﻌﺔ ﻭﻴﻌﺘﻤﺩ ﺘﻨﻔﻴﺫ ﺤﻠﻘﺔ ﺍﻟﺘﻜﺭﺍﺭ ﻋﻠﻰ ﻋﺩﺍﺩ ﻴﻀﺒﻁ ﻋﻠﻰ ﻗﻴﻤﺔ ﺍﺒﺘﺩﺍﺌﻴﺔ ﻤﻌﻴﻨﺔ ﻭﺘﺯﺩﺍﺩ‬
‫ﻗﻴﻤﺘﻪ ﺒﺨﻁﻭﺓ ﻤﻌﻠﻭﻤﺔ ﺒﻌﺩ ﻜل ﺘﻜﺭﺍﺭ ﺤﺘﻰ ﺘﺼل ﺍﻟﻰ ﺍﻟﻘﻴﻤﺔ ﺍﻟﻨﻬﺎﺌﻴﺔ ‪.‬‬
‫ﻭﺘﻜﻭﻥ ﺼﻴﻐﺘﻬﻰﺍﻟﻌﺎﻤﺔ‬
‫)‪for(ex1;ex2;ex3‬‬
‫{‬
‫ﺍﻟﻌﺒﺎﺭﺍﺕ‬
‫}‬
‫‪ ex1‬ﺍﻟﺘﻌﺒﻴﺭ ﺍﻟﺫﻯ ﻴﺤﺩﺩ ﺍﻟﻘﻴﻤﺔ ﺍﻻﺒﺘﺩﺍﺌﻴﺔ ﻟﻤﺘﻐﻴﺭ ﻴﻜﻭﻥ ﺒﻤﺜﺎﺒﺔ ﻋﺩﺍﺩ ﻴﺘﺤﻜﻡ ﻓﻰ ﺍﺠﺭﺍﺀ ﺍﻟﺩﻭﺭﺓ‬
‫ﻭﻋﺎﺩﺓ ﻤﺎ ﻴﻜﻭﻥ ﻫﺫﺍ ﻫﻭ ﺘﻌﺒﻴﺭ ﺍﻟﺘﺤﺩﻴﺩ ﺍﻟﺫﻯ ﻴﺤﺩﺩ ﺒﺩﺍﻴﺔ ﺍﻟﻌﺩﺍﺩ‬
‫‪ ex2‬ﻴﻤﺜل ﺍﻟﺸﺭﻁ ﺍﻟﺫﻯ ﻴﺤﺩﺩ ﺍﺴﺘﻤﺭﺍﺭ ﺍﻟﺩﻭﺭﺓ ﻤﻥ ﻋﺩﻤﻪ ﻭﺫﻟﻙ ﺘﺒﻌﺎ ﻟﻨﺘﻴﺠﺔ ﺍﺨﺘﺒﺎﺭ ﺍﻟﺸﺭﻁ ﺒﻤﻌﻨﻰ‬
‫ﺍﻥ ﻫﺫﺍ ﺍﻟﺘﻌﺒﻴﺭ ﻫﻭ ﺍﻟﺫﻯ ﻴﺤﺩﺩ ﻨﻬﺎﻴﺔ ﺍﻟﻌﺩﺍﺩ ﻭﻋﺎﺩﺓ ﻤﺎ ﻴﻜﻭﻥ ﺘﻌﺒﻴﺭﺍ ﻤﻨﻁﻘﻴﺎ‬
‫‪ ex3‬ﻫﻭ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻟﺫﻯ ﻴﺤﺩﺩ ﺍﻟﺯﻴﺎﺩﺓ ﺍﻭ ﺍﻟﻨﻘﺼﺎﻥ ﻓﻰ ﺩﻟﻴل ﺍﻟﺩﻭﺭﺓ ﻭﺫﻟﻙ ﻓﻰ ﻨﻬﺎﻴﺔ ﻜل ﺘﻜﺭﺍﺭ‬
‫ﻭﻋﺎﺩﺓ ﻤﺎ ﻴﻜﻭﻥ ﺘﻌﺒﻴﺭﺍ ﺍﺤﺎﺩﻴﺎ ﺍﻭ ﺘﻌﺒﻴﺭ ﺘﺤﺩﻴﺩ ‪.‬‬
‫ﻭﻨﺠﺩ ﺍﻥ ‪ for‬ﻻﺘﺨﺘﻠﻑ ﻜﺜﻴﺭﺍ ﻋﻥ ‪ while‬ﻓﺎﻨﻅﺭ ﺍﻟﻰ ﻋﺒﺎﺭﺓ ‪while‬‬
‫; ‪ex1‬‬
‫)‪while(ex2‬‬
‫{‬
‫ﺍﻟﻌﺒﺎﺭﺍﺕ‬
‫;‪ex3‬‬
‫}‬
‫ﺘﻌﺎﻟﻰ ﺍﻻﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻨﻭﻀﺢ ﺸﺭﺤﻨﺎ ﺒﻤﺜﺎل ﻋﻤﻠﻰ ﻴﻘﻭﻡ ﺒﻁﺒﺎﻋﺔ ﺒﺎﺴﺘﺨﺩﺍﻡ ﺭﻗﻡ ﺍﻟﻌﺩﺍﺩ ﻓﻰ‬
‫‪ for‬ﻻﻴﺠﺎﺩ ﺤﺎﺼل ﻀﺭﺒﻪ ﻓﻰ ‪10,100,1000‬‬

‫‪class ForSt‬‬
‫{‬
‫)‪public static void main(String []arg‬‬
‫{‬

‫;‪int i‬‬
‫)‪for(i=0;i<=10;++i‬‬
‫{‬

‫;))‪System.out.println(i+"\t"+(i*10)+"\t"+(i*100)+"\t"+(i*1000‬‬
‫}‬

‫}‬
‫}‬
‫ﻗﻤﻨﺎ ﻫﻨﺎ ﺍﻭﻻ ﺒﺎﻻﻋﻼﻥ ﻋﻥ ﺍﻟﻤﺘﻐﻴﺭ ‪ i‬ﻭﺒﻌﺩ ﺫﻟﻙ ﺠﺎﺀﺕ ﺠﻤﻠﺔ ‪ for‬ﻭﺍﻟﺘﻰ ﻓﻴﻬﺎ ﺴﺘﻜﻭﻥ ﺍﻟﻘﻴﻤﺔ‬
‫ﺍﻻﺒﺘﺩﺍﺌﻴﺔ ﻟﻠﻤﺘﻐﻴﺭ ‪ i‬ﺼﻔﺭ ﺒﻌﺩ ﺫﻟﻙ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ ‪ i<=10‬ﻭﻫﻰ ﺘﺨﺘﺒﺭ ﻗﻴﻤﺔ ‪ i‬ﻓﺎﺫﺍ ﻜﺎﻨﺕ ﺍﻗل‬
‫ﻤﻥ ‪ 10‬ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﻋﺒﺎﺭﺍﺕ ‪ for‬ﻭﺍﺨﻴﺭﺍ ﻤﻘﺩﺍﺭ ﺍﻟﺯﻴﺎﺩﺓ ﺍﻟﺤﺎﺼل ﻟﻠﻤﺘﻐﻴﺭ ‪ i‬ﻭﻫﻭ ﺯﻴﺎﺩﺓ ﺒﻤﻘﺩﺍﺭ ﻭﺍﺤﺩ‬
‫ﻭﻫﻨﺎ ﻓﻰ ﺤﺎﻟﺔ ﻤﺎ ﺍﺫﺍ ﻜﺎﻥ ﺍﻟﺸﺭﻁ ﺼﺤﻴﺢ ﻴﺘﻡ ﻀﺭﺏ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ ‪ i‬ﻓﻰ ‪10‬ﻭ‪100‬ﻭ‪1000‬‬
‫ﻭﻁﺒﺎﻋﺔ ﺍﻟﻨﺎﺘﺞ ﻭﺘﻜﻭﻥ ﺍﻟﻤﺨﺭﺠﺎﺕ ﻋﻠﻰ ﻫﺫﺍ ﺍﻟﺸﻜل‬

You might also like