Professional Documents
Culture Documents
ﻤﻘﺩﻤﺔ
Javaﺍﻟﺠﺎﻓﺎ ﻫﻰ ﺍﺤﺩﻯ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﺍﻟﺘﻰ ﺍﺼﺒﺤﺕ ﺸﺎﺌﻌﺔ ﺍﻻﺴﺘﺨﺩﺍﻡ ﻓﻰ ﺍﻵﻭﻨﺔ ﺍﻻﺨﻴﺭﺓ ﻭﺫﻟﻙ
ﻟﻤﻴﺯﺍﺘﻬﺎ ﺍﻟﻌﺩﻴﺩﺓ ﻭﻫﻰ ﻤﻥ ﺘﻁﻭﻴﺭ ﺸﺭﻜﺔ ﺴﻥ ﻤﺎﻴﻜﺭﻭﺴﻴﺴﺘﻡ . Sun Microsystems
ﻭﻟﻜﻥ ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﻗﺒل ﺍﻥ ﻨﺒﺩﺃ ﻓﻰ ﺍﻟﺘﺤﺩﺙ ﻋﻥ ﺍﻟﺠﺎﻓﺎ ﺘﻌﺎﻟﻰ ﺍﻭﻻ ﻨﻘﻭﻡ ﺒﺘﻘﺴﻴﻡ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ.
ﺘﻨﻘﺴﻡ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﺍﻟﻰ ﺜﻼﺙ ﻤﺴﺘﻭﻴﺎﺕ:
ﺍﻻﻭل Simple Language :
ﻭﻫﻰ ﺍﺒﺴﻁ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ ﻭﻻﺘﺤﺘﺎﺝ ﺍﻟﻰ ﻤﺘﺭﺠﻡ ﺍﻟﺫﻯ ﺴﻴﻘﻭﻡ ﺒﺘﺤﻭﻴل ﺍﻟﺒﺭﻨﺎﻤﺞ ﺍﻟﻰ ﻤﺎ
ﻴﺴﻤﻰ ﻟﻐﺔ ﺍﻻﻟﻪ ﻭﻫﻭ ﻤﺎ ﻴﻔﻬﻤﺔ ﺍﻟﻜﻤﺒﻴﻭﺘﺭ ﻭﻫﻰ ﺘﻜﻭﻥ ﻟﻐﺔ ﺒﺴﻴﻁﺔ ﻓﻰ ﺍﻭﺍﻤﺭﻫﺎ ﻓﻰ ﺘﻌﻠﻤﻬﺎ ﻭﻤﻥ
ﺍﻤﺜﻠﺘﻬﺎ ).(HTML
ﺍﻟﺜﺎﻨﻰ Base Programming Language :
ﻭﻫﻰ ﺍﻟﻠﻐﺎﺕ ﺍﻟﺘﻰ ﺘﻌﺘﻤﺩ ﻓﻰ ﺍﻭﺍﻤﺭﻫﺎ ﻋﻠﻰ ﻟﻐﺎﺕ ﺍﺨﺭﻯ ﺍﺴﺎﺴﻴﺔ ﻭﻤﻥ ﺍﻤﺜﻠﺘﻬﺎ )ASP
ﻭﻫﻰ ﺘﻌﺘﻤﺩ ﻋﻠﻰ ﻓﺠﻭل ﺒﻴﺴﻙ ﻭ ﻓﻰ ﺒﻰ ﺴﻜﺭﻴﺒﺕ ( ) JSPﻭﻫﻰ ﺘﻌﺘﻤﺩ ﻋﻠﻰ ﺍﻟﺠﺎﻓﺎ(.
ﺍﻟﺜﺎﻟﺙ Full Programming Language :
ﻭﻫﺫﻩ ﻫﻰ ﺍﻟﻠﻐﺎﺕ ﺍﻻﺴﺎﺴﻴﺔ ﻭﻤﻥ ﺍﻤﺜﻠﺘﻬﺎ ) (c++ ,VB,Javaﺴﻰ ++ﻭ ﻓﺠﻭل ﺒﻴﺴﻙ ﻭ
ﺍﻟﺠﺎﻓﺎ.
Programming Langue
ﺍﺫﻥ ﺴﻨﻘﻭﻡ ﻫﻨﺎ ﺒﺸﺭﺡ ﻟﻐﻪ ﺍﺴﺎﺴﻴﺔ ﻭﻫﻰ ﻤﻥ ﺍﻫﻡ ﻟﻐﺎﺕ ﺍﻟﺒﺭﻤﺠﺔ .
ﺍﻤﺎ ﻓﻰ ﺍﻟﺠﺎﻓﺎ ﻓﻴﺘﺤﻭل ﺍﻟﺒﺭﻨﺎﻤﺞ )ﻜﻭﺩ( ﺍﻟﻰ ﻤﻠﻑ ﻻﻴﻤﻜﻥ ﻗﺭﺍﺀﺘﻪ ﻴﺴﻤﻰ ﻤﻠﻑ 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ﺒﻌﺩ
ﺘﺤﻤﻴﻠﻪ ﻤﻥ ﺍﻟﻤﻭﻗﻊ ﺍﻟﺫﻯ ﺫﻜﺭﻨﺎﻩ ﻜﻤﺜﺎل ﺴﻴﻜﻭﻥ ﻤﺜﺎﻟﻨﺎ ﺨﻼل ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻭﻴﻨﺩﻭﺯ
-5ﺘﻅﻬﺭ ﺍﻟﻨﺎﻓﺫﻩ ﺍﻟﺘﺎﻟﻴﺔ ﻭﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﺍﺘﻔﺎﻗﻴﺔ ﺒﻴﻨﻙ ﻭﺒﻴﻥ ﺸﺭﻜﺔ ﺴﻥ ﻤﻴﻜﺭﻭﺴﻴﺴﺘﻴﻡ
ﺍﻀﻐﻁ Yesﻟﻜﻰ ﺘﺴﺘﻁﻴﻊ ﺍﻻﺴﺘﻤﺭﺍﺭ
-6ﺘﻅﻬﺭ ﻨﺎﻓﺫﺓ ﺘﺨﺒﺭﻙ ﺒﺎﺴﻡ ﺍﻟﻤﺠﻠﺩ ﺍﻟﺫﻯ ﺴﻴﺘﻡ ﺘﺠﻤﻴل ﺍﻟﻤﻠﻔﺎﺕ ﺒﻪ ﻭﻤﻜﺎﻥ ﻫﺫﺍ ﺍﻟﻤﺠﻠﺩ
ﻓﺎﺫﺍ ﺍﺭﺩﺕ ﺘﻐﻴﺭ ﺍﺴﻡ ﺍﻟﻤﺠﻠﺩ ﺍﻭ ﻤﻜﺎﻨﻪ ﺍﻀﻐﻁ Browseﻭﻟﻜﻥ ﻴﻔﻀل ﺍﻥ ﺘﺩﻋﻪ ﻜﻤﺎ ﻫﻭ ﻭﺍﻀﻐﻁ
Next
-7ﺘﻅﻬﺭ ﻨﺎﻓﺫﻩ ﺘﺨﺒﺭﻙ ﺒﺎﻟﻤﻠﻔﺎﺕ ﻭﺍﻟﻤﺠﻤﻭﻋﺎﺕ ﺍﻟﺘﻰ ﺴﻴﺘﻡ ﺍﻨﺯﺍﻟﻬﺎ ﻋﻠﻰ ﺍﻟﺠﻬﺎﺯ ﺍﻀﻐﻁ Next
ﻟﻼﺴﺘﻤﺭﺍﺭ
-8ﺴﺘﻅﻬﺭ ﺍﻟﻨﺎﻓﺫﻩ ﺍﻟﺘﺎﻟﻴﺔ ﺍﻟﺘﻰ ﺘﻭﻀﺢ ﻋﻤﻠﻴﺔ ﺍﻨﺯﺍل ﺍﻟﻤﻠﻔﺎﺕ ﺍﻨﺘﻅﺭ ﺤﺘﻰ ﺘﺼل ﺍﻟﻌﻤﻠﻴﺔ ﺍﻟﻰ
%100
-9ﺘﻅﻬﺭ ﻨﺎﻓﺫﻩ ﺘﺨﺒﺭﻙ ﺍﻥ ﺘﻨﺘﻅﺭ ﻗﻠﻴﻼ ﺤﺘﻰ ﻴﺘﻡ ﺍﻻﻨﺘﻬﺎﺀ ﻤﻥ ﻋﻤﻠﻴﺔ ﺍﻻﻋﺩﺍﺩ
ﻭﻟﻐﺔ ﺍﻟﺠﺎﻓﺎ ﺘﺘﻜﻭﻥ ﻤﻥ ﻤﺠﻤﻭﻋﺔ ﻤﻥ ﺍﻟﺤﺯﻡ ) (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
-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
ﺍﻟﺩﺭﺱ ﺍﻟﺘﺎﺴﻊ:
ﺍﻟﺘﻌﻠﻴﻘﺎﺕ
ﺍﻟﺘﻌﻠﻴﻘﺎﺕ ) (commentsﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﺒﻌﺽ ﺍﻻﻭﺍﻤﺭ ﺍﻻﻴﻀﺎﺤﻴﺔ ﻭﻻ ﻴﻜﻭﻥ ﻟﻬﺎ ﺍﻯ ﺘﺄﺜﻴﺭ ﻻﻨﻬﺎ
ﻻﺘﻌﺘﺒﺭ ﺠﺯﺀ ﻤﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ .
ﻭﺘﻭﻀﻊ ﺍﻟﺘﻌﻠﻴﻘﺎﺕ ﻓﻰ ﺍﻯ ﻤﻜﺎﻥ ﺩﺍﺨل ﺍﻟﺒﺭﻨﺎﻤﺞ ﻭﻤﻤﻜﻥ ﺍﻥ ﻴﺨﻠﻭ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻤﻨﻬﺎ ﻭﻴﺒﺩﺍ ﺍﻟﺘﻌﻠﻴﻕ ﺍﻥ
ﻭﺠﺩ ﺒﺎﻟﻌﻼﻤﺔ * /ﻭﻴﻨﺘﻬﻰ ﺒﺎﻟﻌﻼﻤﺔ ﺍﻟﺭﻤﺯﻴﺔ */ﻭﻫﺫﺍ ﻴﻌﻨﻰ ﺍﻥ ﻤﺎ ﻴﻘﻊ ﻤﻥ ﺴﻁﻭﺭ ﺒﻴﻥ ﺍﻟﻌﻼﻤﺘﻴﻥ
ﺍﻨﻤﺎ ﻫﻭ ﻤﺨﺼﺹ ﻟﻠﻤﻼﺤﻅﺎﺕ ﻭﻫﺫﺍ ﺸﺄﻨﻪ ﺍﻥ ﻴﻔﻴﺩ ﻓﻰ ﺘﻌﺭﻴﻑ ﺍﻟﺴﻤﺎﺕ ﺍﻻﺴﺎﺴﻴﺔ ﻟﻠﺒﺭﻨﺎﻤﺞ ﺍﻭﻓﻰ
ﺘﻭﻀﻴﺢ ﺍﻟﻤﻨﻁﻕ ﺍﻟﻤﺸﻤﻭل ﻓﻰ ﺍﻟﺴﻤﺎﺕ ﺍﻟﻤﺨﺘﻠﻔﺔ ﻟﻠﺒﺭﻨﺎﻤﺞ ﻜﻤﺎ ﻴﻔﻴﺩ ﻓﻰ ﺍﻋﺎﺩﺓ ﻗﺭﺍﺀﺓ ﺍﻟﺒﺭﻨﺎﻤﺞ
ﻭﺘﻌﺩﻴﻠﻪ .
ﻭﻟﻠﻤﺒﺭﻤﺞ ﺍﻥ ﻴﻜﺘﺏ ﻤﺎ ﻴﺸﺎﺀ ﻤﻥ ﻤﻼﺤﻅﺎﺕ ﺒﻴﻥ ﺍﻟﻌﻼﻤﺘﻴﻥ ﻗﺩ ﺘﺫﻜﺭﻩ ﺒﻤﻀﻤﻭﻥ ﺍﻟﺒﺭﻨﺎﻤﺞ
ﻭﺍﻟﻐﺭﺽ ﻤﻨﻪ ﺍﻭ ﺒﻌﺽ ﺍﻟﺨﻁﻭﺍﺕ ﻜﻤﺎ ﺘﻔﻴﺩ ﺍﻴﻀﺎ ﻓﻰ ﺍﻟﺸﺭﺡ .
ﻭﻗﺩ ﻴﺤﺘﻭﻯ ﺍﻟﺒﺭﻨﺎﻤﺞ ﻋﻠﻰ ﺍﻯ ﻋﺩﺩ ﻤﻥ ﺴﻁﻭﺭ ﺍﻟﻤﻼﺤﻅﺎﺕ ﻓﻬﻰ ﻻ ﺘﻬﻡ ﺍﻟﻤﺘﺭﺠﻡ .
ﻭﺍﺫﺍ ﻜﺎﻥ ﺍﻟﺘﻌﻠﻴﻕ ﺴﻁﺭ ﻭﺍﺤﺩ ﻓﻘﻁ ﻴﻤﻜﻥ ﺍﻥ ﺘﻜﻭﻥ ﻋﻼﻤﺔ ﺍﻟﺘﻌﻠﻴﻕ ﻫﻰ . //
: --ﻴﺴﻤﻰ ﻫﺫﺍ ﺍﻟﻤﺅﺜﺭ ﻤﺅﺜﺭ ﺍﻟﻨﻘﺼﺎﻥ decrement operatorﻭﻴﺴﺘﺨﺩﺍﻡ ﻻﻨﻘﺎﺹ ﻗﻴﻤﺔ ﺍﻟﻤﺘﻐﻴﺭ
ﺒﻭﺍﺤﺩ a=a-1ﻨﺎﺘﺞ ﻫﺫﻩ ﺍﻟﻌﻤﻠﻴﺔ ﻫﻭ ﻨﻔﺴﻪ ﻨﺎﺘﺞ a--ﻴﻌﻨﻰ ﺍﺫﺍ ﻜﺎﻨﺕ a=5ﺍﺫﻥ a--ﺘﺠﻌل a=4
ﻭﻴﻤﻜﻥ ﻭﻀﻊ ﺍﻟﻤﻭﺜﺭ ﻗﺒل ﺍﻟﻌﺎﻤل ﺍﻭ ﺒﻌﺩﻩ ﻭﻟﻜﻥ ﺒﺎﻟﺘﺎﻜﻴﺩ ﻫﻨﺎﻙ ﻓﺭﻕ ﺒﻴﻨﻬﻡ ﻭﺘﻡ ﺸﺭﺡ ﺍﻟﻔﺭﻕ ﻤﻥ
ﻗﺒل ﻓﻰ ﺍﻟﻤﺅﺜﺭ ﺍﻟﺴﺎﺒﻕ
ﺍﻨﺘﻅﺭ ﻋﺯﻴﺯﺉ ﺍﻟﻘﺎﺭﺉ ﻓﻬﺫﻩ ﻟﻴﺴﺕ ﻜل ﺍﻟﻤﺅﺜﺭﺍﺕ ﺍﻟﻌﻼﻗﻴﺔ ﻭﻟﻜﻥ ﻫﻨﺎﻙ ﺍﻴﻀﺎ
=! ﻭﻫﻰ ﺘﺴﺄل ﻋﻥ ﻋﺩﻡ ﺍﻟﺘﺴﺎﻭﻯ ﻓﻔﻰ ﺍﻟﻤﺜﺎل ﺍﻟﺴﺎﺒﻕ a!=bﻴﻜﻭﻥ ﺍﻟﻨﺎﺘﺞ ﻫﻭ trueﻻﻥ a
ﻻﺘﺴﺎﻭﻯ b
ﺍﻤﺎ ﺍﻟﺘﺴﺎﻭﻯ ﻓﺎﻟﻤﺅﺜﺭ ﺍﻟﺨﺎﺹ ﺒﻬﺎ ﻫﻭ == ﻻﺤﻅ ﻋﺯﻴﺯﺉ ﺍﻟﻘﺎﺭﺉ ﺍﻟﻔﺭﻕ ﺒﻴﻥ = ﻭ == ﻓﻴﺴﺎﻭﻯ
ﺍﻟﻭﺍﺤﺩ ﺘﺴﺘﺨﺩﻡ ﻓﻰ ﺍﻟﺘﺨﺼﻴﺹ ﺍﻯ ﻭﻀﻊ ﻗﻴﻤﺔ ﻟﻤﺘﻐﻴﺭ ﻭﻟﻜﻥ ﻴﺴﺎﻭﻯﻴﺴﺎﻭﻯ ﻫﻰ ﻴﻤﻜﻥ ﺍﻋﺘﺒﺎﺭﻫﺎ
ﺴﺅﺍل ﻫل ﺍﻟﻤﺘﻐﻴﺭ ﺍﻻﻭل ﻴﺴﺎﻭﻯ ﺍﻟﻤﺘﻐﻴﺭ ﺍﻟﺜﺎﻨﻰ ﺘﻌﺎﻟﻰ ﻤﻌﻰ ﻓﻰ ﻫﺫﺍ ﺍﻟﻤﺜﺎل ﻨﻭﻀﺢ ﺍﻟﻔﺭﻕ
a=5 , b=6ﻓﺎﺫﺍ ﻗﻠﺕ ﺍﻥ z=aﻓﻰ ﻫﺫﻩ ﺍﻟﺤﺎﻟﺔ ﻓﺎﻥ zﺍﺼﺒﺤﺕ ﺘﺴﺎﻭﻯ 5ﺍﻤﺎ ﺍﺫﺍ ﻗﻠﻨﺎ ﺍﻥ
a = = bﻓﺎﻥ ﺍﻟﻨﺎﺘﺞ falseﺤﻴﺙ ﺍﻥ ﺍﻟﻘﻴﻤﺘﻴﻥ ﻤﺨﺘﻠﻔﺘﻴﻥ .
ﻓﺎﺤﺘﺭﺱ ﻋﺯﻴﺯﺉ ﺍﻟﻘﺎﺭﺉ ﻋﻨﺩ ﺍﺴﺘﺨﺩﺍﻤﻙ ﻫﺫﻩ ﺍﻟﻌﻼﻗﺎﺕ.
|| : orﻭﻫﻰ ﻋﺒﺎﺭﺓ ﻋﻥ ﻤﺅﺜﺭ ﺜﻨﺎﺌﻰ ﻴﻜﻭﻥ ﻨﺎﺘﺞ ﺍﻟﺘﻌﺒﻴﺭ trueﺍﺫﺍ ﻜﺎﻥ ﺍﺤﺩ ﺍﻟﻌﻨﺼﺭﻴﻥ ﻋﻠﻰ
ﺍﻻﻗل ﺼﺤﻴﺤﺎ ﺍﻯ ﻴﻜﻭﻥ ﺍﻟﻨﺎﺘﺞ ﺨﻁﺄ ﻓﻰ ﺤﺎﻟﺔ ﺍﻥ ﺍﻟﻌﻨﺼﺭﻴﻥ ﺨﻁﺄ ﻓﻘﻁ ﻭﻴﻤﻜﻥ ﺍﻥ ﻴﻜﻭﻥ ﻋﻠﻰ ﻫﺫﺍ
ﺍﻟﺸﻜل | ) ﺘﻜﺘﺏ ﻫﺫﻩ ﺍﻻﺸﺎﺭﺓ ﺒﺎﻟﻀﻐﻁ ﻋﻠﻰ ﻤﻔﺘﺎﺤﻰ \ shit +ﻓﻰ ﻟﻭﺤﺔ ﺍﻟﻤﻔﺎﺘﻴﺢ (
ﻭﻴﻤﻜﻥ ﺘﻠﺨﻴﺹ ﺍﻟﺸﺭﺡ ﻓﻰ ﺍﻟﺠﺩﻭل ﺍﻻﺘﻰ:
ﺍﻟﻨﺘﻴﺠﻪ ﺍﻟﻨﻬﺎﺌﻴﺔ ﻨﺎﺘﺞ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻟﺜﺎﻨﻰ ﺍﻟﻤﺅﺜﺭ ﻨﺎﺘﺞ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻻﻭل
ﺼﺢ ) ( true ﺼﺤﻴﺢ) ( true || ﺼﺤﻴﺢ) ( true
ﺼﺢ ) ( true ﺼﺤﻴﺢ) ( true || ﺨﻁﺄ ) ( false
ﺼﺢ ) ( true ﺨﻁﺄ ) ( false || ﺼﺤﻴﺢ ) ( true
ﺨﻁﺄ ) ( false ﺨﻁﺄ ) ( false || ﺨﻁﺄ ) ( false
! : notﻫﺫﺍ ﺍﻟﻤﺅﺜﺭ ﺍﺤﺎﺩﻯ ﺍﻯ ﻴﻨﻔﻰ ﻗﻴﻤﺔ ﺍﻟﺘﻌﺒﻴﺭ ﺍﻟﻤﻨﻁﻘﻰ ﺒﺎﺨﺘﺼﺎﺭ ﺍﺫﺍ ﻜﺎﻥ ﺍﻟﺘﻌﺒﻴﺭ ﺼﺤﻴﺤﺎ
ﻴﺠﻌﻠﻪ ﺨﻁﺄ ﻭﺍﺫﺍ ﻜﺎﻥ ﺨﻁﺄ ﻴﻜﻭﻥ ﺼﺤﻴﺤﺎ
-1ﺍﻀﻐﻁ start
-2ﺍﺨﺘﺭ programs
ﺍﻤﺎ ﺍﺫﺍ ﻜﺎﻥ ﻨﻅﺎﻡ ﺍﻟﺘﺸﻐﻴل ﻭﻴﻨﺩﻭﺯ ﺍﻜﺱ ﺒﻰ ﺍﻭ 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ﻓﻠﻤﺎﺫﺍ
ﻓﻀﻠﺕ ﻫﺫﺍ ﺍﻟﻨﻭﻉ ﻋﻥ ﺒﺎﻗﻰ ﺍﻻﻨﻭﺍﻉ ؟ ﻻﻥ ﻫﺫﺍ ﺍﻟﻤﺘﻐﻴﺭ ﻴﺸﻴﺭ ﺍﻟﻰ ﻗﻴﻤﺔ ﺼﻐﻴﺭﺓ ﻓﻼ ﺩﺍﻋﻰ
ﻟﺘﻌﺭﻴﻑ ﻨﻭﻉ ﻴﺴﺘﻐل ﻤﺴﺎﺤﺔ ﻜﺒﻴﺭﺓ ﻓﻰ ﺍﻟﺫﺍﻜﺭﺓ .
class DataType
{
)public static void main(String []arg
{
;byte b=5
;)System.out.println("byte b ="+b
}
}
ﺘﻌﺎﻟﻰ ﻋﺯﻴﺯﺉ ﺍﻟﻘﺎﺭﺉ ﻨﻘﻭﻡ ﻤﻌﺎ ﺒﻌﻤل ﻫﺫﺍ ﺍﻟﺒﺭﻨﺎﻤﺞ ﺒﺤﻴﺙ ﻴﺘﻡ ﻁﺒﺎﻋﺔ ﻓﻰ ﺍﻟﺴﻁﺭ ﺍﻟﻭﺍﺤﺩ
ﻤﺘﻐﻴﺭﺍﻥ ﺒﻴﻨﻬﻡ ﻤﺴﺎﻓﺔ .
ﻜﻤﺎ ﺸﺭﺤﻨﺎ ﺴﻴﻜﻭﻥ ﺸﻜل ﺍﻟﺒﺭﻨﺎﻤﺞ ﻫﻜﺫﺍ
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
}
}
ﻟﻜﻥ ﻫﻨﺎﻙ ﺘﻜﺭﺍﺭ ﻟﻌﺒﺎﺭﺓ ﺍﻟﻁﺒﺎﻋﺔ ﻭﻴﻤﻜﻥ ﺍﻥ ﺘﻜﻭﻥ ﺍﻟﻤﺴﺎﻓﺎﺕ ﻏﻴﺭ ﻤﺘﺴﺎﻭﻴﺔ ﻓﺘﻌﺎﻟﻰ ﻨﺴﺘﺨﺩﻡ
ﻤﺘﺴﻠﺴﻼﺕ ﺍﻟﻬﺭﻭﺏ ﻓﻴﻜﻭﻥ ﺸﻜل ﺍﻟﺒﺭﻨﺎﻤﺞ.
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ﻻﻴﺘﻡ ﻭﻀﻊ ﺍﻯ ﺤﺭﻭﻑ ﺒﻌﺩ ﺍﻟﻘﻴﻤﺔ
ﺍﻻﻥ ﺒﺎﻟﺘﺄﻜﻴﺩ ﺘﻌﺭﻑ ﺍﻫﻤﻴﺔ ﺍﺴﺘﺨﺩﺍﻡ ﻤﺘﺴﻠﺴﻼﺕ ﺍﻟﻬﺭﻭﺏ ﺍﻜﺘﺏ ﺒﺭﻨﺎﻤﺞ ﻭﺍﺴﺘﺨﺩﻡ ﻓﻴﺔ ﺍﻟﻤﺘﺴﻠﺴﻼﺕ
ﺍﻻﺨﺭﻯ ﻟﻤﻌﺭﻓﺔ ﺍﻫﻤﻴﺘﻬﺎ .
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
{
ﻗﻤﻨﺎ ﺒﻭﻀﻊ ﺠﻤﻠﺔ ﻭﺍﺤﺩﺓ ﻟﻠﻁﺒﺎﻋﺔ ﻟﻠﻤﻘﺎﺭﻨﻬﺎ ﺒﻴﻨﻬﺎ ﻭﺒﻴﻥ ﺍﺴﺘﺨﺩﺍﻡ ﺨﻤﺱ ﺠﻤل ﻭﻤﺘﺭﻭﻙ ﻟﻙ
ﻋﺯﻴﺯﻯ ﺍﻟﻘﺎﺭﺉ ﺤﺭﻴﺔ ﺍﻻﺨﺘﻴﺎﺭ ﻓﻰ ﺍﻯ ﻤﻨﻬﻡ ﺘﺴﺘﺨﺩﻡ ﻭﻟﻜﻥ ﺍﻟﻬﺩﻑ ﺍﻥ ﺘﺴﺘﻭﻋﺏ ﺍﻟﻔﻜﺭﺓ .
ﻨﻼﺤﻅ ﻓﻰ ﺍﻟﻨﻭﺍﺘﺞ ﺍﻥ ﺠﻤﻴﻌﻬﺎ ﻓﻰ ﺼﻭﺭﺓ ﺭﻗﻡ ﻋﺸﺭﻯ ﻭﺫﻟﻙ ﺤﺴﺏ ﺘﻌﺭﻴﻔﻨﺎ ﻟﻨﻭﺍﻉ ﻫﺫﻩ
ﺍﻟﻤﺘﻐﻴﺭﺍﺕ ﺍﻴﻀﺎ ﻨﻼﺤﻅ ﺍﻥ ﻨﺎﺘﺞ ﺒﺎﻗﻰ ﺍﻟﻘﺴﻤﺔ ﺼﻔﺭ ﻭﺫﻟﻙ ﻻﻨﻪ ﻻﻴﻭﺠﺩ ﺒﺎﻗﻰ ﻤﻥ ﻗﺴﻤﺔ ﺍﻟﺭﻗﻤﻴﻥ
ﻭﺍﻨﺘﺒﻪ ﺤﺘﻰ ﺍﻟﺼﻔﺭ ﻜﺘﺏ ﻓﻰ ﺼﻭﺭﺓ ﺭﻗﻡ ﻋﺸﺭﻯ.
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
}
}
;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ﻻﻥ ﺍﻭل ﻋﺎﻤل ﺼﺤﻴﺢ
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
}
}
}
;int i=0
do
{
;)"System.out.println("HI
;++i
}
;)while(i>7
}
}
ﻗﺒل ﻋﺭﺽ ﺍﻟﻨﺘﺎﺌﺞ ﺘﻌﺎﻟﻰ ﻨﺴﺘﻨﺘﺠﻬﺎ ﺍﻭﻻ
ﻫﻨﺎ ﺍﻟﺠﻤﻠﺔ ﺍﻟﺸﺭﻁﻴﺔ ﺒﻌﺩ whileﻏﻴﺭ ﻤﺘﺤﻘﻘﺔ ﺍﺫﺍ ﺍﻟﻤﻔﺭﻭﺽ ﻋﺩﻡ ﺘﻨﻔﻴﺫ ﺍﻟﺨﻁﻭﺍﺕ ﺍﻟﻤﻭﺠﻭﺩﺓ
ﺩﺍﺨل ﻗﻭﺴﻰ ﺍﻟﻤﺠﻤﻭﻋﺔ ﺘﻌﺎﻟﻰ ﻨﺭﻯ ﺍﻟﻨﺘﺎﺌﺞ
ﻭﻟﻜﻥ ﻤﺎﺤﺩﺙ ﻏﻴﺭ ﺍﻟﻤﺘﻭﻗﻊ ﻟﻘﺩ ﻨﻔﺫ ﺍﻟﻌﺒﺎﺭﻩ ﻤﺭﻩ ﻭﺍﺤﺩﺓ ﻨﻌﻡ ﻫﺫﺍ ﺼﺤﻴﺢ ﺤﺴﺏ ﺍﻟﺸﺭﺡ ﻓﺎﻥ ﻋﺒﺎﺭﺓ
ﺍﻋﻤل ﺒﻴﻨﻤﺎ ﻴﻨﻔﺫ ﺍﻟﻌﺒﺎﺭﺍﺕ ﺍﻭﻻ ﺜﻡ ﻴﺨﺘﺒﺭ ﺍﻟﺸﺭﻁ .
ﻴﻌﻨﻰ ﺒﺎﺨﺘﺼﺎﺭ ﺍﻟﻔﺭﻕ ﺒﻴﻥ while,do-whileﺍﻨﻪ ﻓﻰ whileﺍﺫﺍ ﻜﺎﻥ ﺍﻟﺸﺭﻁ ﻏﻴﺭ ﻤﺘﺤﻘﻕ ﻻ
ﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺍﻟﻌﺒﺎﺭﺕ ﻨﻬﺎﺌﻴﺎ ﺍﻤﺎ do-whileﻴﺘﻡ ﺘﻨﻔﻴﺫ ﺍﻟﻌﺒﺎﺭﺕ ﻋﻠﻰ ﺍﻻﻗل ﻤﺭﺓ ﻭﺍﺤﺩﺓ.
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
ﻭﻁﺒﺎﻋﺔ ﺍﻟﻨﺎﺘﺞ ﻭﺘﻜﻭﻥ ﺍﻟﻤﺨﺭﺠﺎﺕ ﻋﻠﻰ ﻫﺫﺍ ﺍﻟﺸﻜل