Professional Documents
Culture Documents
1
-1المتحولت:
الشكل العام للتصريح عن متحول:
Data_type ;var_Name
Data_Type ;var_Name = init_value
1.1أنماط البيانات:
تملك جافا نوعين من أنماط البيانات ،النوع الول هو النماط البسيطة ) Primitive
(Typeوالثججاني هججو المراجججع) (Referenceوالججتي تمثججل الصججفوف والمصججفوفات
والواجهات ،حيث قيمة المتحول من نمط مرجع هججي عنججوان فججي الججذاكرة للمكججان
الذي يتم فيه تخزين القيمة أو القيم الفعلية.
تستخدم النماط البسيطة لتخزين قيمة واحدة )رقميججة ،محججرف ،قيمججة منطقيججة(،
وتملك جافا ثمانية أنماط بسيطة ،وهي:
:byteوتخزن على ثمانية بتات أي بايت واحد.
:shortحجمه 2بايت ) 16بت(.
تمثل العداد الصحيحة مع
إشارةبايت ) 32بت(.
:intحجمه 4
:longحجمه 8بايت ) 64بت(.
:floatحجمه 4بايت ) 10أرقام بعد الفاصلة(.
تمثل العداد الحقيقية
:doubleحجمه 8بايت ) 20رقم بعد الفاصلة(.
مع إشارة
:charلتخزين محرف وحيد وحجمه 2بايت ) 16بت(.
:booleanلتخزين قيمة منطقية صحيحة أو خاطئة.
(1
Short 16 0 215- 2 -1
15
2
;float 3_node معرفات غير صالحة
;short !theCase
ملحظة:
جافا حساسة لحالة الحرف ،أي أن radiusو Radiusهما متحولان مختلفان.
:Literals1.1
وهي عبارة عن قيمة تعطى لمتحججول ،أي تظهججر فججي الطججرف اليمينججي للمسججاواة،
ويمكن أن تسند إلى متحول من أي نمط بسيط ،كما هو آتي.
:Boolean Literals
وهي عبارة عن القيم المسموحة التي يمكججن نسججبها إلججى متحججول بوليججاني،
وهي عبارة عن falseو .true
boolean isBig=true.
;boolean isLittle=false
:Character Literals
وهي عبارة عن محرف وحيد أو .Unicode Character
;'char c= 'w
;'char c1= '\u0019
:Integral Literals
وهي عبارة عن قيمججة تنسججب إلججى متحججول رقمججي ،ويمكججن أن تكججون هججذه
القيمة ممثلة بالنظام العشري أو النظام الثماني أو النظام الست عشججري،
حيث النظام الفتراضي هو عبارة عن النظام العشري ،ولتحديججد قيمججة أنهججا
ممثلة بالنظام الثماني نسبقها بالصفر ) ،(0أما لتحديد قيمة انها في النظام
الست عشري يجب أن تسبق بجج ) (0xأو ).(0X
مثال:
القيمة 28يمكن تمثيلها بست طرق:
28
034
0X1c
0X1C
0x1c
0x1C
ملحظة:
يتم تمثيل integral Literalsعلى 32بت ،للتعامل معه على أنججه
Z long Literalsأي تمثيلها على 64بت ،نضججيف اللحقججة )(l, L
إلى نهاية القيمة.
تتم ترجمة القيمججة الرقيمججة علججى أنهججا doubleأو ،floatإذا ظهججر
في العبارة أي واحد مما يلي:
.1يحوي الفاصلة العشرية ،مثل .1.414
.2الحرف Eأو ،eمثل .4.23E+21
.3يحججوي اللحقججة Fأو ،fبالتججالي تكججون القيمججة floatمثججل
.1.82f
.4يحوي اللحقة Dأو ،dمثل .234d
ملحظة:
أي قيمة تم تمثيلها بالشكل السابق بدون اللحقججة dأو ،fيعتججبر
قيمة من نمط .double
:String Literals
هي عبارة عن تتابع من الحرف ،مثل:
;"String s="java Fundamentals
ملحظة:
يمكن أن تظهر Unicode Characterضمن أي مكان في ملف جافا.
3
مثال:
;'ch\u0061r a='a
;'char \u0062 ='b
;'char c='\u0063
فيما يلي بعض المحارف الخاصة:
'\n': new Line
'\t' : tab
'\r': return
'\b': backspace
'\\': backslash
'\'' ': double quate
'\' ': single quate
1.1مجال المتحولت:
هي عبارة عن المنطقة التي يمكن فيها استخدام المتحول.
يجب التمييز بين مجال المتحول وقابليجة الرؤيجة ،حيجث قابليجة الرؤيجة تطبجق علجى
العضاء البيانيججة ،وتحججدد هججل يمكججن اسججتخدام العضججو البيججاني خججارج الصججف الججذي
يحويها.
أنواع المتحولت حسب مجال المتحول:
.1متحول عضو .Member Variable
.2متحول محلي .Local Variable
.3وسيط لطريقة .Method Parameter
.4وسيط معالجة استثناء .Exception Handler Parameter
{Class MyClass
Member VariableDecleration
}
}
}
4
مجال وسيط معالجة
السثناء
)الشكل)1
بالنسبة للمتحول العضو:
يمكن أن يكون اسم العضو البياني بنفس اسم الصف.
يمكن استخدامه ورؤيته في أي مكان في الصف.
يتم تهيئته )إعطاؤه قيمة ابتدائية( بشكل أوتوماتيكي قبل استدعاء أي باني.
بالنسبة للمتحولت المحلية:
يمكن أن يكون له نفس اسم عضو بياني.
يجب تهيئته )إعطاؤه قيمة ابتدائية( بشكل صريح قبل استخدامه في أي
عبارة وإل سيعترض المترجم )خطأ أثناء الترجمة(.
إذا كان المتحول هو عبارة عن مرجع ،نعطيه nullكقيمة ابتدائية.
مثال:
)public String aMethod(int a
{
;String tmp
)if(a >0 خطأ أثناء الترجمة ،بيبن أنه يجب إعطاء
;"return "Postive المتحول tmpقيمة ابتدائية
;return tmp
}
1.1الثوابت )المتحولت النهائية(:
يمكن التصججريح عججن المتحججول بحيججث تصججبح قيمتججه ثابتججة )أي غيججر قابججل للتعججديل(
باستخدام الكلمة المفتاحية ،finalكما هو موضح:
;final int x=10
;final int y
;y=30
حيث ل يمكن تغير قيمة المتحول xأو yبعد الن وإل سيعترض المترجم.
5
;x=5; y=0
;y=x++
فتكون النتيجة ).(x=6, y=5
;x=5; y=0
;y=++x
فتكون النتيجة ).(x=6, y=6
-1معاملت):(+)(-
:+-1ليس لها أي تأثير.
:--2
-1النفي)!(:
تعكس قيمة متحول بولياني.
-2المتمم)~(:
تعكس بتات تعبير رقمي ) 0يصبح ،1ج 1يصبح ،(0ويطبق فقط علججى النمججاط
الصحيحة.
-3التحويل القصري)(:
لتحويل نمط بيانات معامل إلى آخر بشكل صريح ،كما في المثال التالي:
;byte x = 1
;byte y = 2
;byte z = x/y
ينتج خطأ أثناء الترجمة عند السطر الثججالث حسججب arithmetic promotion
)المشروحة لحقًا( ،لنه نمط بيانات الطرف اليميني هججو ،intول يمكججن نسججب
قيمة من نمججط intإلججى متحججول مججن نمججط ،byteلججذلك يجججب قصججر الطججرف
اليساري إلى ،byteأي على الشكل:
;byte x = 1
;byte y = 2
;)byte z = (byte) (x/y
-1العمليات الحسابية :Arithmetic Operator
وهي .* ,- ,/ ,% ,+
كل النماط الحقيقية. تطبيقها على
arithmetic -1يمكن
addition
-2يمكن استخدام ) (+لجمع السلسل.
مثال:
;)"System.out.println(1+2+"3
تطبع .33
;)System.out.println("1"+2+3
تطبع .123
string concatenation
-3قسججمة عججدد صججحيح علججى ) (0يرمججي اسججتثناء ،ArithmeticException
بينما يعطي قسمة عدد حقيقي على صفر النهاية) ∞-أو .(∞+
-4تستخدم العملية ) (%للحصججول علججى بججاقي القسججمة ،تكججون إشججارة ناتججج
العملية ) (%حسب إشججارة المعامججل الول لهججذه العمليججة ،وعنججد حسججاب
بجججاقي قسجججمة عجججدد صجججحيح علجججى الصجججفر يتجججم رمجججي اسجججتثناء )
،(ArithmeticExceptionأما باقي قسمة عدد حقيقي على الصفر هججي
اللنهاية.
مثال:
;int z=11%3 يطبع 2
;)System.out.println(z
6
;z=-11%3 يطبع 2-
;)System.out.println(z
7
1 0 1 1 0 0 1 1 0 1 1 a0 0 1 1 1
0 0 0 1 0 1 1 0 0 1 1a<<3
0 1 1 0 0
1 0 1 1 0 0 1 1 0 1 1 a0 0 1 1 1
1 0 0 1 1 0 1 1 0 0 1a>>>3
1 1 0 0 0
1 0 1 1 0 0 1 1 0 1 1a 0 0 1 1 1
1 0 0 1 1 0 1 1 0 0 1a>>3
1 1 1 1 1
8
إذا كان المعامججل اليسججاري هججو غججرض مججن الصججف الموجججود فججي
.الطرف اليميني أو من صف ابن له
إذا كججان الصججف الججذي أنشججأ مججن الغججرض الموجججود فججي الطججرف
.اليساري يحقق الواجهة الموجودة في الطرف اليمني
إذا كان الطرف اليساري هو مرجججع مصججفوفة والطججرف اليسججاري
.نمط مصفوفة
:مثال
class TestInstanceOF {
public static void main(String args[])
{
A a = new A();
B b = new B();
if (b instanceof X)
System.out.println(true);
else
System.out.println(false);
if (b instanceof B)
System.out.println(true);
else
System.out.println(false);
if (b instanceof A)
System.out.println(true);
else
System.out.println(false);
if (a instanceof A)
System.out.println(true);
else
System.out.println(false);
if (a instanceof X)
System.out.println(true);
else
System.out.println(false);
}
}
interface X {}
class A implements X {}
class B extends A {}
:ملحظة
( غيجججر مقبولجججة مجججنx instanceof Y) إذا كجججانت العبجججارة
( غيججرY y=(Y) x ) عندها العبججارة،(المترجم)خطأ أثناء الترجمة
.مسموحة من قبل المترجم
( مقبولججة مججن قبججلx instanceof Y) أمججا إذا كججانت العبججارة
( صحيحةY y=(Y) x )) عندها العبارة،false المترجم ولكن تعيد
. أثناء التنفيذClassCastException ولكن ترمي استثناء
9
إذا كانت العبارة ) (x instanceof yصحيحة وتعيد ،trueعندها
العبارة )) (Y y=(Y) xصحيحة.
:=! ,==-1
-1يستخدم مع النماط البسيطة.
-2ل يمكن استخدامها مع الغراض وإنما نستخدم الطريقججة )(equals
بعد إعادة تحقيقها كما تريد في الصفوف المناسبة.
-3يمكن استخدام )==( لمقارنة .String Literals
-2العمليات الثنائية :Bit wise Operation
وهي & ،| ,^ ,وتطبق على المعاملت المنطقية والصحيحة)byte, short, char,
.(int, long
القيمة Boolean
Literals
1 True
0 false
مثال:
{ class TestLogical
{ )][public static void main(String args
;byte x = 117
;byte y = 89
;)byte z = (byte) (x & y
;)byte l = (byte) (x | y
;)byte m = (byte) (x ^ y
10
;))System.out.println(x + " " + Long.toBinaryString(x
;))System.out.println(y + " " + Long.toBinaryString(y
;))System.out.println(z + " " + Long.toBinaryString(z
;))System.out.println(l + " " + Long.toBinaryString(l
;))System.out.println(m + " " + Long.toBinaryString(m
}
}
11
فجإن العمليجة )=( هجي عبجارة عجن عمليجة،بالضافة إلى عمليات السجناد السجابقة
: كما هو موضح فيما يلي،إسناد ولها قيمة
a=b=c=0
وتصبح العبجارة علجى الشجكل،(0) ( ويصبح قيمة المساواة هيc=0) أول يتم تنفيذ
( وتنسججب0) ( وتصبح قيمججة المسججاواةb=0) ومن ثم يتم تنفيذ،(a=b=0) التالي
.(a)إلى المعامل
:ملحظة
:إذا كان لدينا المثال التالي
byte b=10; ( لذلكint يتم تقييمها ك10 خطأ أثناء الترجمة )القيمة
//b=b+10; ( بشكل صريحbyte) يجب قصرها إلى
b+=10;
لن عمليجات السجناد،أما السطر الول والسطر الثاني يتم ترجمتها بشجكل صجحيح
.(byte) ( إلى النمطint) =( تسبب قصر ضمني من النمط+ ,= )وهنا
:مثال
class PackingCharacters {
public static void main(String[] args) {
char letterA = 'A';
char letterB = 'B';
char letterC = 'C';
char letterD = 'D';
long packed = 0L;
packed = letterD;
packed = (packed << 16) | letterC;
packed = (packed << 16) | letterB;
packed = (packed << 16) | letterA;
long mask = 0xFFFF;
char letter = (char) (packed & mask);
System.out.println("From right to left the letters in packed are:");
System.out.println(" " + letter + Long.toBinaryString(letter));
packed >>= 16; // Shift out the rightmost letter
letter = (char) (packed & mask);
System.out.println(" " + letter + Long.toBinaryString(letter));
packed >>= 16;
letter = (char) (packed & mask);
System.out.println(" " + letter + Long.toBinaryString(letter));
packed >>= 16;
letter = (char) (packed & mask);
System.out.println(" " + letter + Long.toBinaryString(letter));
}
}
العملية التقييم
(postfix)-- ,++ اليسار إلى اليمين من
! ,~ ,- ,+ ,-- ,++ اليمين إلى اليسار من
(new, (type)(object creation, cast اليمين إلى اليسار من
% ,/ ,* اليسار إلى اليمين من
- ,+ اليسار إلى اليمين من
<<< ,>> ,<< اليسار إلى اليمين من
instanceof ,=< ,< ,=> ,> اليسار إلى اليمين من
=! ,== اليسار إلى اليمين من
& اليسار إلى اليمين من
12
^ اليسار إلى اليمين من
| اليسار إلى اليمين من
&& اليسار إلى اليمين من
|| اليسار إلى اليمين من
?: اليمين إلى اليسار من
=,=<< ,=>> ,=& ,=^ ,=| ,=/ ,=* ,=- ,=+ , اليمين إلى اليسار من
<<<=
مثال:
{ class Precedence
{ )][public static void main(String args
;int i = 0
;i = i++ يطبع ) (0لن العملية )=( لها
;i = i++ الولوية القل
;i = i++
;)System.out.println(i
;]int array[] = new int[5
;int index = 0
;array[index] = index = 3
)for (int c = 0; c < array.length; i++ يأخذ العنصر الول القيمة )(3
;)]System.out.println(array[c وليس العنصر الرابع
;)System.out.println("index: " + index
يطبع )(3
}
}
ملحظة:
عند نسب قيمة إلجى متحججول ،يتججم أول ً فحججص مججال نمججط بيانجات القيمجة الموجججودة فجي
الطرف اليساري إذا كانت مقبولة أو ل )من قبل المترجم(.
;char c=3
لن numeric Literalsهي افتراضيا ً قيمة صحيحة
;int a=3
;char d=a
خطأ أثنججاء الترجمجة عنججد السجطر الثججاني ،لن مجججال نمجط البيانجات ) (intأكججبر مجن نمججط
البيانات ).(char
;char e=-1
خطأ اثنججاء الترجمججة لن القيمججة ل تنتمججي إلججى مجججال نمججط البيانججات ) ،(charحيججث نمججط
البيانات ) (charهو نمط صحيح بدون إشارة.
;float f=1.3
خطأ أثناء الترجمة ،لن القيمة ) (1.3يتم ترجمتها على أنها .double
;float f1=1/3
العبارة صحيحة ،لن القيمة ) (1/3هي من نمط .int
;float f2=1.0/3.0
خطأ أثناء الترجمة ،لن الطرف اليميني يتم تقييمه كج .double
عند نسب متحول نهائي إلى متحول ،إذا كان نمط بيانات المتحول النهائي أوسع من نمججط
بيانات المتحول وكانت قيمة المتحول النهائي ضججمن مجججال نمججط بيانججات المتحججول عنججدها
سيتم تحويل ضمني للمتحول النهائي:
;byte b
;final int a=10
;b=a
العبارة صحيحة ،لن قيمة aمحددة وضمن مجال نمط البيانات .byte
13
;final int x=a
;b=x
العبارة صحيحة.
;int y
;final int z=y
;b=z
خطأ أثناء الترجمة عند السطر الثاني والثالي ،لنه لم يتم تحديد قيمة المتحول .y
-1بنى التحكم:
-2المصفوفات:
4.1ما هي المصفوفة:
ً ً
هي بنية يمكن أن تحتوي على عددا ثابتا من عناصجر ذات نمجط بيانجات واحجد ،وقجد
تكون هذه العناصر إما من نمط بسيط أو مراجع ،ويمكن الوصول إلججى كججل عنصججر
بواسطة دليل يمثل موقع العنص في المصفوفة ،وتعتبر المصفوفة غرضا ً حتى ولججو
كانت محتوياتها من نمط بسيط.
4.2إنشاء المصفوفة:
من أجل إنشاء مصفوفة لبد من التصريح عنها أو ً
ل ،أي:
-1التصريح عن مصفوفة:
الشكل العام للتصريح عن متحول من نمط مصفوفة:
;Data_Type[] arr_Name
;][Data_Type arr_Name
مثال:
;int[] a
][String ;s
في هذه المرحلة ل يتم تحديد عدد عناصر المصفوفة )طول المصفوفة(.
-2حجز مكان للمصوفة في الذاكرة:
يتم إنشاء المصفوفة باستخدام المعامل newعلى الشكل التالي:
;]arr_Name=new Data_Type[size
أي:
;]a= new int[3
;]s=new String[3
مثال):(1
{ class TestArray
)][public static void main(String args
{
;int[] y
;]y=new int[5
;)]System.out.println(y[4
}
}
لم نسند أي قيمة بدائية للعنصر الرابع [y[4صراحة ،مججع ذلججك ل تججؤدي ترجمججة
البرنامج السابق إلى أي خطأ ويطبع القيمة ).(0
مثال):(2
{ class TestObjectArray
)][public static void main(String args
{
;]String[] x=new String[3
;)]System.out.println(x[2
}
}
14
يترجم البرنامج السبابق بدون أخطاء ويطبع القيمة ).(null
أي:
ً
تقوم جافا تلقائيا بإسناد قيم ابتدائية لعناصر المصفوفة ،حيث تستخدم القيمة )
(0لعناصر المصججفوفة مججن النمججط الصججحيح بينمججا تسججتخدم القيمججة ) (0.0مججع
عناصر المصفوفة مججن النمججط الحقيقججي والقيمججة ) (falseمججع المصججفوفة مججن
النمط البولياني والقيمة ) (nullمع الغراض.
s
-1مصفوفة الغراض:
s
;]s=new String[3
WelCome
Java
To
;"s[0]="WelCome s
;"s[1]="to
;"s[2]="Java
a
a
ملحظات:
15
يمكن اختصار خطوات التصريح وإنشاء المصفوفة وإعطججاء القيججم البتدائيججة
بخطوة واحدة على الشكل التالي:
;}int a[]= {2, 5, 6
;}int a[]= new int[]{2, 5, 6
ل نحدد طول المصفوفة بعد المعامل .new
نستخدم lengthللحصول على طول المصفوفة.
يمكن أن نضع القواس المربعة ][ بعد نمججط البيانججات أو بعججد أو قبججل اسججم
المصفوفة.
بعد التصريح وحجز مكجان لمصجفوفة )سججواًء كجانت عضججو بيجاني أو متحججول
محلي( ،فإن جافا ستقوم بتهيئة عناصر المصفوفة بشكل أوتوماتيكي وذلججك
بإعطائها القيمة الفتراضية للنمط المقابل )كما ذكر سابقًا(.
إذا تم فقط التصججريح عججن مصججفوفة )ولججم يحجججز مكججان لهججا فججي الججذاكرة(
وكانت المصفوفة هي عبارة عن عضو بياني في الصججف فسججيأخذ المتحججول
المعججبر عججن المصججفوفة القيمججة ،nullبينمججا ل تعطججى المصججفوفة المحليججة
القيمة ،nullكما هو موضح في المثال التالي:
{ class TestInitValue
;][static int a
{ = ][static int b
;}1, 2, 4
{ )][public static void main(String args
خطأ أثناء التنفيذ
;)]//System.out.print(a[0
NullPointerException
;)System.out.println(b
;)]System.out.println(b[2 تطبع null
;)System.out.println(a
;][int c
;)//System.out.println(c خطأ أثناء الترجمة يبين أنه يجب إعطاء
} المتحول قيمة ابتدائية
}
مثال):(3
ترتيب مصفوفة تصاعدياً:
{Class SortArray
{ )][public static void main(String args
;}"String s[] = {"Dalia", "Alsaleh", "Advanced", "programming
;String tmp
)for (int i = 0; i < s.length; i++
)for (int j = 0; j < s.length - i - 1; j++
{ )if (s[j].compareTo(s[j + 1]) > 0
;]tmp = s[j
;]s[j] = s[j + 1
;s[j + 1] = tmp
}
)for (int i = 0; i < s.length; i++
;)]System.out.println(s[i
}
}
مثال):(4
البحث عن عنصر ضمن مصفوفة:
{Class SearchArray
{ )][public static void main(String args
;}"String s[] = {"Dalia", "Alsaleh", "Advanced", "programming
16
)for (int j = 0; j < s.length ; j++
{ )if (s[j].compareTo(s[j + 1]) == 0
;)]System.out.println(s[j
;break
}
}
}
4.1مصفوفة المصفوفات:
هي عبارة عن مصفوفة كل عنصر فيها عبارة عن مصفوفة أيضاً.
أمثلة:
-1إذا كان لدينا ثلثة طلب يخضعون لمتحانات في نهاية كل أسبوع ،بالتالي يكون
علماتهم في نهاية الشهر ممثلة على الشكل التالي:
;} }int[][] grade={{99,42,74,85} , {90,30,40,60} ,{91,83,60,70
-2يمكن استعمال المعامل newلحجز مكان فججي للمصججفوفة فججي الججذاكرة علججى
الشكل التالي:
4 ;]int[][] x=new int[2][3
)for(int i=0;i<x.length;i++
x
4
)for(int j=0;j<x[i].length;j++
;x[i][j]=4
:x.lengthللحصول على عدد السطر .
:x[i].lengthللحصول على عدد العناصر في كل مصفوفة جزئية.
:[x[i][jللوصول إلى العنصر عند سطر معين وعمود معين.
-1ليس من الضروري أن يكون للمصفوفات الجزئية نفس الطول ،كما هو موضح
فيما يلي:
6
3
5
5
مثال):(5
أكتب برنامج يطبع مثلث باسكال:
1
1 1
1 2 1
6
4
3
1
{ class pascal
{ )][public static void main(String args
int n = Integer.parseInt(JOptionPane.showInputDialog("Enter
;))"Number
;][]int[][] pascal = new int[n
17
for (int i = 0; i < pascal.length; i++) {
pascal[i] = new int[i + 1];
for (int j = 0; j < pascal[i].length; j++)
if ( (i == j) || (j == 0))
pascal[i][j] = 1;
else
pascal[i][j] = pascal[i - 1][j] + pascal[i - 1][j - 1];
}
for (int i = 0; i < pascal.length; i++)
for (int j = 0; j < pascal[i].length; j++)
if (i == j)
System.out.println(pascal[i][j]);
else
System.out.print(pascal[i][j] + " ");
}
}
:(6)مثال
: والمطلوب،ليكن لدينا المصفوفة التالية
.أكتب طريقة تقوم بحساب مجموع مركبات كل سطر عاى حدا-1
.أكتب طريقة تقوم بحساب مجموع مركبات كل عمود على حدا-2
.أكتب طريقة تقوم بإيجاد أكبر وأصغر مركبة بين مركبات المصفوفة-3
.أكتب طريقة تقوم بحساب مجموع العداد الزوجية والفردية كل ً على حدا-4
:أمثلة
int[] i=new int[2]{5,20}; خطأ أثناء الترجمة ل يجب تحديد طول
int[5] i={1,23,3,4,5}; new المصفوفة بعد المعامل
أو بعد اسم المصفوفة
18
in this block will be executed.
}
]
يجب أن يكون ) (expressionتعبير منطقي أي أن قيمتججه إمججا falseأو
،trueج ويجب استخدام ) (y==xلمقارنة قيمتين وليس ) (y=xإل فججي
حال كانت المتحججولين ) (x, yهمججا متحججولين منطقييججن )ولكججن سججيعطي
نتيجة خاطئة فقط بدون اعتراض المترجم( ،إذا كان ) (x, yمتحولين من
نمط مغاير للنمط المنطقي سيعترض المترجم )خطأ أثناء الترجمة( ،كمججا
هو موضح في المثال التالي:
;boolean b1 = false
;boolean b2 = true
)if(b1=b2
;)System.out.println("The value of b1: " + b1
-2عبارة :switch
الشكل العام لعبارة :switch
)><(switch
التعليمات التي يجب أن تنفذ في
{
case value1: حال كان قيمة الشرط )
statements (exp=value1هي )(true
;break
التعليمات التي يجب أن تنفذ في
case value2:
statements
حال كان قيمة الشرط )
;break (exp=value2هي )(true
……..
default:
التعليمات التي يجب أن تنفذ في حال
statements
;break كان قيمة ) (expمغايرة لكل القيم
} الموجود في عبارات .case
ملحظات:
-1ليس من الضججروري أن تكججون عبججارة defaultآخججر جججزء فججي عبججارة
.switch
-2أثناء التنفيذ ،إذا تم مصادفة جزء defaultفسجيتم تنفيجذها وإذا كجانت
ل تحوي عبارة ،breakفسججيتم تنفيججذ كججل التعليمججات الموجججودة فججي
عبجارات caseالموججودة بعججد عبجارة defaultحججتى ولججو كجان قيمججة
الشرط ) (exp=valueهي .false
-3يجب أن يكون وسيط عبارة switchمن النماط التالية int, short,
.char, byte, enum
-4يجب أن يكون وسيط عبارة caseمن نمط بيانات رقمي.
-5ل يمكن التصريح عن متحول عبارة switchداخل القججواس ،كمججا هججو
موضح فيما يلي:
);swicth(int x=2
بينما يمكن استخدام العمليات الحسابية البسيطة:
)Switch(x+y
)Switch(x++
مثال:
{ class SwitchTest
{ )public static void main(String[] args
;))(Signal sig = Enum.valueOf(Signal.class, args[0].toUpperCase
{ )switch (sig
case RED:
19
;)(sig.redSays
;break
case YELLOW:
;)(sig.yellowSays
case GREEN:
;)(sig.greenSays
}
}
}
20
// After the execution, go back to check the condition again.
}
-2عبارة :do-While
الشكل العام لعبارة :do-While
{ do
// Execute the statements in this block.
;) >} while ( <expression يجب أن تكون قيمة التعبير )
(expressionهي trueأو
false
ملحظة:
يتم تنفيذ التعليمات الموجودة ضمن كتلة do-Whileمرة واحدة على القججل
حتى ولو كان الشرط غير محقق )لنججه أول يتججم تنفيججذ التعليمججات ثججم فحججص
الشرط(.
-3عبارة :for
الشكل العام لعبارة :for
{ )>for ( <statement>; <test>; <expression
// if the <test> is true, execute the block.
}
:< statement >تستخدم لتهيئة متحول الحلقة.
:<test>شرط منطقية قيمته إما trueأو .false
:<expression>يتججم تنفيججذها مباشججرة بعججد تنفيججذ التعليمججات
الموجودة في حلقججة forومججن ثججم سججيتم فحججص الشججرط )(test
مجججددًا ،إذا كججانت قيمججة الشججرط trueيتججم تنفيججذ التعليمججات
الموجودة ضمن forوإل سينتقل التحكم إلى التعليمات الججتي بعججد
تعليمة .for
ملحظات:
إذا تم التصريح عم متحول الحلقة وتهيئته خارج خارج الحلقة
يجب أن يعطى قيمة ابتدائية داخل الحلقة:
;int i=0
)for(i; i<5; i++ خطأ أثناء الترجمة
21
for() {
System.out.println ("Round and round we go for ever.");
}
:for-each عبارة-1
،Collection تستخدم للمرور على عناصر مصجفوفة أو أي مجن نججوع مجن
:for-each والشكل العام لعبارة
for (<variable> : <collection>) {
// the block code
}
فججي المججرورCollection العنصججر الول مججنVariable أول ً يتججم إسججناد
.الخ... ومن ثم يسند إلى العنصر الثاني في المرور الثاني وهكذا،الول
:مثال
class ForEachTest {
public static void main(String[] args) {
int[] myArray = new int[3];
myArray[0]= 10;
myArray[1] = 20;
myArray[2] = 30;
// int i=0;
for(int i : myArray)
System.out.println (i);
}
}
:Break Statements تعليمات التفريع-2
:break عبارة-1
تستعمل هذه التعليمة لكسر حلقة وانتقال التحكم إل التعليمججة الموججودة
.switch وكذلك تستعمل في عبارة،بعد تعليمة التكرار
:مثال
for ( int i = 3; i >0; i-- ) {
for (int j = 0; j<4; j++) {
System.out.println( "i=" + i + " and j=" + j);
if ( i == j ) break;
}
}
:وتكون النتيجة
i=3 and j=0
i=3 and j=1
i=3 and j=2
i=3 and j=3
i=2 and j=0
i=2 and j=1
i=2 and j=2
i=1 and j=0
i=1 and j=1
يمكججن أن نحججدد أي،إذا كان لدينا حلقات متداخلة كما في المثال السابق
: وله الصيغة التالية،حلقة نريد كسرها عند تحقق شرط معين
break <identifier>;
:مثال
OuterLoop: for ( int i = 3; i >0; i-- ) {
for (int j = 0; j<4; j = j + 1) {
System.out.println ( "i=" + i + " and j=" + j);
if ( i == j ) break OuterLoop;
22
}
}
23
:ما هي نتيجة تنفيذ الكود التالي-1 for ( int j = 1; j < 4; j++)
boolean x = true; {
boolean y = false; if ( i == j ) continue
int i = 1; OuterLoop;
int j = 1; System.out.println ( " i = " +
if((i++ == 1) && (y = true))i++; i+"
if((++j == 1) && (x = false))j++; j="
if((x = false) || (++i == 4))i++; + j );
if((y = true) || (++j == 4))j++; }
System.out.println("i=" + i);
System.out.println("j=" + j); A. i = 0 j=1
System.out.println("x=" + x); B. i = 0 j=2
System.out.println("y=" + y); C. i = 0 j=3
D. i = 1 j=1
A. i=5 j=3 x=true y=false E. i = 1 j=2
B. i=6 j=4 x=false y=true F. i = 1 j=3
C. i=5 j=3 x=false y=true
:ما هي نتيجة تنفيذ الكود التالي-1 :ما نتيجة تنفيذ الكود التالي-1
int i = 0; long i = 2;
do switch (i) {
{ case 1:
System.out.println ( " do System.out.print("Case 1");
block."); case 2:
} while( i > 0) System.out.print("Case 2");
case 3:
.do block يطبع.1 System.out.print("Case 3");
.خطأ أثناء الترجمة.2 default:
.خطأ أثناء التنفيذ.3 System.out.print("Default");
يتججم تنفيججذ الكججود بججدون خطججأ ولكججن ل.4 }
.يطبع شيء .Case 2 يطبع.1
.Case 2, Case 3 يطبع.2
ما هي الخيارات التي تمثججل نتيجججة تنفيججذ-1 . Case2, Case 3, Default يطبع.3
:الكود التالي .خطأ أثناء الترجمة.4
for (int i = 0; i < 2; i++)
for ( int j = 1; j < 4; j++) { :ما هي نتيجة تنفيذ الكود التالي-1
if ( i == j ) continue; int i = 1, j = 1;
System.out.println ( " i = " + i switch (i + j) {
+ case 1:
"j ="+ System.out.println("Case 1");
j ); case 2:
} System.out.println("Case 2");
case 3:
A. i = 0 j = 1 System.out.println("Case 3");
B. i = 0 j = 2 default:
C. i = 0 j = 3 System.out.println("Default");
D. i = 1 j = 1 }
E. i = 1 j = 2 . Case 2 يطبع.1
F. i = 1 j = 3 .خطأ أثناء الترجمة عند السطر الثاني.2
. Case 2, Case 3, Default يطبع.3
ما هي الخيارات التي تمثججل نتيجججة تنفيججذ-1 .خطأ أثناء الترجمة عند السطر الول.4
:الكود التالي
OuterLoop: for (int i = 0; i < 2; :ما هي نتيجة تنفيذ الكود التالي-1
i++) class ContinueTest {
24
public static void main(String[] D. for(int I : myArray.iterator())
arg) {
int i = 2; :ما هي العبارات الصحيحة-1
Outer: A. while (int i < 7) {
if (i < 5) { i++;
System.out.println("I: " + i); System.out.println("i is "
i++; + i);
continue Outer; }
} B. int i = 3;
} while (i) {
} System.out.println("i is "
.خطأ أثناء الترجمة عند السطر الثامن.1 + i);
: يطبع.2 }
I: 2
I: 3 C. int j = 0;
I: 4 for (int k = 0, j + k != 10; j++,
:يطبع.3 k++)
I: 2 System.out.println("j=" + j +
.خطأ أثناء التنفيذ.4 ", k=" + k);
D. int j = 0;
:ماذا يطبع الكود التالي-1 loop: do {
boolean i = true; System.out.println("j=" + j+
boolean j = false; +);
short k = 10; if (j == 3)
if ( (k == 10) && (j = true)) continue loop;
k--; } while (j < 10);
if ( (i = false) || (k == 9))
k--; :ما هي نتيجة تنفيذ الكود التالي-1
k--; int x = 0, y = 4, z = 5;
System.out.println("k=" + k); if (x > 2)
if (y < 5)
A. 10 System.out.println("message
B. 7 one");
C. 8 else
D. 9 System.out.println("message
ما هو السطر البرمجي الذي يجب وضعه-1 two");
في السطر الثامن للمججرور علججى عناصججر else if (z > 5)
:المصفوفة System.out.println("message
class RevQTwo{ three");
static int[] myArray = new else
int[3]; System.out.println("message
public static void main(String [] four");
args) {
myArray[0]=1; .message one يطبع.1
myArray[1]=2; .message two يطبع.2
myArray[2]=3; .message three يطبع.3
…………………………………. .message four يطبع.4
System.out.print(i);
} : ما هي نتيجة تنفيذ الكود التالي-1
} int j = 2;
A. for(int[] i : myArray) switch (j) {
B. for(int i : myArray) case 2:
C. for(myArray : int i)
25
System.out.println("value is C. long
two"); D. float
case 2 + 1: E. char
System.out.println("value is F. String
three"); :ما نتيجة تنفيذ الكود التالي-1
break;
default: public class LogicTest{
System.out.println("value is " + public static void main(String[]
j); args) {
break; int i = 5;
} int j = 10;
.value is two يطبع.1 int k = 15;
:يطبع.2 if ( (i < j) || ( k-- > j) )
value is two System.out.println
value is three ("First if, value of k: " +
value is " + j k);
.خطأ أثناء الترجمة عند السطر الخامس.3 if ( (i > j) && ( --k < j) )
:يطبع.4 System.out.println
value is two ("Second if, value of k: "
value is three + k);
value is " + j System.out.println
("Out of if, k:" + k);
مصججفوفة عناصججرهاsalaries إذا كججانت-1 }
ما هي العبارة الصججحيحة،float من نمط }
:للمرور على عناصر المصفوفة A. First if, value of k: 14
A. for (float f:salaries) Out of if, k: 13
B. for (int i:salaries) B. First if, value of k: 15
C. for (float f::salaries) Out of if, k: 14
D. for (int i::salaries) C. First if, value of k: 15
Out of if, k: 13
: ما هي العبارات الصحيحة-1 D. First if, value of k: 15
A. for (int i=0, j=1; i<10; i++, j++) Out of if, k: 15
B. for (int i=0, j=1;; i++, j++)
C. for (int i=0, float j=1; ; i++, j++) :ما هي نتيجة تنفيذ الكود التالي-2
D. for (String s = ""; s.length()<10; public class LogicTest{
s += '!') public static void main(String[]
: ما هي العبارات الصحيحة-1 args) {
A. while (int a = 0) { /* whatever int i = 5;
*/ } int j = 10;
B. while (int a == 0) { /* whatever int k = 15;
*/ } if ( (i < j) || ( k-- > j) )
C. do { /* whatever */ } System.out.println
while (int a = 0) ("First if, value of k: " + k);
D. do { /* whatever */ } if ( (i < j) && ( --k < j) )
while (int a == 0) System.out.println
E. for (int a==0; a<100; a++) ("Second if, value of k: " +
{ /* whatever */ } k);
F. كل العبارات السابقة خاطئة System.out.println("Out of if, k:" +
k);
ما هي أنماط البيانات الصججحيحة لوسججيط-1 }
:switch عبارة }
A. byte A. First if, value of k: 14
B. int Out of if, k: 13
26
B. First if, value of k: 15
Out of if, k: 14 A. i = 6 and j= 5
C. First if, value of k: 15 B. i = 5 and j= 5
Out of if, k: 13 C. i = 6 and j= 4
D. i = 5 and j= 6
ما هي السججطر الججتي سججتكون جججزء مججن-3 E. i = 6 and j= 6
:نتيجة التنفيذ
for (int i = 0; i < 2; i++) { أي من السطر التالية ستعطي خطأ أثناء-1
for ( int j = 1; j < 4; j++) { :الترجمة
if ( i == j ) { A. int i=0;
continue; if(i) {
} System.out.println("Hello");
System.out.println ( " i = " + i + " j = }
" + j );
}} B. boolean b=true;
A. i = 0 j = 1 boolean b2=true;
B. i = 0 j = 2 if(b==b2)
C. i = 0 j = 3 System.out.println("So true");
D. i = 1 j = 1
E. i = 1 j = 2 C. int i=1;
F. i = 1 j = 3 int j=2;
if(i==1|| j==2)
:ماذا يطبع البرنامج التالي-4 System.out.println("OK");
public class test ( D. int i=1;
private static int j = 0; int j=2;
private static boolean if(i==1 &| j==2)
methodB(int k) { System.out.println("OK");
j += k;
return true; :ما هي نتيجة تنفيذ الصف التالي-1
} public class Ombersley{
public static void methodA(int i) { public static void main(String
boolean b: argv[]){
b = i < 10 | methodB (4); boolean b1 = true;
b = i < 10 || methodB (8); if((b1 ==true) || place(true))
System.out.println("Hello
} Crowle");
public static void main (String }
args[] ) public static boolean
{ place(boolean location){
methodA (0); if(location==true)
System.out.println(j); System.out.println("Borcetshire"
} );
} System.out.println("Powick");
. 0 يطبع.1 return true;
. 4 يطبع.2 }
. 8 يطبع.3 }
. 12 يطبع.4 خطأ أثناء الترجمة.1
Hello Crowle يطبع.2
:ما هي قيمة )( بعد التنفيذ-1 يطبع.3
int i= 1, j= 10 ; Borcetshire
do { Hello Crowle
if (i++> --j) continue; Hello Crowle
} while (i<5); ل يطبع شئء.4
27
Jcdddf-1
kfdfd-2
fddfd لب
تلغعلغلعغل-1
-2
28