Professional Documents
Culture Documents
التعليم عن بعد
أسس البرمجة المرئية
بلغة جافا
إعداد األستاذ
إبراهيم دمحم أحمد علي
1
مقدمة المقرر
الحمد هلل وحدة الحمد هلل الذي علم بالملم علم االنسان مالم ٌعلم والصالة والسالم علً سٌد االنام دمحم ابن
عبدهللا وعلً اله وصحبه البررة الكرام و بعد:
أ سس البرمجة المرئٌة بلغة جافا تمدم للطالب ما ٌحتاجه من اساسٌات لغة جافا بشرح المفاهٌم االساسٌة
المصحوبة باالمثلة واسئلة للتموٌم الذاتً وتدرٌبات محلولة فً نهاٌة كل وحدة.
ٌشتمل هذا الكتاب علً اربعة وحدات ,الوحدة االولى ممدمة عن البرمجة ولغة جافا حٌث تم توضٌح
البٌانات االساسٌة وعملٌات االدخال واالخراج مبٌنا طرق االدخال عن طرٌك االسناد او التخصٌص وكذلن
االدخال بواسطة المستخدم من لوحة المفاتٌح مع طرق مختلفة اٌضا لالخراج كما ٌحتوى هذه الوحدة علً
بعض الرموز الرٌاضة شائعة االستخدام .فً الوحدة الثانٌة والتً عنوانه العبارات الشرطٌة تم فٌها شرح
العامالت المنطمٌة واالدوات الشرطٌة المستخدمة فً التعبٌرات والجمل المنطمٌة وكتابة جمل if,if/else,if
المتداخلة وكتابة جمل . switchفً الوحدة الثالثة التً بعنوان الحلمات التكرارٌة حٌث ٌحتوي علً معرفة
الحلمات التكرارٌة وكتابة واستخدام حلمة forوحلمة whileوحلمة do whileمبنٌا ذلن بالمخططات مع
ذكر اوجه االختالف بٌن انواع تلن الحلمات ٌختم هذه الوحدة بكتابة واستخدام الحلمات المتداخلة.الوحدة
الرابعة بعنوان المصفوفات والذي ٌشرح كٌفٌة نوع واحد من البٌانات فً خالٌا متجاورة فً مصفوفات ذات
البعد الواحد وذات البعدٌن مع اجراء بعض العلٌات علً تلن المصفوفات.
2
اهداف المقرر
بعد فراغن من دراسة هذا الممرر ٌنبغً ان تكون لادرا علً انن
محتويات المقرر
المصفوفات 4
3
الوحدة االولى
البرمجة واساسيات الجافا
4
محتويات الووحد
الصفحة الممدمة
6 تمهٌد
7 .1البرنامج
26 الحزم
إجابة التدرٌبات
المراجع
5
المقحمة
تمهيح
من المعلوم ان الحاسبات انتشرت انتشارا واسعا وكبٌرا فً كل مولع وال ٌمكن اإلستغناء عنه باي حال من
االحوال وذلن لما تتمتع به من لدرة عالٌة من اجراء العملٌات الحسابٌة وغٌرها فً ولت لصٌر ومعالجتها
للكم الهائل من البٌانات فً هذه الوحدة نتعرض الً ماهً برنامج الحاسوب ولغة البرمجة وانواع لغات
كما نتناول البرمجة واهمٌة مهنة البرمجة ثم بعد ذلن نشرح المواعد والخطوات المتبعة لكتابة البرامج
خلفٌة لغة جافا وممٌزاتها وانواع البٌانات االساسٌة واالدخال واالخراج للبٌانات متضمنا كٌفٌة تعرٌف
المتغًرات والثوابت مع شرح بعض العملٌات الرٌاضٌة كالجمع ,الطرح,الضرب,المسمة وبالً المسمة.
االهداف
بعد فراغن من دراسة هذه الوحدة ٌنبغً ان تكون لادرا علً:
.7تعرف المتغٌرات.
.8تعرف الثوابت.
6
البرنامج
هو عبارة عن مجموعة من التعلٌمات تعطى للحاسب للمٌام بعمل ما مثل حساب مجموع لٌم مختلفة ,
حساب المتوسط...الخ ,والبرنامج هو الذي ٌحدد للحاسب كٌفٌة التعامل مع البٌانات للحصول علً النتائج
المطلوبة والبرنامج ٌكتب بواسطة المبرمج الذي ٌفهم المشكلة وٌمترح الحل وٌنفذه.
البرمجيات software
hardwareبكفاءة وراحة وٌمكن تمسٌم البرمجٌات هً التً تسهل للمستخدم استخدام المكونات المادٌة
الً ثالثة انواع رئٌسٌة هً:
برامج التشغٌل.
برامج التطبٌمات.
.1لغة االلة.
.2لغات التجمٌع.
.3لغات المستوى العالً او الرالً حٌث تعتبر سهلة من وجهة نظر المبرمجٌن بالممارنة بلغات
التجمبع ولغة االلة وذلن لسهولة كتابتها وفهمها وحل المشاكل باستخدامها ومن أمثلة هذه اللغات
c,c++والجافا وغٌرها.
.1كتابة برامج وبناء االنظمة المختلفة لحل المشاكل وتبسٌط التعامل مع الحاسب .
.2المسؤلٌة الكاملة عن إصالح ماٌحدث من أعطال وحل المشاكل التً تحدث فً االنظمة المختلفة.
.1الٌمكن لبول أي شئ حمٌمة مسلمة اال إذا ثبت ذلن بالتجربة والمشاهده.
7
.2نل مشكلة أو معضلة ٌتم تبسٌطها وتمسٌمها الً أجزاء عدة كلما أمكن ذلن.
.3فكر بطرٌمة منظمة ومنطمٌة وذلن بالبدء باالجزاء البسٌطة والسهلة الفهم ثم التدرج الً االجزاء
االصعب وهكذ حتى ٌتم االنتهاء من المشكلة.
بالرغم من ان هذه المواعد تم وضعها لبل 200عام من ظهور اول حاسب الكترونً اال انها صالحة
ومطبمة فً الحاسبات ,فإن خطوات حل المشكلة بالحاسوب هً:
.1فهم المشكلة بمعرفة متطلباتها وتمسٌمها الً اجزاء صغٌرة غٌر معتمدة علً بعضها البعض.
.2كتابة الخوارزمٌة وهً الخطوات المنطمٌة لحل المشكلة فمثال اذا اردنا ان نوجد متوسط درجات الحرارة
T1,T2,T3فان خطوات الحل المنطمٌة ٌمكن ترتٌبها فً الخطوات التالٌة:
.4ترجمة البرنامج حٌث ٌتم تحوٌل البرنامج المصدري الً برنامج مكتوب بلغة االلة الن الحاسب الٌفهم اال
لغة االلة وفً هذه الخطوة ٌتم اكتشاف االخطاء المنطمٌة واللغوٌة وتصحٌحها.
.5تنفٌذ البرنامج واعطاء النتائج وفً هذه الخطوة لد تظهر اخطاء التنفٌذ مثل المسمة علً صفر او
لوغٌرثٌم عدد سالب .
لغة جافا
لمد ادى ظهور لغة الجافا عام 1990الى حل الكثٌر من المشاكل واهم هذه المشاكل هى مشكلة الذاكر ة
والتعمٌد المفرط فى لغة c++التى كانت شائعة االستعمال فى ذلن الولت .
8
.2لغة لوٌة تحتوي علً ادوات كثٌرة تساعد فى كتابة البرامج .
.3تعتبر لغة برمجة موجهة للكائنات التً من اهم ممٌزاتها اعادة االستخدام والتورٌث وتعدد الصور
.4تالفت عٌوب كتٌر من اللغات السابمة خاصة امكانٌة الوصول المباشر للذاكرة مما اعطتها درجة عالٌة
من السرٌة.
.8تعتبر من لغات البرمجة المرئٌة والتً تعرف بانها اي لغة برمجة ٌسمح للمستخدم باستخدام عناصر
رسومٌة فً كتابة البرنامج .
.2تعتبر لغة جافا لغة برمجة موجهه للكائنات ,ماهً خصائص لغات البرمجة الموجهة
للكائنات.
9
ٌ -6فضل ان ٌكون اسما معبرا عما ٌموم به الكائن.
Welcome,$value,S_identified
مالحظه-:
- 1حفظ البرنامج فى ملف باسم مختلف عن اسم الكائن حتى لو كانت نفس الحروف ولكنها
تختلف عنها فى الحروف الصغٌره والكبٌره ٌعطى عبارة خطأ عند الترجمه.
- 2اي سطر امر ٌجب ان ٌنتهً بالفاصله المنموطه (;) .semi colum
- 3لغة جافا تفرق بٌن االحرف الصغٌره smallواالحرف الكبٌره capitalحٌث تعتبر
لغة جافا ) (case sensitiveاي اان كلمة SUDANتختلف عن كلمة .sudan
ٌ - 4جب كتابة اي نص بٌن عالمتً تنصٌص " ".
10
مثال برنامج جافا
شرح البرنامج
-تموم جملة . public class Javaبعملٌة تعرٌف الصنف classالذى ٌحمل اسم Javaكما 1
تشٌر كلمة publicالى عملٌة التعمٌم اي ٌمكن الي عضو ٌسمح له باستخدام النظام من تشغٌل
البرنامج.
ال .classٌ -شٌر هذا الموس الى بداٌة ـ 2
ٌ -طلك على هذه الجمله اسم main methodوهى نمطة االنطالق االساسٌه فى كتابة البرنامج. 3
ال .method ٌ -شٌر الى بداٌة ـ 4
ٌ System.out.println -طلك علٌها اسم جملة االخراج او الطباعه اى تموم بطباعة الجمله 5
الموجوده داخل الموس وهى .welcome in my first program JAVA
ال .class
ٌ -شٌٌر الى نهاٌة ـ 6
ال .method ٌ -شٌر الى نهاٌة ـ 7
* /مثال .2اما اذاكانت جملة التعلٌك تحتوي اكثر من سطر نستخدم */
11
أسئلة تقويم ذاتي
االختصارات
الجدول التالً ٌبٌن بعض اإلختصارات المهمة فً لغة جافا:
مثال
welcome in my
first program JAVA
12
مثال
{
System.out.println( "Welcome\nto\nJava\nProgramming!" );
}
} // end method main
:إذن خرج البرنامج السابك هو
Welcome
To
Java
Programming
System.out.println مرات داخل العبارة3 الن إختصار السطر الجدٌد ظهر
Sudan University
Computer department
Name…….. Addresss…………..
Sex…………. Age……………….
13
مثال
:الحل
{
System.out.println(" Fristname \t lastname \t department ");
} // end method main
} // end class Welcome3
مثال
class Today
String today=“Friday”;
System.out.print(“Today is”+today);
today=“Sunday”;
System.out.print(“Today Is Not”+today);
14
الخرج
ملحوظة
االعداد الحمٌمٌة ترمز لها باالسماء float,double
تعريف المتغيرات
الصٌغة العامة لترٌف المتغٌرات هى:
;Data_type variable_name
15
أمثلة لتعرٌف متغٌرات
;Int number
;Float average
;String name
;Boolean endOfGame
;String name,address,department
;Int degree,sum
ادخال البيانات
ٌتم ادخال االبٌات بطرلتٌن :
;Variable_name = value
16
مثال
;Degree=45
;”Name=”Ahmed
ملحوظة
ٌ .1جب مراعاة نوع المتغٌر عند وضع المٌمة فالٌمكن وضع المٌمة 3.5فً متغٌر من نوع Int
والٌمكن وضع الحرف aفً متغٌر من نوع byteبصورة مباشرة.
مثال
;Int degree=50,count=0
;Float price=34.5
;‟Char letteter=‟a
;”String name=”Ali
;Boolean endOfGame=true
;)System.out.print(variable_name
17
مثال:
;”String name=”Ali
;)system.out.print(name
تموم بطباعة االسم Aliعلً الشاشة فهنالن عبارة اخري تستخدم لطباعة لٌم المتغٌرات نراها الحما.
مثال
فً السطر 5تم ادخال Ahmedفً التغٌر nameوفً السطر 6تم طباعة النص His name is
وفً السطر 7تمت طباعة لٌمة المتغٌر nameوهو متغٌر تم تعرٌفه مسبما وٌحمل المٌمة ‟“Ahmed
إذن سٌموم البرنامج بطباعة الكلمة . Ahmedفً السطر 10ستتم طباعة 35وفً السطر 13ستتم
طباعة Mلتكون مخرجات البرنامج هً:
„. الحظ عند ادخال الحروف بعبارة التخصٌص البد من وضعها بٌن العالمتٌن „
ٌمكن دمج عبارتً طباعة النصوص وطباعة لٌمة المتغٌر فً عبارة واحدة تفصل بٌنهم العالمة( )+كما
ٌمكن دمج اكثر من عبارتٌن فً ان واحد
18
مثال
تعريف الثوابت
هً عبارة عن لٌم الٌمكن تغٌٌرها اثناء تنفٌذ البرنامج ,لكننا نموم بتعرٌفه ووضع لٌمة ابتدائٌة له لحظة
التعرٌف وتظل هذه المٌمة ثابتة طوال البرنامج ,تعرٌف الثوابت ال ٌختلف عن تعرٌف المتغٌرات اال فً
الكلمة المحجوزة finalالتً نكتبها امام التعرٌف لنستدل بها علً انه ثابت.
أمثلة لثوابت:
وعادة تكتب اسم الثابت بحروف كبٌرة لتمٌزها وهذا لٌس شرطا
19
مثال
هذه الرموز خاصة بللعملٌات الرٌاضٌة كالطرح والمسمة والضرب والجمع وبالً المسمة حٌث
تستخدم بالً المسمة مع االعداد الصحٌحة فمط اي ان تكون المعامالت اعداد صحٌحة
عند إجراء عملٌة المسمة إذا كان المعاملٌن صحٌحٌن فان ناتج اجراء العملٌة ٌكون عددا صحٌحا مثال 7/3
فان الناتج ٌساوي 3بٌنما إذا كان أحد المعاملٌن عدد حمٌمً فان الناتج سوف ٌكون عددا حمٌمٌا مثال 7/3.0
فان الناتج ٌساوى 3.5ولٌست 3عندما كان المعاملٌن عددٌن صحٌحٌن.
20
اولويات العمليات الرياضة
االولوٌة االولى لاللواس
االولوٌة الثانٌة لعملٌات الضرب والمسمة وبالً المسمة حسب اسبمٌة ظهورهما فً المعادلة
مثال
1.Class priority
{2.
{ 4.
;6. result=x*5+(28-6)*7
;)7.system.out.print(“result=”+result
}}8.
فً السطر 5لمنا بتعرٌف متغٌرٌن الحدهما Xلٌمة ابتدائٌة فً السطر 6تم حساب لٌمة المتغٌر الخر من
خالل تعبٌر رٌاضً فمن الطبٌعً ان ٌتم العملٌة الرٌاضة من الٌسار الى الٌمٌن لتتم العملٌات حسب
االولوٌة.
21
بعض االختصارات الشائعة في العمليات الرياضية
22
مثال
;1.Int x=6
;)2. System.out.print(x++
;)3.System.out.print(x
هنا x++تعنً إضافة 1للمتغٌر xبعد إكمال العملٌة وعلٌه فان الناتج من تنفٌذ السطر 2هوطباعة المٌمة
6بدون زٌادة الممدار , 1لكن ٌتم إضافة الممدار 1بعد العملٌة مباشرة لتكون لٌمة المتغٌر xتساوى 7مع
اول ظهور للمتغٌر ,لتكون مخرج السطر الثالث المٌمة .7
مثال
;)2. System.out.print(--x
;)3. System.out.print(x
هنا --xتعنً انماص لٌمة المتغٌر المتغٌر xبواحد لبل إجراء عملٌة الطباعة وعلٌه ٌتم حساب المٌمة
الجدٌدة للمتغٌر xاوال وهً 6-1=5ثم بعد ذلن ٌتم اجراء عملٌة الطباعة فً السطر الثانً وتكون المخرج
العدد 5بعد ذلن ٌتم االنتمال للسطر الثالث حٌث تتم طباعة لٌمة المتغٌر xوهً 5نفسها.
نحتاج احٌانا إلً وضع لٌمة متغٌر من نوع محدد فً متغٌر أخر من نوع مختلفٌ.مكن وضع محتوٌات
المتغٌر صغٌر السعة فً المتغٌر كبٌر السعة بال مشاكل مثال:
;Int i=100
;Long number
;Number=I
النه مهما كانت لٌمة المتغٌر iكبٌرة فإن المتغٌر numberلادر علً إحتوائٌها حٌث أن سعة المتغٌر من
النوع longأكبر سعة من المتغٌر من النوع int
23
هذا النوع من االسناد (من االصغر سعة الً االكبر سعة) ٌحدث دون مشاكل لكن إذا لمنا بإجراء العكس أي
وضع لٌمة المتغٌر الكبٌر فً المتغٌر الصغٌر فً هذه الحالة ٌجب التعبٌر صراحة عن هذا التحوٌل فً نص
البرنامج فٌما ٌسمً بالـ type castingفإذا كانت العبارات التالٌة:
;Int m
;Long number=10000
فإن العبارة:
;m=number
هً عبارة غٌر ممبولة حٌث ال نضمن ان تكون لٌمة المتغٌر صغٌر بحٌث ٌمكن احتواءها بواسطة المتغٌر
mلذا ٌكتب االمر كاالتً:
;m=(int)number
فهً عبارة ممبولة تعنً تحوٌل المٌمة الموجودة فً المتغٌر numberوهً من نوع longحٌث تحوٌلها
الً نوع intووضعها فً المتغٌر . m
هنالن نوع اخر من التحوٌل وهو التحوٌل من حرف الً عدد صحٌح او العكس ولشرحة نستعٌن بالمثال
التالً:
;‟Char letter=‟A
;Int i=(int)letter
;)System.out.print(i
فً السطر االول تعرٌف لمتغٌر حرفً بمٌمة ابتدائٌة ‟ „Aوفً السطر الثانً تعرٌف لعدد صحٌح له لٌمة
ابتدائٌة ,تم الحصول علً هذه المٌمة االبتدائٌة من تحوٌل المتغٌر letterالً عدد.فً هذه الحالة أي عند
Unicodeفً هذا المثال تحوٌل الحرف إلً عدد صحٌح ٌنتج العدد الذى ٌمابل ذلن الحرف فً شفرة
ٌنتج ممابل الحرف ‟ ‟Aفى شفرة Unicodeوهو الرلم 65وهو ما تطبعه العبارة فً السطر الثالث
عند التحوٌل من عدد الً حرف ٌنتج الحرف الممابل لذلن العدد كاالتً:
24
مثال:
لدٌنا ٌ 545وم نرٌد معرفة عدد السنٌن والشهور واالٌام علما بان السنة ٌ 360وم والشهر ٌ 30وم.
{ 2.
{ 4.
;7. years=days/360
;9. months=days/30
;10. days=days%30
}
}
فً السطر 7حصلنا علً عدد السنٌن من لسمة عدد االٌام علً 360والباقي من هذه االٌام هو الذي
(360السطر ,)8 ستحسب منه الشهور واالٌام والذي تحصلن ا علٌه بإجراء عملٌة بالً المسمة علً
ووضعناها فً نفس المتغٌر daysإذن المتغٌر daysاالن ٌحتوي علً ما تبمى من أٌام بعدما التطعنا منه
9وذلن بمسمة االٌام علً 30اما بالً المسمة السنوات ,االن نرٌد ان نستخلص الشهورفً السطر
الموجود فً السطر 10فهو ٌمثل االٌام لتكون مخرجات البرنامج كاالتً:
25
سؤال تقويم ذاتي
المطلوب كتابة برنامج ٌحول عدد 568ثانٌة الً ساعات ودلائك وثوانً
لغة javaتحتوى على العدٌد من الكائنات ( )classesالجاهزه التى ٌمكن للمبرمجٌن استخدامها وهذه
الكائنات تم تنظٌمها وتجمٌعها فى حزم ( )Packagesوهذه الحزم عباره عن مجموعه من الكائنات التى
تكون الـ , javaاو انها تعرف بما ٌسمى بــjava Application Programming ( Java A P I
)Interfaceوالتى تنمسم الى لسمٌن هما -:
26
قراءة البيانات من المستخدم
فً جمٌع االمثلة السابمة لم ٌساهم المستخدم فً تحدٌد لٌم المتغٌرات بل ٌاخذ البرنامج لٌم البٌانات من
متغٌرات مخزنة المٌم داخل البرنامج ,لغا ت البرمجة لدٌها المدرة علً قراءة البٌانات من لوحة المفاتٌح
جافٌم نن لراءة البٌانات من المستخدم بعدة وسائل
بواسطة المستخدم وذلن بعد تنفٌذ البرنامج .فً لغة ا
(لوحة المفاتٌح ,الملفات,االلراص وغٌرها)...
27
: أمثله
import javax.swing.JOptionPane;
class sum
String a,b;
int x,y,sum;
x=Integer.parseInt(a);
y=Integer.parseInt(b);
sum=x+y;
JOptionPane.showMessageDialog(null,"sumation = "+sum);
}//class
وهو الرلم االول المدخل من صندوق الحوار وٌدخل علً شكل نصaالمتغٌر
وهو الرلم الثانً المدخل من صندوق الحوار وٌدخل علً شكل نصbالمتغٌر
28
هو الرلم االول الذي سٌتم ممارنتهX
علً شكل نصa هذا االمر ٌسمح بادخال رلم داخل صندوق الحوار وٌخزن داخل المتغٌر
b=JOptionPane.showInputDialog("enter the secand of number");
علً شكل نصb هذا االمر ٌسمح بادخال رلم داخل صندوق الحوار وٌخزن داخل المتغٌر
x=Integer.parseInt(a);
y=Integer.parseInt(b);
ففً السطر االول لمناint الً لٌمة صحٌحةstring كل من السطرٌن السابمٌن ٌموم بتحوٌل لٌمة نص
وفً السطرالثانً لمنا بتحوٌلx النصٌة الً لٌمة صحٌحة وتخزٌنها فً المتغٌرa بتحوٌل لٌمة المتغٌر
. y النصٌة الً لٌمة صحٌحة وتخزٌنها فً المتغٌرbلٌمة المتغٌر
مثال
import javax.swing.JOptionPane;
String x;
String y;
29
الحظ ان هنالن متغرٌن من نوع Stringوهما:
المتغٌر xوهو االسم المدخل من صندوق الحوار وٌدخل علً شكل نص
هذا االمر ٌسمح بادخال االسم داخل صندوق الحوار وٌخزن داخل المتغٌر xعلً شكل نص
هذا االمر ٌسمح بادخال العمر داخل صندوق الحوار وٌخزن داخل المتغٌر yعلً شكل نص
عند طباعة االسم والعمر لم نحتاج الً تحوٌلها الً انواع اخرى من البٌانات الن االسم أصال من نوع
stringاما العمر تم إدخالها لسلسلة وكذلن تم طباعتها كسلسلة ولكن ٌختلف االمر إذا أردنا إجراء أي
عملٌة رٌاضٌة علً العمر لبل طباعتها هنا البد من تحوٌلها الً رلم.
30
الوحدة الثانية
التعبيرات الشرطية
31
محتويات الوحدة
الصفحة الممدمة
33 تمهٌد
إجابة التدرٌبات
المراجع
32
المقحمة
تمهيح
فً الوحدة الثانٌة من الممرر والتً تبحث عن العبارات الشرطٌة حٌث ٌتناول العامالت المنطمٌة واالدوات
الشرطٌة التساوى والنفً والممارنات التً تجعل التعبٌر كله تعبٌرا منطمٌا .ونتاول اٌضا استخدام عبارات
الممارنة ifو if /elseو ifالمتداخلة ونتاول امثلة مختلفة للممارنات وكٌفٌة كتابة العبارة switchوشرح
عبارات .break
ااحاا الووحد
33
اللاممت ااال ات الممنقية
سار عن تحمك شرط معٌن داخلتستخدم العامالت واالدوات المنطلٌة فً التعبٌرات المنطلٌة وذلن لالستف
البرنامج وجمٌع هذه التعبٌرات المنطمٌة تحمل لٌمة منطمٌة trueأو . false
الجدول التالً ٌبن بعض العامالت المنطمٌة شائعة االستخدام فً لغة جافا
العملٌة العامل
ٌتم استخدام العامالت المنطمٌة مع المعامالت التً ٌكون لها احدى المٌم trueاو falseاو التً تكون لٌم
ٌمكن تحوٌلها الً trueاو false
ٌموم العامل المنطمً && بتمٌٌم إثنٌن من المعامالت وإرجاع المٌمة trueإذا كان كال المعاملٌن trueفٌما
عدا سٌرجع ٌكون الناتج المٌمة falseوالجدول التالً ٌبٌن ذلن:
العملٌة الناتج
ٌموم العامل المنطمً|| بتمٌٌم إثنٌن من المعامالت وإرجاع المٌمة trueإذا كان احدى المعاملٌن trueفٌما
عدا سٌرجع ٌكون الناتج المٌمة falseوالجدول التالً ٌبٌن ذلن:
العملٌة الناتج
34
هنالن أدوات منطمٌة ٌمكن بها وضع الشروط والتعبٌرات المنطمٌة كما ٌبن الجدول التالً:
أكبر من >
ٌساوي ==
الٌساوى =!
جمٌع هذه االدوات تختبر المعامالت وتحدد إذا ما كان التعبٌر المنطك صحٌح أم خطأ trueأو false
فمثال إذا كان:
X=10, y=20
فإن
x>y False
X<y true
X==y False
X!=y True
X<=y true
x>=y False
ٌمكن للتعبٌر المنطمً ن ٌكون باي درجة من التعمٌد للمثال السابك لمٌم xو ٌ yمكن كتابة :
true x+y>6الناتج
false y<=7+xالناتج
false x%3==yالناتج
35
الجدول التالً ٌوضح اولوٌات العملٌات فً التعبٌرات المعمدة االولوٌة من اعلى الً اسفل:
التحوٌل casting
++,- -
* , / ,%
+,-
&&
||
مثال (اذا كان لدٌن 10جنٌة فانن تستطٌع شراء للم ).
36
if مخطط يوضح عملية
false true
condit
condition
ion
Statment
النهاٌة
امثله
اكتب برنامج ٌستمبل رلمٌن من المستخدم وٌموم بطباعة العدد االكبر
import javax.swing.JOptionPane;
class test
String a,b;
int x,y;
a=JOptionPane.showInputDialog("enter the first of
number");
x=Integer.parseInt(a);
b=JOptionPane.showInputDialog("enter the secand of
number");
y=Integer.parseInt(b);
if (x>y)
JOptionPane.showMessageDialog(null,"max is = "+x);
37
else
;)JOptionPane.showMessageDialog(null,"max is = "+y
}
}
فى السطر 8تم ادخال لٌم العدد االول فى شكل سلسلسة لٌتم تحوٌل المٌمة الً عدد صحٌح فً
السطر 9
ثم تم لراءة العدد الثانً فً السطر 10فً شكل سلسلة لٌتم تحوٌلها الً عدد صحٌح فً
السطر11
فً السطر 12تمت الممارنة للعددٌن الصحٌحٌن لتحدٌد العدد االكبر اذا كان العدد االكبر هو
العدد االول فسوف ٌتم طباعته بواسطة العبارة الموجودة فً السطر 13واال سوف ٌتم طباعة
العدد الثانً بواسطة العبارة الموجودة فً السطر 15
مثال
اكتب برنامج ٌموم باستمبال عدد وٌختبر مااذاكان العدد موجب ام سالب ام صفر وٌطبع رساله بذلن
;import javax.swing.JOptionPane
class test
{
{
;String a
;int x
;)x=Integer.parseInt(a
;)"if(x==0)JOptionPane.showMessageDialog(null,"erorr
}
}
38
عباره if –else
إذاكان الشرط صحٌح نفذ الجمله االولى statment1وخالف ذلن نفذ الجمله الثانٌه statment2
false true
condition
Statment2 Statment1
النهاٌة
المعنى عندما تكون لٌمة الشرط conditionصوابا ٌتم تنفٌذ statment1وتجاهل elseوالعبارة التً
statment1وتنفٌذ العبارة conditionخطأ ٌتم تجاهل العبارة تلٌها ,وعندما ٌكون الشرط
statment2
مثال
.اكتب برنامج ٌستمبل درجة الطالب وٌحدد ما اذا كان نجاح ام رسوب وٌطبع رساله بذلن
39
1. import javax.swing.JOptionPane;
2. class aa
3. {
5. {
6. String n;
7. n=JOptionPane.showInputDialog("enter number");
8. int grade=Integer.parseInt(n);
9. if ( grade >= 60 )
11. else
12. {
13. JOptionPane.showMessageDialog(null,"Failed");
15. }
16. }
17. }
ً ووضعها ف8 فً صورة سلسلة وتحوٌلها الً عدد صحٌح فً السطر7تمت لراءة العدد فً السطر
فإنة ٌتم طباعة60 إذا كانت المٌمة أكبر من60 بالرلم9 ثم ممارنة هذا المتغٌر فً السطرgrate المتغٌر
فانه ٌتم طباعة الكللمة60 وإذا كانت المٌمة الل من10 وذلن بواسطة العبارة فً السطرPassed الكلمة
. داللة علً ان الشرط لم ٌتحمكelse وتموم بذلن العبارة الموجودة بعدFailed
40
اكتب برنامج ٌموم باستمبال سلستٌن ومن ثم ٌختبر مااذا كانت السالسل متشابه ام ال وٌطبع رساله بذلن
import javax.swing.JOptionPane;
class aa
if (s1 == s2)
else تمثل جملة: وif ?) حٌث تمثل ?جملة:( بالعملٌهif /else ٌمكن فً لغة جافا اختصار عبارة
41
المتداخلهif عبارة
. else اذا كان الشرط صحٌح نفذ الجمله االولى ةخالف ذلن نفذ الجمله التى تلى عبارة
-:الصٌغه العامه
If (condition1 ) statement 1
Eles If (condition2 ) statement 2
Else If (condition3 ) statement 3
.
.
.
Else error statement
-: مثال
اكتب برنامج ٌستمبل درجات طالب
. A ٌطبع90 اذا كان درجة الطالب اكبر من
.B ٌطبع80 اذا كان درجة الطالب اكبر من او ٌساوى
.c ٌطبع70 اذا كان درجة الطالب اكبر من او ٌساوى
.D ٌطبع60 اذا كان درجة الطالب اكبر من او ٌساوى
.F وغٌر ذلن ٌطبع
class grade{
public static void main(String[] args)
{
if ( studentGrade >= 90 )
System.out.println( "A" );
System.out.println( "B" );
42
Ifباستخدام الروابط -:
-1الرابط &&(و)
مثال-:
;import javax.swing.JOptionPane
;)y= Integer.parseInt(x
))if((y>=1)&&(y<=10
;) "JOptionPane.showMessageDialog(null,"yes
else
;) "JOptionPane.showMessageDialog(null,"no
}}
فً المثال السابك تم لراءة رلم صحٌح وإختبار ما إذا كان الرلم محصر بٌن الرلمٌن 1و 10فمثال اذا
طرفً الشرط ٌتحممان وبالتالً المٌمة الراجعة من الشرط ٌكون صحٌحا yesكانت لٌمتة الرلم 7فان
فٌطبع البرنامج كلمة
واذا كان احدي االطراف فً الشرط خطا فٌعنً ان الشرط كله خطا فٌتم طباعة كلمة no
.2الرابط ||(أو)
مثال
اكتب برنامج ٌستمبل حرف وٌختبر مااذكان الحرف هو احدحروف كلمة helloوٌطبع رساله بالناتج واال
ٌطبع رساله خطأ
43
import javax.swing.JOptionPane;
class aa
String ch;
ch=JOptionPane.showInputDialog("enter chr");
char chr=ch.charAt(0);
if((chr=='h')||(chr=='e')||(chr=='l')||(chr=='o'))
else
JOptionPane.showMessageDialog(null,"that is error");
}//class
ch=JOptionPane.showInputDialog("enter chr");
char chr=ch.charAt(0);
ً) لذا عند التحوٌل من السلسلة ال0( وعادة ٌتم تخزٌن الحرف االول من السلسلة فً الخانة االولً الخانة
فانch وبما ان اسم السلسة هنا هوstringname.chartAt(0) ) بالعبارة0( حرف ٌتم تحدٌد الخانة
ch.charAt(0) التحوٌل ٌكون بالعبارة
44
اخطاء شائعه
عند تبدٌل العملٌه (=) مكان العملٌه (==) فً شرط جملة ٌ ifجدث syntax error
وضع فاصله منموطه بعد الشرط مثالًال ;)ٌ if( number1 == number2عطً خطأ منطمً
اي خطأ ٌحدث اثناء تنفٌذ البرنامج النه ٌعتبر جواب الشرط جمله خالٌه
عباره switch
فً حالة االختبار من متعدد ٌمكن ان تحل جملة switchمحل if /elseالمتعدده
الصٌغه العامه
)Switch (variable
{
;Break
;Break
.
.
.
;Break
;Break
;default:Error statement
}
حٌث varableهو إسم المتغٌر المطلوب إجراء االختبارات علً لٌمته وٌشترط ان ٌكون من النوع int
ال
او charو value1وحتً value Nعبارة عن لٌم ٌاخذها المتغٌرو ٌجب ان تكون من نفس نوع ـ
45
variableالموجوده فً ال switchاذا احتوى المتغٌر علً لٌمة الـ ٌ valueتم تنفٌذ العبارات التالٌة
حتى الوصول الً نهاٌة الـ switchاو العثور علً كلمة breakتستخدم للهروب من ال switchاما
اذا احتوى المتغٌر علً لٌمة غٌر موجودة فً لٌم الـ valueعندئذ ٌتم تنفٌذ العبارات التالٌة للكلمة
المحجوزة defaultفهً حاله افتراضٌه اختٌارٌه تستخدم لتنفٌذ مهمه فً حاله عدم تحمك اي حاله وعاده
ماتكون فً اخر الـ .switch
;Int digit
;String s
;)"s=JOptionPane.showInputDialog("enter no
;)digit= Integer.parseInt(s
)Switch(digit
{
;)”Case 1:system.out.println(“one
;Break
;)”Case 2:system.out.println(“two
;Break
;)”Case 3:system.out.println(“three
;Break
}
digitالذي ٌتم إختباره وهنا فً المثال السابك ٌتم لراءة المتغٌر بواسطة المستخدم وٌخزن لٌمته فً
case1تعنً انه اذا ساوت لٌمة المتغٌر digitالمٌمة 1فانه ٌتم تنفٌذ العبارة التً تلً case 1وهً
طباعة العبارة oneوبعدها ٌتم الخروج من عبارة switchواال سوف ٌتم إختبار case 2اي هل digit
تساوى 2إذا تحمك ٌتم تنفٌذ العبارة التً تلٌها وهً طباعة الكلمة twoوكهذا فً كل مرة لم ٌتحمك فٌها
الشرط ٌنتمل االختبار الً الشرط التالً وإذا لم ٌتحمك كل الشروط ٌتم تنفٌذ العبارة الموجودة بعد عبارة
defaultفمثال إذا كانت لٌمة digitتساوي 7فٌتم طباعة الرسالة no value match
46
اهمٌة كلمة breakفً انه اذا تحمك الشرط ٌتم الخروج من عبارة switchفان لم ٌكتب هذه العبارة تنفٌذ
العبارات التالٌة له دون تولف فمثال اذا اصبح البرنامج السابك كاالتً:
;Int digit
;String s
;)"s=JOptionPane.showInputDialog("enter no
;)digit= Integer.parseInt(s
)Switch(digit
{
;)”Case 1:system.out.println(“one
;)”Case 2:system.out.println(“two
;)”Case 3:system.out.println(“three
}
فً هذه الحالة التوجد وسٌلة خروج من عبارة switchفعند تحمك اول عبارة ٌتم تنفٌذ كل العبارات التً
تلٌها فمثال إذا ادخل المستخدم المٌمة 2لن ٌتم طباعة الكلمة oneولكن ٌتم طباعة الكلمة twoوالكلمات
threeوno value match
مثال
اكتب برنامج ٌمراء عددا صحٌحا من 1الً ٌ 5موم البرنامج بطباعة االعداد تنازلٌا من العدد المدخل وحتى
الرلم .1
47
:الحل
Int number;
String s;
s=JOptionPane.showInputDialog("enter no 1..5");
number= Integer.parseInt(s);
Switch(number)
Break;
وبسسب عدم وجود عبارة2 ثم انماص لٌمة المتغٌر الً العدد3 مثال ٌموم بطباعة3 عند ادخال المٌمة
لوجود عبارةdefault هنا ال ٌتم طباعة ما بعد العبارة.1 ٌواصل عملٌات الطباعة فٌطبعbreak
. لبلهاbreak
مثال
48
import javax.swing.JOptionPane;
String a,b,c;
int x,y;
char o;
x= Integer.parseInt(a);
y= Integer.parseInt(b);
o=c.charAt(0);
switch (o)
{case'+': JOptionPane.showMessageDialog(null,x+y);
break;
case'-': JOptionPane.showMessageDialog(null,x-y);
break;
case'*': JOptionPane.showMessageDialog(null,x*y);
break;
case'/': JOptionPane.showMessageDialog(null,x/y);
break;
default :JOptionPane.showMessageDialog(null,"error");
49
محتويات الووحد
الصفحة الممدمة
51 تمهٌد
الخالصة
إجابة التدرٌبات
المراجع
50
المقحمة
تمهيح
نحتاج فً بعض االحٌان لتكرات بعض العبارات وبعض العلمٌات داخل البرنامج اكثر من مرة فلٌس من
المنطك تكرار كتابة عبارة متشابه 100مرة ففً النظمة الكبٌرة ٌكون هنالن حوجة للتكرار مثال لراءة
اسماء 10000من الموظفٌن فال ٌعمل ان نكتب لكل موظف أمر خاص الدخال إسمه من هنا جاءت أهمٌة
العبارات التكرارٌة فً لغات البرمجة فنجد ان جملة حلمة التكرار تجعل الحاسب ٌعود الى نفس المولع أكثر
من مرة ولغة جافا توفر هذه العبارات بانواعها المختلفة وهً حلمة forوحلمة whileوحلمة do while
واتً سوف نتطرق لهم بالتفصٌل ثم نبٌن اي منهم ٌستخدم فً التكرار المعلوم واٌهم للتكرار حسب الحوجه
كما نتناول الحلمات المتداخلة فً نهاٌة هذه الوحدة.
حلقة for
تستخدم لتكرار جمله او عدة جمل شروطه هً:
false
تعدٌل العداد شرط
االستمرار
ٌة
true
جسم الحلمة
التعبٌر التالى
51
الصٌغة العامة لـ for
; statements
صٌغة حلمة التكرار تبدأ بـعبارة forوهً كلمة محجوزة تدل على حلمة تكرارٌ ,تبعها الموس الذي ٌضم
عناصر اعدادات الحلمة اﻷساسٌة ,وهً على النحو اآلتً:
Initialization.1وهً للتصرٌح عن المتغٌر الذي سٌشكل محور عداد حلمة التكرار Counterومن
الممكن إن ٌكون متغٌر عددي أو متغٌر حرفً ,وٌجب إن تتضمن عملٌة التصرٌح ,إسناده المتغٌر بمٌمة
مبدئٌة Start Valueتدل على بداٌة عداد الحلمة.
Termination.2المٌمة النهائٌة وهً عبارة تعلٌمة برمجٌة ,تتضمن شرط ممارنة متغٌر عداد الحلمة
بالمٌمة النهائٌة للعداد , Conditionوٌمكننا استخدام كافة عملٌة الممارنة المتعارف علٌه مثل المساواة أو
إشارة اكبر من أو اصغر من أو ٌساوي ..وهكذا.
ٌ Increment or Decrementختص النصف الثالث من لوس اعدادات حلمة forبتحدٌد .1
معدل عملٌة الزٌادة أو النمصان التً ستتم على متغٌر عداد الحلمة من اجل تحدٌد المٌمة التالٌة للعداد.
Next Valueوهنا ٌمكننا استخدام عملٌات إسناد المتغٌر بنتٌجة عملٌة حسابٌة أو من خالل عملٌة
الزٌادة أو النمصان بواحد.
بعد تحدٌد عناصر اعدادات حلمة ٌ forمكننا المباشرة بصٌاغة التعلٌمة البرمجٌة التً نرغب بتنفٌذها ثم
تكرار تنفٌذها ,هذا طبعا إذا كانت التعلٌمة البرمجٌة منفردة .أما فً حال كانت التعلٌمٌة البرمجٌة مركبة من
عدت تعلٌمات ,عندها ٌجب علٌنا استخدام البنٌة الخاصة بالتعلٌمة المركبة والتً تتمثل بموس البداٌة اﻷكبر
} ثم التعلٌمات وفً النهاٌة لوس النهاٌة اﻷكبر { كما هو مبٌن فً الصٌغة التالٌة:
)for(Initialization;Termination;Increment or Decrement
{
;Statement_1
;Statement_2
..............
;Statement_N
}
52
مثال
)For(int i=1;i<=5;i++
;)”System.out.println(“hello my dear
فى هذه الحلمة العداد هو المتغٌر iوٌأخذ المٌمة االبتدائٌة 1الذى ٌتم ممارنتها مع الشرط ) (i<=5اذا تحمك
الشرط ٌتم تنفٌذ العبارة ;)” System.out.println(“hello my dearوهً طباعة الجملة hello my
dearومن i++نعلم ان ٌزداد بعدل 1مع تحمك الشرط ٌ,ستمر التكرار حتً نصل المٌمة النهائٌة وهً 5
بذلن ٌكون لد تم طباعة الجملة hello my dearخمسة مرات الن المتغٌر ٌ iأخذ المٌم 5,4,3,2,1
مثال
)For(int i=1;i<=5;i++
;)System.out.println(i
فى هذه الحلمة العداد هو المتغٌر iوٌأخذ المٌمة االبتدائٌة 1الذى ٌتم ممارنتها مع الشرط ) (i<=5اذا تحمك
الشرط ٌتم تنفٌذ العبارة
;) System.out.println(iوهً طباعة الرلم 1ومن i++نعلم ان ٌزداد بعدل 1مع تحمك الشرط
ٌ,ستمر التكرار حتً نصل المٌمة النهائٌة وهً 5بذلن ٌكون لد تم طباعةاالرلام 5,4,3,2,1الن المتغٌر
ٌ iأخذ المٌم 5,4,3,2,1
-
+1 عدد التكرار =
معدل الزٌادة أو النمصان للعداد
تعنً انه اذا كانت المٌمة النهائٌة للعدد التكرار عبارة عن كسر ٌتم حذف الكسر عالمة
وتمرٌبه الً العدد الصحٌح االصغر.
53
مثال
)For(int i=1;i<=5;i++
;)”System.out.println(“hello dear
;)”System.out.println(“brother
الخرج
hello dear
hello dear
hello dear
hello dear
hello dear
brother
فً المثال السابك نجد ان عدد التكرار حسب المانون تساوي 5تكرار ماٌجب مالحظتة ان العبارة االولى
;)”ٌ System.out.println(“hello dearتم تكرارها 5مرات بٌنما العبارة الثانٌة تكرر مرة
واحده الن التكرار ال ٌشملها وإذا اردنا ان ٌشملها التكرارالبد من وضعها داخل جسم الحلمة كاالتً:
)For(int i=1;i<=5;i++
{
;)”System.out.println(“hello dear
;)”System.out.println(“brother
}
54
فٌكون خرج البرنامج للبرنامج السابك
hello dear
brother
hello dear
brother
hello dear
brother
hello dear
brother
hello dear
brother
class even
int I;
System.out.println(i);
55
اكتب برنامج لحساب الموي لمتغٌر ٌموم بادخاله المستخدم
import javax.swing.JoptionPane;
class power
String p,n;
int x,y;
int k=1;
n=JoptionPane.showInputDialog(„enter number“);
x=Integer.parseInt(n);
y=Integer.parseInt(p);
k=k*x;
56
سؤال تقويم ذاتي
class aa
}]
مثال
class Sample
{
public static void main(String args[])
{
int a, b;
b = 4;
for(a=1; a<b; a++)
{
System.out.println("a = " + a);
System.out.println("b = " + b);
b--;
} }}
57
المخرج
a=1
b=4
a=2
b=3
استخدام عداد حرفً char
لٌس شرط إن ٌكون المتغٌر محور عداد الحلمة من صٌغة اﻷعداد الصحٌحة ,إذ ٌمكننا استخدام المتغٌرات
الحرفٌة كعداد لحلمة كما هو مبٌن فً المثال التالً:
Class star_for
{
{
)for(char i='a';i<='z';++i
{
;)System.out.print(i
"(System.out.print ;)"
}
}
}
ٌمكن ان تحتوي حلمة forعلً حلمة اخرى داخلٌه بحٌث تنفذ الحلمه الداخلٌه اوالًال مكمله دورتها كامله كلما
اخذت الحلمه الخارجٌه دوره واحده
58
امثله لـforالمتداخله :
#####
###
##
#
class aa
{
{
{
*/الحلمة الداخلٌة وفً نفس الولت التعبٌر االول للحلمة الخارجٌة*for(int b=1;b<=a;b++)/
{
;)"System.out.print("#
}
}
}
}
فً المثال السابك نجد ان عدد تكرار الحلمة الخارجٌة 5وهذه الحلمة تحوي بداخلها تعبٌرٌن التعبٌر االول
هو( الحلمة الداخلٌة )والتعبٌر الثانً (عبارة طباعة السطر الجدٌد) إذن التعبٌرٌن ٌتم تنفٌذهما بالتناوب مع
مالحظة ان الحلمة الداخلٌة ٌمل عدد تكرارها بممدار 1مع كل تكرار ففً المرة االولى عدد تكرارها 5وفً
الذى ٌنمص مع كل تكرار بممدار المرة الثانٌة عدد التكرار 4وهكذا الن المٌمة النهائٌة للحلمة الداخلٌة
مرتبطة بمٌمة المتغٌر 1a
59
lمثال
*
***
*****
***
*
class aa
for(int a=1;a<=5;a++)
for(int b=1;b<=a;b++)
System.out.print("*");
System.out.println();
for(int c=5;c>=1;c--)
for(int d=1;d<=(c-1);d++)
60
System.out.print("*");
System.out.println();
{
for(int j = 1;j <= i;j++)
{
System.out.print(i);
}
System.out.println();
}
}
}
المخرج
1
22
333
4444
55555
61
حلقة while
فً هذا النوع من التكرار فً الجافاٌ ,تم تكرار مجموعة اﻷوامر بنا ًالء على تحمك شرط معٌّن.
false
Continue
?condition
true
)Statement(s
Next
Statement
فً المخطط السابك اذا تحمك الشرط (ٌ )continue conditionتم تنفٌذ جسم الحلمة وهو الـ
) statement(sوان لم ٌتحمك الشرط ٌتم الخروج من الحلمة والذهاب الً التعبٌر التالً ( next
)statement
) while( condition
{
;Statement 1
;Statement 2
..
..
..
62
;Statement n
}
فتحمك الشرط الموجود فً ما بٌن الموسٌن بعد كلمة ٌ whileعنً تكون لٌمته المنطمٌة ٌ trueعنً أنه سٌتم
تنفٌذ Statement 1و Statement 2و هكذا.
مثال
;Int x=1
)While (x<10
{
;)System.out.print(x
;X++
}
فً المثال السابك ٌتم اختبارلٌمة الشرط اوال وبا ان لٌمة xألل من ٌ 10تحمك شرط الحلمة وبالتاي الدخول
الً جسم الحلمة whileحٌث ٌتم تنفٌذ التعبٌر االول وٌنتمل للتعبٌر الثانً x++وهً العبارة التً تموم
بتغٌر متغٌر الشرط بممدا 1ثم ٌتم إختبار الشرط مرة أخرى فكلما كانت لٌمة الشرط صحٌح ٌ trueتم
تكرار جسم الحلمة وكهذا حتى تصبح لٌمة xتساو 10عندها لٌمة الشرط تكون خطأ falseلٌنتهً عمل
الحلمة.فً حلمة whileنالحظ االتً:
لد الٌتم تنفٌذ الحلمة نهائٌا وذلن إذا كانت لٌمة متغٌر الشرط فً أول إختبار تساوي خطأ ).(false
63
-:مثال
أكتب برنامجا ًال ٌموم بعرض مجموع اﻷرلام المتتالٌة حتى رلم محدد
class sum
int i=0,max=4,sum=0;
while(i<=max)
sum+=i;
i++;
System.out.print(sum);
64
-: مثال
class WhileDemo
{
public static void main(String[] args)
{
int count = 1;
while (count < 11)
{
System.out.println("Count is: " + count);
count++;
}
}
}
while باستخدام حلمة12 الى1 اكتب برنامج ٌموم بطباعة مضاعفات العدد من
class WhileDemo
{
public static void main(String[] args)
{
Int number=1;
65
حلقة do/whileالتكراريه-:
تستخدم حلمة do–whileكسابمتها whileلعمل تكرار لجمله او عدة جمل وهً شبٌهه بحلمة whileإال
أنه ٌتم إختبار شرطهها فً نهاٌة الحلمة أي أنها تموم بتنفٌذ العبارات الموجودة بداخلها ثم إختبار لٌمة الشرط
لتحٌد إتمرارٌة التكرار ونالحظ فً حلمة whileاالتً:
ٌ تم تنفٌذ الحلمة مرة واحدة علً االلل وذلن الن إختبار الشرط ٌتم فً نهاٌة الحلمة.
)Statement(s
true
Continue
?condition
false
Next
Statement
66
الصٌغة العامة لحلمة do - while
do
{
;)statment(s
;)}while(Condition_Expression
تبدأ صٌغة التكرار do - whileبالكلمة المحجوزة oثم لوس البداٌة الذي ٌعنً بداٌة كلمة التكرار بما
تحتوٌه من تعلٌمات برمجٌة .بعد لوس البداٌة ٌمكننا إدراج وصٌاغة التعلٌمات البرمجٌة statement
المطلوب تكرارها وٌجب إن تنهً كل تعلمٌه بالفاصلة المنموطة .وبعد آخر تعلٌمة برمجٌة علٌنا وضع
ألواس نهاٌة كتلة التكرار .نتبع بعدها لوس النهاٌة بتعلٌمة العودة والتكرار والتً تتكون من الكلمة
المحجوزة whileمتبوعة بالشرط المنطمً Condition_Expressionوٌجب إن ننهً حلمة التكرار
بالفاصلة المنموطة داللة على االنتهاء حلمة التكرار.
مثال
Class do_while
{
)public static void main(String[] args
{
;int A=1
do
{
;)"System.Out.Println("Arabic SEO
;) } while( A < 10
}
}
الشرح-:
الحظ فً المثال أعاله إننا صرحنا عن التغٌر Aبمٌمة مبدئٌة 1داخل كتلة التكرار صغنا تعلٌمة طباعة
Aالل من النص Arabic SEOبعد ذلن حددنا شرط إعادة التنفٌذ والتكرار بان تكون لٌمة المتغٌر
عشرة .تنفٌذ البرنامج والوصول إلى حلمة التكرار ,سٌعمل البرنامج على تنفٌذ تعلٌمة الطباعة دون ان ٌنظر
إلى حالة الشرط ,ثم سٌنتمل إلى تعلٌمة whileلٌتحمك من صحة الشرط لتجده صحٌحا مما ٌعنً العودة
إلى بداٌة حلمة التكرار وإعادة تنفٌذ تعلٌمة الطباعة وهكذا ستستمر عملٌة التكرار إلى ما ال نهاٌة طالما إن
الشرط صحٌح.
67
نستنتج من هذا المثال إن حلمة التكرار do - whileستعمل على تنفٌذ التعلٌمات البرمجٌة مرة واحدة كحد
أدنى وبغض النظر عن حالة الشرط ثم ٌأتً دور تعلٌمة التحمك من الشرط whileوالتً من شانها إعادة
تنفٌذ التعلٌمات طالما الشرط صحٌح .وفً حال عدم تحمك الشرط لن نعود إلى بداٌة حلمة التكرار بل سٌتابع
البرنامج تدفمه إلى التعلٌمة التً تلً حلمة do - whileعندها سنواجه نفس المشكلة التً واجهتنا مع حلمة
التكرار whileوهً عدم الربط بٌن التعلٌمات البرمجٌة والشرط المنطمً مما سٌؤدي إلى دخول البرنامج
بحلمة تكرار ال منتهٌة ,لذلن ٌجب علٌنا صٌاغة تعلٌمة برمجٌة داخل كتلة التكرار لتعمل على تغٌر لٌمة
المتغٌر محور شرط التكرار المنطمً.
مثال:
Class do_while
{
)public static void main( String[] args
{
;intA=0
do
{
;)System.Out.Println(A
;A+=2
;) } while ( A< = 20
}
}
68
. 8 أكتب برنامج إلٌجاد مضروب العدد: مثال
:الحل
Class do_while
{
public static void main( String[] args)
{
int N=8;
long Factorial=1;
do
{
Factorial*=N;//multiply
--N;
} while ( N > 0 );
System.Out.Println(Factorial);
}
}
مثال
import javax.swing.JOptionPane ;
class TestDo
{
public static void main ( String [ ] args )
{
String input ;
int data ;
int sum = 0 ;
do
{
input = JOptionPane.showInputDialog ( " enter number " ) ;
data =Integer.parseInt ( input ) ;
sum += data ;
}
while ( data != 0 ) ;
JOptionPane.showMessageDialog ( null , " the sum is " + sum ) ;
System.exit ( 0 ) ;
}}
69
فً المثال السابك ٌموم المستخدم بمراءة مجموعة غٌر محددة من االعداد وٌحسب مجموع تلن االعداد
ٌتولف البرنامج عن المراءة بإدخال المٌم 0ثم ٌموم البرنامج بطباعة مجموع تلن االرلام ودائما ٌتم طباعة
المجموع خارج جسم الحلمة وكذلن حساب المتوسط ٌتم خارج جسم الحلمة إذا طلب منا ذلن.
فً النهاٌة ٌمكننا تلخٌص أوجه االختالف والتشابه بٌن حلمة التكرار do - whileوحلمة التكرار while
على النحو اآلتً :
تشترط كلتا الحلمتٌن وجود عاللة تغٌر بٌن الشرط المنطمً وإحدى التعلٌمات البرمجٌة التً بداخلها
وذلن حتى ال ندخل بحلمة تكرار ال منتهٌة.
حلمة do - whileتتحمك من الشرط بعد تنفٌذ العملٌات البرمجٌة بٌنما حلمة التكرار while
تتحمك من الشرط من البداٌة ولبل تنفٌذ أي تعلٌمة.
الحد اﻷدنى لتكرار تنفٌذ تعلٌمات حلمة do - whileهو مرة واحدة بغض النظر عن حالة الشرط
بٌنما ٌكون الحد اﻷدنى لتكرار تنفٌذ حلمة whileهو الصفر.
عبارة break
تستخدم هذه الكلمة عندما ٌراد تغٌر المسار الطبٌعً للبرنامج فمثال عندما تستخدم كلمة breakداخل
جسم حلمة forأو whileأو do whileتسبب الخروج منها فورا وٌستمر تنمٌذ بالً جمل البرنامج
التً تلً تلن الحلمات نجد اﻷستخدام الشائع لكلمة breakهو الهروب المبكر من تنفٌذ حلمة معٌنه
توفر لغة جافا ثالثة عبارات مختلفة للتكرارهً forو whileو do while
تستخدم الحلمات التكرارٌة لتكرار جملة أوعدة جمل داخل جسم البرنامج وعندما نعلم مسبما عدد التكرار
التً ستنفذها الحلمة ,اﻷفضل إستخدام حلمة forوإذا كنا ال نعلم عدد التكرار وخصوصا إذا كان التكرار
ٌعتمد علً لٌمة ٌموم بإدخالها المستخدم فً هذه الحالة ٌفضل إستخدام whileأو . do while
إذا كان من الممكن أال ٌتم تنفٌذ الحلمة أصال فاﻷصح إستخدام حلمة , whileأما إذا كان تنفٌذ الحلمة ٌكتمل
للمرة اﻷولى ٌتساوى حٌنها إستخدام whileو .do while
ٌمكن إستخدام الحلمات متداخلة فً بعضعها فً تنفٌذ بعض البرامج وال ٌشترط أن تكون الحلمات المتداخلة
من نفس نوع الحلمة
ٌمكن إستخدام كلمة breakداخل جسم الحلمة للهروب من تنفٌذ بمٌة التكرارات حٌث ٌتم اإلنتمال الً
الجملة التالٌة داخل جسم البرنامج.
70
الوحدة الرابعة
المصفوفات
71
محتويات الووحد
الصفحة الممدمة
73 تمهٌد
74 .1المصفوفات
إجوبة التدرٌبات
المراجع
72
الممدمة
تمهٌد
خالل الدروس السابمة تعاملنا مع عدد من البٌانات من نفس النوع ذات صلة ببعضها مثل درجات المواد ,
أسماء الطالب وغٌرها ,لكن كنا نمرأ أو نحسب أو نتعامل معها دون تخزٌنها ,مثال نجمع درجات الطلب
فً متغٌر واحد لحاب مجموعه أو نطبع اﻷعداد علً الشاشة دون تخزٌن مع أنه فً كثٌر من اﻷحٌان نحتاج
الً تخزٌن هذه البٌانات والرجوع الٌها مرة أخرى خالل عمل البرنامج فمثال لحساب االنحراف المعٌاري
نحتاج الً االعداد بعد جمعها وحساب متوسطها وأٌضا لطباعة جدول منأسماء الطالب ودرجاتهم نحتاج
لإلحتفاظ بهذه البٌانات لعرضها فً ولت واحد أو لطباعة اﻷعداد مرتبة تصاعدٌا نحتاج لتخزٌنها لكً نعٌد
ترتٌبها لبل الطباعة .
من غٌر المنطك أن نموم بتعرٌف متغٌر ممابل كل مادة من مواد الطالب ,والٌمكن كذلن أن ٌكون الطرٌمة
الوحٌدة لترتٌب 20عددا صحٌحا بأن نعرف 20متغٌرا لإلحتفاظ بالمٌم وتخٌل ماذا لو كان 1000عدد أو
أكثر هل نعرف لكل عدد متغٌر؟ فمن هنا جاءت أهٌمة المصفوفات لالمصفوفة عبارة صف من البٌانات من
نفس النوع ذات عاللة ببعضها ٌ,كون للمصفوفة إسم واحد وعدد من الحجرات توضع فٌها البٌانات.
فهنالن عدة أنواع من المصفوفات حسب أبعادها فمنها المصفوفة ذات البعد الواحد والمصفوفة ذات البعدٌن
وذات الثالثة أبعاد والمصفوفة متعددة الأبعاد.
اﻷهداف
عزٌزي الدارس بعد دراسة هذه الوحدة ٌكون لدٌن المدرة علً االتً:
73
الممصووفات Arrays
تعريف -:
المصفوفات هً عبارة عن موالع ٌتم تخزٌن البٌانات فٌها لمدة مؤلته (طٌلة فترة تنفٌذ البرنامج فمط) ,وعند
تعرٌف المصفوفة وإنشائها ٌتم حجز عدد محدد من الموالع المتجاورة فً الذاكرة لتخزٌن البٌانات فٌها ,
حٌث ٌتم الوصول للبٌانات المخزنة فً هذه الموالع عن طرٌك إسم المصفوفة ورلم المولع )(index
والغاٌة من إستخدام المصفوفة هً تخزٌن عدد غٌر محدد من المٌم تحت إسم واحد فمط (إسم المصفوفة)
دون الحوجة الً تخزٌن كل لٌمة فً متغٌر ) (variableمنفصل.
إلستخدام المصفوفه ذات البعد الواحد فً البرامج البد من تعرٌفها وحجز الموالع لها حٌث ٌتم ذلن كما ٌلً:
فمثال:
;][Int array1
;]Array1[]=new int[9
فً المثال السابك نجد فً السطر اﻷول تعرٌف المصفوفة array1من نوع intأي أننا نستطٌع تخزٌن
أعداد من نوع intفً هذه المصفوفة بٌنما فً السطر الثانً تم حجز 9موالع لهذه المصفوفة (من المولع
صفر الً المولع رلم )8لنستطٌع تخزٌن 9أعداد صحٌحة علً اﻷكثر فً هذه المصفوفة.كما ٌمكن دمج
الجملتٌن السابمتٌن فً جملة واحدة لتصبح
;}Int [] student={80,90,60,50,45
شرح -:
تعنً أننا أنشأنا مصفوفة من نوع المتغٌر الصحٌح integerأسمها studentتحتوي على 5لٌم كاﻷتً:
74
student
0 0
0 0 0
;Student[1]=15
;int x
;}int[] e={2,5,3,7,1,9
;x=e.length
حٌث لٌمة xتساوى بعد العملٌه االخٌره 6وهو عدد الخانات المحجوزه للمصفوفه.
75
ملحوظات مهمة
ٌ جب أن ٌكون رلم المولع indexعند التعامل مع المصفوفة عددا صحٌحا موجبا.
إذا لم تحدد لٌمة إبتدائٌة للمصفوفة فٌجب إستخدام الكلمة المحجوزة ) (newلحجز موالع للمصفوفة
كما ذكر سابما.
نستطٌع معرفة عدد الموالع المحجوزة من خالل كتابة إسم المصفوفة ثم نمطة ثم كلمة length
(مثال array1.lengthمن خالل هذه الجملة نستطٌع معرفة عدد الموالع المحجوزة للمصفوفة
.) array1
;]Array=new int[5
;4.int[ ]array
;]Array=new int[5
76
مثال-:
{Class Minimum
{
;}int[ ] a={3,8,4,9,1
{)for(int i=0;i<a.length;i++
)if(a[i]<min
;]min=a[i
}
}
}
فً المثال السابك تم تعرٌف مصفوفة aوطولها 5خالٌا ووضع فٌها أعداد صحٌحة 3,8,4,9,1
وإفترضا ان العدد االصغر فً الخلٌة االولى (الخلٌة رلم )0ثم كتبنا العبارة forالتى تمر علً كل خالٌا
المصفوفة لٌتم إختبار الشرط بممارنة العدد االصغر مع المٌم الموجودة داخل المصفوفة ,إذا وجد أي لٌمة
ألل ٌتم المٌمة اﻷلل) (minبالمٌمة الجدٌدة ,وعند الخروج من الحلمة ٌكون المتغٌر minلد أخذ لٌمة ألل
عدد من اﻷعاد المخزنة فً المصفوفة.
ممحووة
عند التعامل مع المصفوفات نتستخدم الحلمات التكرارٌة النها تملل العبارات المكتوبة فً البرنامج
77
-:مثال
اكتب برنامج بلغة جافا لتعرٌف المصفوفه التالٌه وتخزٌن المٌم فٌها ومن ثم طباعة كل المٌم
I b r a h i m
Class Array
Char y[]={„i‟,‟b‟,‟r‟,„a‟,‟h‟,‟i‟,‟m‟ };
For(int i=0;i<=7;i++)
78
طالب وٌخزنها فً مصفوفة30 اكتب برنامج ٌمرأ أسماء
import javax.swing.*;
class aa
String s;
For(int i=0;i<=29;i++)
Studentname[i]=s;
System.exit(0);
79
فً المصفوفهsudan اكتب برنامج ٌحسب عدد تكرار ظهور كلمة
class aa
String a []={"sudan","sudan","oman"};
for(int i=0;i<a.length;i++)
if(a[i]=="sudan")
min++;
80
تدرٌب :1
11 ، 20 ، 80 ، 50 ، 20 ، 17
الحل :
class prog
{
{
; } int ar [ ] = { 11 , 20 , 80 , 50 , 20 , 17
}
}
تدرٌب : 2
الحل :
class prog
{
{
; } int ar [ ] = { 11 , 20 , 80 , 50 , 20 , 17
81
}}
تدرٌب :3
class prog
{
{
; } int ar [ ] = { 11 , 20 , 80 , 50 , 20 , 17
}
}
تدرٌب :4
82
:الحل
class prog
int ar [ ] = { 11 , 20 , 80 , 50 , 20 , 17 } ;
int sum = 0 ;
sum = ar [ 0 ] + ar [ 5 ] ;
:5 تدرٌب
:الحل
class prog
83
int ar [ ] = { 11 , 20 , 80 , 50 , 20 , 17 } ;
int sum = 0 ;
sum = sum + ar [ i ] ;
:6 تدرٌب
:الحل
class prog
84
}
:7 تدرٌب
. أرلام صحٌحة ومن ثم ٌموم البرنامج بطباعتها10 اكتب برنامج ٌموم بمراءة
:الحل
class prog
85
:8 تدرٌب
:الحل
class prog
86
:9 تدرٌب
أرلام صحٌحة ومن ثم ٌموم البرنامج بطباعة العناصر التً تمع فً العناوٌن10 اكتب برنامج ٌموم بمراءة
.الفردٌة
:الحل
class prog
if ( i % 2 = = 1 )
87
:10 تدرٌب
أرلام صحٌحة ومن ثم ٌموم البرنامج بطباعة هذه العناصر بصورة عكسٌة10 اكتب برنامج ٌموم بمراءة
.للترتٌب الذي تم به اإلدخال
: الحل
class prog
88
تدرٌب :11
12 , 8 , 9 , 3 , 2
9 , 7 , 3 , 23 , 22
ٌموم البرنامج بجمع كل عنصرٌن متمابلٌن وٌضعها فً مصفوفه ثالثة ومن ثم ٌموم البرنامج بطباعة كل
عناصر المصفوفة الثالثة.
توضٌح:
ar3
21 15 12 26 24
الحل:
89
class prog
int ar1 [ ] = { 12 , 8 , 9 , 3 , 2 } ;
int ar2 [ ] = { 9 , 7 , 3 , 23 , 22 };
90
تدرٌب :12
A,K,S,F,P
الحل:
class prog12
{
{
}
}
تدرٌب :13
اكتب برنامج ٌموم بمراءة 10أحرف من لوحة المفاتٌح ومن ثم ٌموم البرنامج بتخزٌنها فً مصفوفة ,
ٌموم البرنامج بطباعة عناصر هذه المصفوفة.
91
:الحل
class prog
فً لغة جافا ٌمكن تعرٌف مصفوفات ذات أكثر من بعد واحد والمصفوفة ذات البعدٌن هً عبارة عن جدول
ٌحتوي علً صفوف وأعمدة
Int B[ ][ ];
92
;]B=new int[3][4
فً السطر الأول تم تعرٌف مصفوفة ذات بعدٌن ,فً السطر الثانً تم حجز موالع لهذه المصفوفة بحث
تحتوي علً 3صفوف وكل صف ٌحتوي علً 4أعمدة كما مبٌن بالشكل التالً:
الصف0
]B[0][0 ]B[0][1 ]B[0][2 ]B[0][3
الصف1 ]B[1][0 ]B[1][1 ]B[1][2 ]B[1][3
الصف2 ]B[2][0 ]B[2][1 ]B[2][2 ]B[2][3
الشكل ٌوضح المصفوفة ذات البعدٌن حرف الـ ٌ Bرمز السم المصفوفة فمثال ]ٌ B[0][1عنً المصفوفة
Bالصف 0العمود .1
;}}Int b[ ][ ]={{6,8,3},{6,2,8
b
93
مسائل محلولة
.أ
class Unary_operator
int x=2;
System.out.print(x++);
System.out.print(x);
System.out.print(--x);
System.out.print(x);
الخرج
2322
94
.ب
int x=8,y=5;
If (x>0)
if (y%2==0)
System.out.println(“one”);
else
System.out.println(“two”);
else
If (y>=5)
System.out.println(“three”);
else
System.out.println(“four”);
الخرج
tow
95
:ًاشرح البرنامج التال.د
switch(Number)
case 1:
System.out.println(“This is ”);
System.out.println(“One ”);
break;
case 2:
System.out.println(“This is ”);
System.out.println(“Two ”);
break;
case 3:
System.out.println(“This is ”);
System.out.println(“Three ”);
break;
default:
96
ٌموم المستخدم باادخال السرعه فً حالة كانت السرعه
غٌر ذلن
97
:ًما هو خرج البرنامج التال
int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int total = 0;
JOptionPane.showMessageDialog( null,
JOptionPane.INFORMATION_MESSAGE );
}}
الخرج
98