0% found this document useful (0 votes)
102 views

Lecture A Java Review

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
102 views

Lecture A Java Review

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 100

oop

‫‪ .1‬مفهوم ‪Object‬‬
‫اذا اردت كتابة رساله فتحتاج الي قلم وورقه وطاولة وكرسي وربما حاسوب شخصي‬
‫جميع هذه األشياء الالزمة لكتابة الرسالة ‪ .‬وكل كائن له شكل معين‪ ،‬و وظيفة‬
‫مميزة‪" objects. ،‬‬
‫فالطبيب كائن له وظيفة محددة وهى التطبيب‪،‬‬
‫لذلك ‪ object‬هو اي شئ مميز له هوية ( له ‪ )Data‬وسلوك (‪) behavior‬‬
‫‪Encapsulation‬‬ ‫‪ .2‬الكبسلة او التغليف‬
‫وضع كل من البيانات و العمليات (الدوال) في مكان واحد يساعد المبرمج على التعامل مع‬
‫الكائن بسهولة ‪.‬‬

‫‪ .3‬تعدد االشكال ‪Polymorphism‬‬


‫من خالل تعدد األشكال يمكن أن نجعل دالة مما تؤدي أكثر من وظيفة اعتمادا على الهدف‬
‫الذي تتبع له‪.‬‬

‫‪ .4‬إعادة االستخدام ‪ ) ) Reuse‬الوراثة ‪inheritance‬‬


‫يمكن للمبرمج إعادة استخدام كائن مرة أخرى دون الحاجة إلى إعادة بناء الكائن من جديد مما‬
‫يوفر الجهد و يزيد سرعة إنتاج البرامج ‪ ،‬و يمكن بناء كائن جديد يرث خصائص‬
‫كائن آخر ويضيف إليها خصائصه‪.‬‬
‫البرمجة باستخدام لغة الجافا‬

‫‪7‬‬
‫البرمجة باستخدام لغة الجافا‬

‫مميزات لغة الجافا‬

‫مميزات لغة الجافا شرح‬

‫‪8‬‬
‫مميزات لغة الجافا شرح‬

‫‪9‬‬
10
11
‫مميزات لغة الجافا شرح‬

‫‪12‬‬
‫مميزات لغة الجافا شرح‬

‫‪13‬‬
‫مميزات لغة الجافا شرح‬

‫‪14‬‬
‫من اللفات التي تدعم ‪OOp‬‬
‫‪Java‬‬ ‫الفرق بین لغة ‪ Java‬و ‪++C‬‬
‫‪++C‬‬
‫‪++C‬‬ ‫‪Java‬‬
‫ال تستخدم األھداف في معظم برامجھا‬ ‫تستخدم األھداف بشكل أساسي في كتابة‬
‫البرامج وال یوجد برنامج خالي من األھداف‬
‫‪Class-Object‬‬
‫تدعم المؤشرات‬ ‫أبعدت شيء أسمة المؤشرات بسبب تعقیدھا‬
‫وكثرة أخطائھا إن لم تعامل صحیحًا ‪.‬‬
‫تدعم الوراثة المتعددة‬ ‫ال تدعم الوراثة المتعددة وقد أبدلتھا بشيء‬
‫‪ interface‬اسمھ الواجھه‬
‫ال یوجد مدمرات ‪ Destructor function‬یوجد‬
‫سريعة جدا بمعدل ‪ 12-10‬مرة من ‪java‬‬ ‫البرامج المكتوبة بال ‪ java‬بطيئه‬
‫و مع األسف محكوم علیھا بالبطئ الشدید كحال أشھر‬
‫البرامج في العالم برامج اإلدارة في‬
‫و (‪ )Builder‬و (‪)Oracle‬‬
‫(‪JDeveloper‬‬
‫الفرق بین لغة ‪ Java‬و ‪++C‬‬

‫اللغة الوحیدة التي دعمت ھذه الخاصیة‬ ‫ال تدعم البرمجة الجینیة أي ‪template‬‬
‫ویمكنك استخدام الحاویات ‪containers‬‬

‫ال تدعم التجرید ‪abstraction‬‬ ‫تدعم التجرید ‪abstraction‬‬


‫تدعم آلیة التزامن‬ ‫تدعم آلیة التزامن ‪synchronized‬‬
‫تسمح بتمریر المعطیات بواسطة المرجع‬ ‫ال تسمح بتمریر المعطیات بواسطة المرجع‬
‫‪reference‬‬

‫تعتبر من اللغات المشھورة بالتعامل مع‬ ‫ال تستطیع التعامل مع مواقع ذاكریھ أو مع‬
‫المنافذ فال تستطیع كتابة كود لیشغل قطع ‪ .‬الھاردویر‬

‫ال يهم‬ ‫یجب حفظ البرنامج باسم ‪ Class‬الرئيسي‬


‫یتم إدارة العملیات في الذاكرة تلقائیا فتكون أكثر یتم یدویَا‬
‫أمانا ‪.‬‬

‫ال‬ ‫تعمل على أي ‪Operating System‬‬


‫إنشاء برنامج بسیط‬
‫‪Creating Sample Program‬‬
‫دعنا نبدأ بكتابة برنامج بسیط یقوم بعرض كلمتي (‪)Welcom Level 2‬‬

‫اشرح الطريقة‬

‫نغتح المفكره‬
‫نكتب برنامج الجافا‪.‬‬
‫نخزن الملف في مجلد ‪ bin‬في الجافا بنفس اسم الكالس الرئيسي بامتداد‬
‫‪.java‬‬

‫ثم نذهب الى ‪ CMD‬بفرض اسم الملف ‪.FristProgram.java‬‬


‫نكتب االمر‬

‫‪C:\Program Files\Java\jdk1.8.0_60\bin\ java FristProgram‬‬


‫‪C:\Program Files\Java\jdk1.8.0_60\bin\ javac FristProgram‬‬
‫اذا كنت تستخدم النت بينز‬
‫من قائمة ‪ file‬تختار ‪New Project‬‬
‫ثم تضع المؤشر علي مجلد ‪ java‬وتحتار ‪next‬‬

‫تكتب اسم البرنامج في خانة ‪ Project Name‬وتؤشر علي الخيار ‪Create Main‬‬
‫‪Press finish‬‬
‫شرح البرنامج ‪:‬‬
‫السطر (‪ .)5-1‬تعليق للبرنامج عدة سطور‪.‬‬
‫السطر ‪ .6‬اسم الباكيج ‪ ;package fristprogram‬علي اسم البرنامج‬
‫السطر (‪ .)10-7‬تعليق للبرنامج عدة سطور اسم المؤلف‪.‬‬
‫السطر ‪.public class FristProgram . 11‬‬
‫اسم البرنامج ‪ FristProgram.‬مسبوق بكلمة ‪( class‬كلمة محجوزة)‪.‬‬
‫مسبوقا بكلمة ) ‪public‬معناها ان الفئة عامة يمكن الوصول لها من أي‬
‫فئة اخرى ) وهي (‪ .)Access Modifier‬و ھي تسبق تعریف‬
‫الفئات ‪ classes‬واألعضاء ‪ Objects‬والمتغّیرات ‪ Variables‬و‬
‫الوظائف ‪Methods‬‬
‫و سنبین ذلك بشكل أوسع في الفصول الالحقة‪.‬‬
‫مالحظة‪ :‬يمكن ان يحتوي البرنامج على اكثر من فئة‪ .‬ولكن فئة واحدة‬
‫فقط لكي تسمى بها البرنامج الرئيسي‪.‬‬
‫السطر رقم ‪ { .11‬واقفل في السطر رقم ‪ .20‬ويسمى بلك (خارجي)‪.‬‬
‫السطر (‪ .)14-12‬تعليق للبرنامج عدة سطور تعريف بالبرنامج‪.‬‬
‫السطر (‪ .)14-12‬تعليق للبرنامج عدة سطور تعريف بالبرنامج‪.‬‬
‫السطر رقم ‪public static void main(String[] args) .15‬‬
‫هي دالة البرنامج الرئيسي تسمي ‪ method‬في البرنامج وتكون في الفئة الرئيسية فقط حتى لو‬
‫البرنامج يحتوي على اكثر من فئة‪.‬‬
‫وهي دالة عامة استاتيكية ال تعيد قيمة (‪. ) void‬‬
‫تسقبل مصفوفة من النصوص ‪.String[] args‬‬
‫السطر ‪ { .15‬واقفل في السطر رقم ‪ .18‬ويسمى بلك (داخلي)‪.‬‬
‫السطر ‪ .16‬تعليق لسطر‪.‬‬
‫السطر ‪;System.out.println("Welcom Level 2") .17‬‬
‫امر طباعة هو ‪ println‬وانتقال لسطر جديد‪ .‬داخل الفئة ‪ . System‬داخلها صفة تدعى ‪ .out‬و‬
‫عضو في فئة ‪PrintStream‬‬
‫مالحظة‪ :‬حساسة لألحرف فكلمة ‪ System‬تبدئ بحرف كبتل اس‪.‬‬
‫كل سطر( ‪ ) statement‬الزم ينتهي بفارزه منقوطة ‪.‬‬
‫مالحظة‪ :‬البلك الداخلي يقفل قبل الخارجي‪.‬‬
‫عملية التنفيذ‪:‬‬
;)……(System.out.print
;)..…(System.out.println
;)……(System.out.printf

.Ex .Ex
;System.out.print("10"+10) ;System.out.println("10"+10)
;System.out.print("20") ;System.out.print("20")

Output:- 101020 Output:- 1010


20
;System.out.printf(FORMAT STRING,"String to print")
.s-> Strings%
S-> Strings. But capital Letter%
.d->integers%
.f->float%
.B->Boolean%

.Ex
;System.out.printf("%S"," welecom in " )
Output:- WELECOM IN
.Ex
;System.out.printf("%s"," WELECOM IN " )
Output:- WELECOM IN

Ex
;int a=20
;System.out.printf("%f",a )
Error

Ex Ex
;float a=20.5f ;float a=20.5f
;System.out.printf("%f",a ) ;System.out.print( a )
Output:- 20.500000 Output:- 20.5
Ex
;System.out.printf("%d add %d=%d",10,20,(10+20))
Output:- 10 add 20=30

Ex
;System.out.printf("%s", "java","application")
Output:- java
Java Java Program Structure ‫بنیة البرامج بلغة‬
)Comments(. ‫ تعلیقات‬.1
))Reserved Word ‫ كلمات محجوزة‬.2
)Method( . ‫ دوال – مناھج‬.3
)Statements( . ‫ عبارات‬.4
)Blocks( . ‫ كتل‬.5
)Classes( . ‫ أصناف‬.6
)Modifiers( . ‫ معدالت الوصول‬.7
)main( . ‫ الدالة الرئیسیة‬.8
‫‪ 1.‬التعلیقات ‪)Comments(.‬‬
‫عدة سطور‪.‬‬
‫سطر واحد‪.‬‬
‫ما الفائدة منها؟‪.‬‬

‫‪ 2‬الكلمات المحجوزة ‪Reserved( :‬‬


‫‪ .4‬عبارات (‪)Statements‬‬
‫تمثل العبارات عمًال أو سلسلة من األعمال ‪ .‬فمثًال العبارة‬
‫‪)Word‬‬
‫)"‪;System.out.println("Welcom Level 2‬‬ ‫أي كلمة موجوده باللغة تعتبر محجوزة مثل ‪public ,class‬‬
‫(‪.)Blocks‬‬ ‫‪ 5.‬كتل‬ ‫الدوال (‪. )Method‬‬ ‫‪ 3.‬المناھج –‬
‫تشكل األقواس المتعرجة في البرنامج الكتلة التي تجمع‬
‫مثل (‪ )System.out.print‬وسيتم التوسع بها الحقا‪.‬‬
‫عناصر البرنامج‪ .‬تبدأ كل كتلة في ‪Java‬‬
‫ماهي فوائد الدوال؟‬
‫بقوس متعرج مفتوح (}) وتنتھي ({) وكل صنف أو داله‬
‫ینطبق عليها نفس اآللیة ‪.‬‬

‫‪ 6.‬أصناف ( ‪)Classes‬‬
‫األصناف تمثل البنیة األساسیة في لغة ‪ Java‬حیث تمیزھا وتعطیھا أدوات قویة جدا ‪ ،‬وسیتم التطرق لھا في الفصول‬
‫القادمة بشكل واسع جدًا‪.‬‬
‫‪ 7.‬معدالت الوصول (‪)Modifiers‬‬
‫تستخدم ‪ Java‬بعض الكلمات المفتاحیة لتحدید خصائص البیانات والدوال والفئات وكیفیة استخدام ھا ففي المثال‬
‫‪ FristProgram‬تم استخدام الكلمة ‪ static ، public‬وسیتم التطرق في الفصول القادمة‪.‬‬
‫‪ 8.‬الدالة الرئیسیة ‪main :‬‬
‫وتعتبر أھم جزئ في البرنامج حیث ال یوجد برنامج یخلي من الدالة ‪ main‬فتمنح ھذه الدالة القدرة على التحكم بتدفق‬
‫البرنامج‪.‬‬

‫المتغیرات – المتحوالت ‪Variables‬‬


‫ھي أنواع من المعلومات التي یمكن تخزینھا في موقع خاص في البرنامج ونستطیع تغییرھا أثناء عمل البرنامج ‪ ،‬فھي‬
‫الوسیلة التي یتذكر بھا الحاسب القیم خالل تشغیل البرامج ‪.‬‬

‫أسماء المتغیرات ‪Naming Variables‬‬


‫عندما ترید أن تعطي أسما لمتغیر ما یجب أن تراعي األمور التالیة‬
‫‪‬اإلشارات المسموح بھا ھي ‪ A-Z,a-z,0-9‬إشارة الخط السفلي " _ "‬
‫‪‬األحرف الصغیرة و الكبیرة لھا دور مھم ‪ ،‬فمثًال األسماء ‪ Amount, AMOUNT ،amount‬هي ‪ 3‬متغيرات‪.‬‬
‫‪‬البدء برقم غیر مسموح بھا ‪ ،‬مثال ‪7day:‬‬
‫‪‬ال یجوز بدء أسم متغیر بخط سفلي " _ " ‪.‬‬
‫أمثله على بعض أسماء متغیرات صحیحة‬

‫‪amount‬‬
‫‪xyz‬‬
‫‪switch_8‬‬
‫‪A_very_long_Name‬‬
‫‪CustomersAmount‬‬
‫القیود المفروضة على األسماء ‪Restrictions on Name‬‬
‫ماهي؟‬
‫التصریح عن المتحوالت ‪Declaring a Variable‬‬
‫التصریح (‪)Declare‬‬
‫>; اسم المتحول >‪ < ,‬أسم المتحول > " نوع المعطیات "‬

‫أنواع المتحوالت ‪Type Variables‬‬


‫‪Point Numbers Floating‬‬ ‫‪.1‬االعداد الحقيقة‬

‫‪.2‬االعداد الصحيحة ‪The Integer Variables‬‬


Floating Point Primitive Data Types
Type Size Range
float 32 bits -3.4E+38 to +3.4E+38
double bits 64 -1.7E+308 to 1.7E+308
Integer Primitive Data Types
byte 8 bits -128 to +127
short 16 bits -32,768 to +32,767
int 32 bits (about)-2 billion to +2 billion
long 64 bits (about)-10E18 to +10E18
‫المتغیرات ذات األساس الرمزي ‪Character-Based Type‬‬ ‫‪.1‬‬

‫‪Char‬‬
‫وھي بدایة كلمة ‪ character‬و یخّز ن في حجم من الذاكرة مقداره ‪ 2‬بایت‪.‬‬
‫هذا المتغّیر یخّز ن حرفًا واحدًا فقط‪.‬‬
‫و یكتب ھكذا محصورًا بین عال متي تنصیص مفردتین‪.‬‬
‫‪;'char key = 'u‬‬

‫متغیرات السالسل ‪String‬‬


‫یستعمل ھذا النوع لتخزین سالسل الحروف ‪ ،‬حیث یمكننا التصریح عن سالسل‬
‫رمزیة بدون تحدید طول ھذه السلسلة‪ ،‬والتصریح التالي یشرح لنا كیفیة ذلك‪.‬‬
‫‪;"String studentName = "ema‬‬
‫مالفرق بین ‪ String‬وبین ‪ char‬؟‬
‫كما نعلم نضع ثوابت األحرف بین إشارتي ('‪ )'a‬والنص بين ("‪.)"a‬‬
‫إلى جانب ثوابت الحرف الواحد ھناك أیضًا ثوابت الحرفین ( ھذه ' ‪XY' ،‬‬
‫‪'('ab‬‬
‫هذه الثوابت الخاصة تعبر عن قیم صحیحة و لكن من المفضل أن ال نستعملھا ‪،‬‬
‫لكي نتجنب مشاكل تتعلق بصالحیة تنفیذ البرنامج على نظم أخرى‪.‬‬
‫متعاقبات الھروب ‪Escape-Sequences‬‬
‫المتغیرات المنطقیة ‪Logical Variables‬‬
‫‪ :Boolean‬سمي ھذا المتغیر نسبة للعالم الریاضي االنجلیزي جورج بوول الذي أخترع الجبر البولیني الذي یعتبر‬
‫األساس لعلوم البرمجة وخاصة لغة الماكینة وااللیكترونی الرقمیة والبوابات المنطقیة وعلم المنطق‪.‬‬
‫یخّز ن قیمة من اثنتین فقط ھما ‪.true, false‬‬
‫مالحظه ‪ :‬إعطاء قیمة لمتحول قد تتجاوز الحدود وھذا ما یعرف (‪)overflow‬‬

‫• المتغیرات التي یعرفھا المبرمج ‪Aggregate Data Types‬‬

‫و ھي المتغیرات التي یقوم المبرمج بتعریف نوعھا‪ .‬مثل ال ‪ classes‬ا لتي نقوم بكتابتھا في ملفات و برامج الجافا‪.‬‬

‫الثوابت ‪Constants‬‬
‫‪;final datatype Constantname =value‬‬

‫فالكلمة ‪ final‬ھي كلمة مفتاحیھ في لغة جافا وتعني أن الثابت ال یمكن أن یتغیر‪.‬‬
‫;‪final double i = 0.045‬‬
‫سینتج خطاء بسبب محاولة تغیر قیمتة وھو من نوع ثابت ‪i++;//‬‬
‫أنواع المتغیرات من ناحیة الوصول‬
‫متغیرات من نوع ‪ static‬ھذه المتغیرات نستطیع أن نقول إنھا نوع ثابت أي لیس‬
‫بمعنى أننا ال نستطیع تغیر قیمتھا ولكن قد تكون بداخل ‪ Class‬فنتعامل معھا مباشرة‬
‫أي كأنھا عامة فعند ترجمة البرنامج یتعرف علیھ المترجم مباشرة قبل الدخول إلى‬
‫الدالة الرئیسیة‬

‫متغیرات محلیة ‪ local‬وھي المتغیرات المعرفة على مستوى ‪ Block‬أي المقطع‬


‫وال نستطیع الوصول إلیھا من خارج ‪ Block‬أي {} فعندما نخرج من ‪ Block‬فإنھا‬
‫تدمر من الذاكرة وتنتھي حیاتھا‪.‬‬

‫المؤثرات ‪Operators‬‬
‫المؤثرات ھي الرموز التي تربط بین المتغیرات والثوابت إلنشاء عالمة أو معادلة‬
‫تختلف أنواع المؤثرات باختالف وظیفة كل مؤثر‬
Arithmetic operators ‫المؤثرات الحسابیة‬

Java operation Arithmetic Algebraic Java expression


operator expression
Addition + f+7 f+7
Subtraction - P-c p-c
Multiplication * bm b*m
Division / x/y
Remainder % r mod s r%s

Relational operators ‫مؤثرات المقارنة‬


Logical operator ‫المؤثرات المنطقیة‬
. 1 ‫ و‬0 ‫ او‬True, False ‫یمكننا استخدام مؤثرات المقارنة مع نوع القیم المنطقیة مما تعطینا نتائج‬
‫مثال النتیج‬ ‫الرمز‬ ‫المؤثر‬
‫ة‬
1 7 > 9 && 8 > 10 && AND
1 8 < 7 || 8 < 0 1 || OR
1 ) 8 = = 10( ! ! NOT
2 3&6 & Bitwise AND
7 6|3 | Bitwise OR
5 6 ^3 ^ Bitwise exclusive OR
5 (~3 & 6)|(3 & ~6) ~ Bitwise unary NOT
12 0x0f & 3~
1 ))1>>3 >> Shift right
2 ))1>>6
6 ))1<<3 << Shift left
12 ))1<<6 &= Bitwise AND assignment
|= Bitwise OR assignment
^= Bitwise exclusive OR
assignmentJAVA
=>> Shift right assignment
Assignment Operators ‫مؤثرات التخصیص‬
‫المؤثر‬ ‫النتیجة‬ ‫الطریقه الحدیثة‬ ‫التخصیص التقلیدي‬
A=6
+ = addition assignment operators 11 A + = 5 A=A+5

Subtraition assignment operators 1 A-=5 A=A-5

Multipication assibnment 30 A * = 5 A=A*5


operators
Division assignment operators 2 A/=3 A=A/5
Increment& Decrement ‫مؤثرات الزیادة والنقصان‬

6 A
‫مؤثر زیادة واحد‬ 7 ++ A A=A+1
‫مؤثر نقصان واحد‬ 5 -- A A=A-1
example
B=3; B=3;
A=++B; A=B++;
A is 4, B is 4 // // A is 3, B is 4
Operator precedence ‫أسبقیة العوامل وترتیب الحدود‬

Prior Operator Description Associativity


ity
1 () [ ] -> . sizeof Left
2 ++ -- increment/decrement Right
~ Complement to one
(bitwise)
! unary NOT
&* Reference and
Dereference
)pointers(
(type) Type casting
+ - Unary less sign
3 %/* arithmetical operations Left
4 -+ arithmetical operations Left
5 << >> bit shifting (bitwise) Left
6 => > =< < Relational operators Left
7 =! == Relational operators Left
8 &^| Bitwise operators Left
9 && || Logic operators Left
10 :? Conditional Right
11 = += -= *= /= Assignation Right
%=
‫التحویالت في األنماط العددیة ‪Conversion and Casts‬‬

‫بمعنى التبدیل بین أنواع البیانات مثل القناع وأحیانا ُیجبر المبرمج في استخدام ھذه العملیة‪.‬‬
‫عند تحویل نمط كبیر إلى صغیر فأنة من الضروري عمل ‪ casting‬أي قناع مثل‬
‫;‪int a=256‬‬
‫‪;Byte b=(byte) a‬‬
‫ھنا یتم أخد ‪ 8‬بت فقط ویتم إسنادھا إلى ‪ b‬فتكون قیمة ‪b=0‬‬
‫التحویالت في األنماط العددیة ‪Conversion and Casts‬‬

‫بمعنى التبدیل بین أنواع البیانات مثل القناع وأحیانا ُیجبر المبرمج في استخدام ھذه العملیة‪.‬‬
‫عند تحویل نمط كبیر إلى صغیر فأنة من الضروري عمل ‪ casting‬أي قناع مثل‬
‫;‪int a=256‬‬
‫‪;Byte b=(byte) a‬‬
‫ھنا یتم أخد ‪ 8‬بت فقط ویتم إسنادھا إلى ‪ b‬فتكون قیمة ‪b=0‬‬
‫ناخذ من البت األول الى السابغ فقط والبت الثامن يعتبر مؤشر‬
‫ناخذ من البت األول الى السابغ فقط والبت الثامن يعتبر مؤشر‬
‫‪123-128=-5‬‬

‫في حالة تحویل نمط من ‪ float‬الى ‪ int‬فإننا نبعد الكسور فقط‬


‫;‪float a=256.6f‬‬
‫‪;int b=(int)a‬‬

‫فتكون قیمة ‪.b=625‬‬

‫في ھذا الكود سیقوم المترجم بإصدار خطاء‬

‫;‪int a=200‬‬
‫‪;short b=a‬‬

‫;‪Double a=4.4‬‬
‫; ‪Int b=(int)a‬‬
Control Structures ‫بني التحكم‬
)IF Statement( ‫العبارة الشرطی‬

44
Control Structures ‫بني التحكم‬

:‫المؤثر الثالثي‬
operator ):?( ‫تمتلك لغة جافا على ما یسمى بالعملیة الشرطیة المختصرة‬
conditional
.‫ فھي تشبھھا‬if/else ‫وھي أسرع بالتنفیذ من الجملة‬
;System.out.println(a >= 60 ? "passed" : "failed")

If(a>=60)
System.out.println("failed");
Else
System.out.println("passed");

45
‫بنیة االختیار المتعددة (‪)Switch Statement‬‬

‫‪46‬‬
)Loop( ‫الدوران‬

) for Loop ) ‫ الحلقة‬1


) while loop ) ‫ الحلقة‬2 -
) do-while Loop ) ‫ الحلقة‬3 -

47
‫بنیة التكرار الحذ (‪)while‬‬

‫‪while Loop‬‬

‫‪48‬‬
‫تجاوز قوانین الحلقات ‪Getting Around The Looping Rules‬‬

‫تملك لغة جافا عدة روتینان مسبقة التعریف تمكن من القیام بأعمال خاصة أثناء تنفیذ الحلقات ‪ .‬وھذه‬
‫اإلجراءات ھي ‪ break, continue‬ووظیفة ھذه اإلجراءات تغیر انسیاب التحكم (‪)flow of control‬‬
‫ضمن البرنامج‪.‬‬

‫جملة (‪)break‬‬

‫‪49‬‬
) continue( ‫جملة‬

50
‫جملة ‪return .‬‬
‫تستطیع إیقاف تنفیذ البرنامج بھذه التعلیمة ‪ return‬فھي تعمل على‬
‫إیقاف الدالة الرئیسیة ‪ main‬وھذا المثال یبین ذلك‬

‫‪51‬‬
‫عمليات االدخال‪:‬‬
‫بطبيعة الحال د يخلو أي برنامج لو فائدة من جملة اإلدخال ‪ ,‬فهي‬
‫الجملة التي تربط البرنامج بالعالم الخارجي وهي الوسيلة الوحيدة‬
‫التي يستطيع فيها المستخدم إدخال القيم عن طريق لوحة المفاتيح‬
‫للحاسب ‪ ,‬حتى يقوم بمعالجة هذه القيم سواء كان البرنامج )برنامج‬
‫حسابات – قاعدة بيانات ‪(......‬‬

‫لدينا طريقتين الدخال البيانات‪:‬‬


‫عن طريق فصيلة ‪Scanner‬‬
‫عن طريق الصناديق (‪.)Input Dialog Boxes‬‬

‫‪52‬‬
‫الفصيلة ‪ Scanner‬توجد داخل الباكيج ‪ java.util‬لذلك عليك جلبه للبرنامج بواسطة‬
‫االمر‬
‫;‪import java.util.Scanner‬‬
‫وبذلك يمكننا استخدام عبارة اإلدخال ‪ Scanner‬في البرنامج المطلوب ‪.‬‬

‫‪53‬‬
54
55
56
Dialog Box ‫عن طريق‬

‫ لذلك عليك جلبه‬javax.swing ‫ توجد داخل الباكيج‬JOptionPane ‫الفصيلة‬


‫للبرنامج بواسطة االمر‬
import javax.swing. JOptionPane;

JOptionPane.showMessageDialog(null," Welcome\n to\n


Java\n Programming!");

57
JOptionPane.showInputDialog("Enter a number:");

‫متي يضهر الخطأ؟‬ 58


59
// if
package project_Collect;
import java.util.Scanner;
public class Project_Collect {
public static void main(String[] args) {
Scanner num=new
Scanner(System.in);
System.out.print(" input number:= ");
int a=num.nextInt();
if (a<10) a+=5;

System.out.println("number a is "+ a);

} 60
//posive nagtaive
package project_postive;
import java.util.Scanner;
public class Project_Postive {
public static void main(String[] args) {
Scanner num=new
Scanner(System.in);
System.out.print(" input number:= ");
int a=num.nextInt();
if (a>0)
System.out.println("postive");
else
System.out.println("negtive");
}
}
61
//max between a,b
package project_Max;
import java.util.Scanner;
public class Project_Max {
public static void main(String[] args) {
int a=10,b=5;
if (a>b)
System.out.println("a max");
if (a<b)
System.out.println("b max");
}

62
// even odd
package project_Even;
import java.util.Scanner;
public class Project_ Even {
public static void main(String[] args) {
Scanner num=new Scanner(System.in);
System.out.print(" input number:= ");
int a=num.nextInt();
if (a%2==0)
System.out.println("Even");
else
System.out.println("odd");
}
63
// hour
package project_hour;
import java.util.Scanner;
public class Project_ hour {
public static void main(String[] args) {
Scanner num=new Scanner(System.in);
System.out.print(" input hour:= ");
int hour =num.nextInt();
if (hour < 12)
System.out.println("Good morning.\n");
else if (hour < 17)
System.out.println("Good afternoon.\n");
else
System.out.println("Good evening.\n");
}
64
package project_grade;
System.out.println("D");
import javax.swing.*;
else
public class Project_ grade {
System.out.println("F");
public static void main(String[] args) {
String s;
}
int grade;
}
s=JOptionPane.showInputDialog("Enter
a number:");
grade=Integer.parseInt(s);
if ( grade >= 90)
System.out.println("A");
else if ( grade >= 80)
System.out.println("B");
else if ( grade >= 70)
System.out.println("C");
else if ( grade >= 60)
65
package project_mounth;
case (3):
import java.util.Scanner;
System.out.print("March");
public class Project_ mounth {
break;
public static void main(String[] args) {
Scanner num=new
case (4):
Scanner(System.in);
System.out.print("April");
System.out.print(" input mounth:= ");
break;
int month =num.nextInt();
case (5):
switch (month)
System.out.print("May");
{
break;
case (1):
System.out.print("January");
case (6):
break;
System.out.print("June");
case (2):
break;
System.out.print("February");
break;
66
case (7):
case (11):
System.out.print("July");
System.out.print("November");
break;
break;

case (8):
case (12):
System.out.print("August");
System.out.print("December");
break;
}

case (9):
}
System.out.print("September");
break;
}

case (10):
System.out.print("October");
break;
67
// print 1-n using for // print 1-n using while
package project_PrintN; package project_PrintN;
import java.util.Scanner; import java.util.Scanner;
public class Project_PrintN { public class Project_PrintN {
public static void main(String[] args) public static void main(String[] arg
{ Scanner num=new Scanner(Sys
Scanner num=new System.out.print(" input N numb
Scanner(System.in);
int n=num.nextInt();
System.out.print(" input N
number:= "); int i=0;

int n=num.nextInt(); while(i++<n)

for (int i=1;i<=n;i++) System.out.println(i);

System.out.println(i); }

}
} }
68
// print 1-n using do
package project_PrintN;
import java.util.Scanner;
public class Project_PrintN {
public static void main(String[] args) {
Scanner num=new
Scanner(System.in);
System.out.print(" input N number:=
");
int n=num.nextInt();
int i=0;
do
System.out.println(i);
while(i++<n);
}

69
}
‫طباعة االحرف مع شفرتها‬

package project_PrintN;
public class Project_PrintN {
public static void main(String[] args) {
for(char i='a';i<='z';i++)
System.out.println(i+ " "+ (int) i);

}
70
‫ ارقام عشوائية‬10 ‫توليد‬

package project_Random;
import java.util.Random;
public class Project_Random {
public static void main(String[] args) {
Random g=new Random();

for(int i=0;i<10;i++)
System.out.println(g.nextInt(100) );
}

71
}
‫أكتب تعلیمة جافا واحدة للقیام باألعمال التالیة‪:‬‬
‫‪ .1‬أطبع الرسالة ‪."Enter tow number".‬‬
‫‪.2‬أطبع تربیع‬
‫‪.3‬أطبع تكعيب ‪.‬‬

‫ماذا تطبع التعلیمیة التالیة ‪:‬‬


‫)"‪System.out.print("*\n**\n***\n****\n*****\n‬‬
‫)"‪; System.out.print ("One\t Two \t Three \t Four‬‬

‫أذكر السبب الذي یجعل كل من الثوابت التالیة غیر مقبولة‪:‬‬


‫‪4,22‬‬
‫‪10+20‬‬
‫‪$33‬‬

‫‪72‬‬
‫إذا كانت‬
‫‪,A=3, B=-2, I=6‬‬
‫فاوجد االتي‬
‫‪A*2/B‬‬
‫)‪ B-I*J+(2*B‬‬
‫)‪ J+(B*(A-2)-7‬‬
‫أكتب برنامج یقراء ثالثة أعداد ویطبع المتوسط الحسابي لھما؟ بدون دوران‬
‫أكتب برنامج یعمل على تبدیل قیم متغیرین ؟‬
‫أكتب برنامج یعمل على فحص العدد هل موجب او سالب؟‬
‫اكتب برنامج بطباعة اكبر عدد من رقمين؟(‪)if only, if else‬‬
‫أكتب برنامج یعمل على فحص العدد هل فردي او زوجي؟‬
‫أكتب برنامج یعمل على ادخال قيمة الساعه وطباعة ترحيب حسب الوقت؟‬
‫مثال اذا كانت الساعه اقل من ‪ 12‬يطبع ‪.Good morning‬‬
‫‪73‬‬
‫باستخدام التعليمة ‪: switch‬‬
‫‪‬ادخل رقم الشهر يطبع اسم الشهر‪.‬‬
‫‪‬اله حاسبة بسيطة اذا أدخلت ‪ +‬يقوم ادخال عددين وجمعهما‪.‬وكذلك بقية العمليات‪.‬‬
‫•اله حاسبة بسيطة اذا أدخلت ‪ )+)a,‬او (‪ ))c,/ )b,-‬او (*‪)d,‬‬

‫أكتب برنامج لطباعة األرقام من ‪ n-1‬؟ ‪( for,while,do while‬تعليمة واجدة)‪.‬‬


‫أكتب برنامج اليجاد اكبر عنصر من ‪ n-1‬؟‬
‫أكتب برنامج اليجاد اقل عنصر من ‪ n-1‬؟‬
‫أكتب برنامج اليجاد اكبر و اقل عنصر من ‪ n-1‬؟‬
‫أكتب برنامج لجمع االعداد ‪ n-1‬؟‬

‫أكتب برنامج لطباعة االعداد الفرديه من ‪ n-1‬؟‬


‫أكتب برنامج لطباعة االعداد الزوجية من ‪ n-1‬؟‬

‫‪74‬‬
‫اذا كان لديك ‪ n=158027‬اوجد االتي‪:‬‬
‫‪‬مراتب العدد ‪ n‬؟ ‪6‬‬
‫‪‬مجموع العدد ‪ n‬؟ ‪23‬‬
‫‪‬اكبر رقم ؟ ‪8‬‬
‫‪‬اقل رقم ؟ ‪0‬‬
‫‪‬عكس الرقم ؟‪720851‬‬

‫اذا فرضنا ‪ n= -158027‬اوجد االتي‪:‬‬


‫‪‬مراتب العدد ‪ n‬؟ ‪6‬‬
‫‪‬مجموع العدد ‪ n‬؟ ‪23‬‬
‫‪‬اكبر رقم ؟ ‪8‬‬
‫‪‬اقل رقم ؟ ‪0‬‬
‫‪‬عكس الرقم ؟‪720851‬‬
‫‪75‬‬
‫اوجد قيمة المتسلسة االتيه‪:‬‬
‫‪n.…… 25 16 9 4 1‬‬
‫‪n..……15 10 6 3 1‬‬
‫‪0 1 2 3 5 8 11…..n‬‬

‫‪1‬‬ ‫*‬
‫‪12‬‬ ‫**‬
‫‪123‬‬ ‫***‬
‫‪1234‬‬ ‫****‬
‫‪12345‬‬ ‫*****‬
‫‪123456‬‬ ‫******‬
‫‪1234567‬‬ ‫*******‬
‫‪12345678‬‬ ‫********‬
‫‪123456789‬‬ ‫*********‬ ‫‪76‬‬
for (int i=0;i<x;i++)
{
for (int j=0;j<y;j++)
System.out.print(" ");
for (int k=0;k<z;k++)
System.out.print("*");

package project_doming;
if (y==0) b1=false;
public class Project_Doming {
if (z==x) b2=false;
public static void main(String[] args) {
int x=11;
y=b1?y-1:y+1;
int y=x/2;
z=b2?z+2:z-2;
int z=1;

boolean b1=true; System.out.println( );


boolean b2=true;
}
} 77
‫المصفوفات‬

‫قد تحتاج في بعض األحیان تخزین عدد كبیر من األرقام في الذاكرة خالل تنفیذ‬
‫البرنامج فال یمكن أن تقوم بتعریف متغیرات من أجل كل رقم ‪ ،‬جافا وضعت حدَا‬
‫لھذه المشكلة بما یدعى المصفوفات ‪. Array‬‬

‫أنواع المصفوفات ‪The Array Types‬‬

‫المصفوفات أحادیة البعد ‪)One-Dimensional Arrays(.‬‬


‫المصفوفات متعددة األبعاد ‪)Multidimensional Arrays(.‬‬
‫المصفوفات الغیر منتظمة ()‪.‬‬
‫‪78‬‬
‫المصفوفات أحادیة البعد ‪)One-Dimensional Arrays(.‬‬
‫المصفوفة أحادیة البعد ھي المصفوفة التي لھا بعد واحد فقط ‪ ،‬سطر واحد حسب‬
‫نوع المصفوفة (‪)int ,long,double ,char,String‬‬
‫التصریح عن المصفوفات‬
‫;‪datatype[10] namearray;//error‬‬

‫;‪datatype[] namearray‬‬
‫;][‪datatype namearray‬‬
‫ھذا التصریح لم یحجز مساحة على الذاكرة بل قیمته ‪.null‬‬
‫]‪;namearray = new datatype[arraysiza‬‬
‫لحجز مواقع للمصفوفه بحجم ‪.arraysiza‬‬
‫او تكون تعليمة واحده‬
‫‪79‬‬
‫;]‪datatype[] namearray=new datatype[arraysiza‬‬
‫مثال‬:
;int [] array1=new int[5]

;array1 [0]=23
;array1 [1]=38
;array1 [2]=14
;array1 [3]=99
array1 [4]=0;

:‫إعطاء قيم في التعريف‬

int [] array1={1,2,3,5}; 80
‫المصفوفات ثنائیة البعد ‪Tow-Dimensional Arrays‬‬

‫یمكن للمصفوفات في لغة جافا أن تأخذ عدة أبعاد‪ .‬ومن بین االستخدام ات الشائعة‬
‫لھذا النوع من الشائعة لھذا النوع من المصفوفات نجد الجدول ‪ Tables‬التي ھي‬
‫عبارة عن مجموعة من القیم المرتبة ضمن مجموعة من األسطر ‪rows‬‬
‫واألعمدة ‪columns.‬‬

‫;‪datatype[][] namearray‬‬
‫;][][‪datatype namearray‬‬

‫]‪;namearray = new datatype[arraysiza] [arraysiza‬‬

‫‪81‬‬
‫;]‪int [][] array1=new int[3][3‬‬
82
. array1 ‫ واسم المصفوفه وليكن‬j ‫ و‬i ‫لديها دليالن‬
array1 [0][0]=1
)‫ (مربعه‬3*3 ‫حجم المصفوفه هو‬.
:‫إعطاء قيم في التعريف‬
int [][] array1={{1,2,3},
{4,5,6},
{7,8,9}};
Or
array1[0][0]=1;
array1[0][1]=2;
array1[0][2]=3;
array1[1][0]=4;
array1[1][1]=5;
array1[1][2]=6;
array1[2][0]=7;
array1[2][1]=8;
array1[2][2]=9; 83
‫الحصول على طول المصفوفة‬
‫‪array1. length ====one dim‬‬

‫لطول الصفوف ‪arryaname.length //‬‬


‫لطول األعمدة ‪arrayname[0].length//‬‬
‫المصفوفات ذات البعد الثالثي‬

‫;]‪int threeD[][][] = new int[3][4][5‬‬


‫المصفوفات غیر المنتظمة‬
‫یمكن لصفوف المصفوفة امتالك أطوال مختلفة ‪ ،‬كھذا التعبیر‬

‫= ‪int[][] uneven‬‬
‫‪{ { 1, 9, 4 },‬‬
‫‪{ 0, 2},‬‬
‫;} } ‪{ 0, 1, 2, 3, 4‬‬ ‫‪84‬‬
‫‪:‬العمليات على المصفوفات‬
‫‪.‬االدخال والطباعه‬
‫‪.‬نسخ المصفوفه الى اخرى‬
‫‪.‬عكس المصفوفه الي اخرى‬
‫‪.‬عكس المصفوفه‬

‫‪.‬طباعة القطر الرئيسي‬


‫‪.‬طباعة القطر الفرعي‬

‫أكتب برنامج يجمع الخانات الفرديه ؟ الزوجيه؟‬


‫أكتب برنامج يعد االعداد الفرديه ؟ الزوجيه؟‬
‫أكتب برنامج یطبع العدد األكثر تكرارًا داخل المصفوفة ‪ ،‬ویطبع عدد مرات التكرار؟‬
‫أكتب برنامج یعمل على تبدیل العنصر األكبر مع العن صر األصغر ‪ ،‬وطباعة موقع كًال منھا؟‬
‫‪85‬أكتب برنامج یطبع العناصر الواقعة تحت القطر الرئیسي فقط؟‬
‫خوارزمیات ترتیب المصفوفات ‪Sort Algorithms‬‬
‫إحدى أبرز المشاكل في عالم الكمبیوتر ھي مشاكل الترتیب‪ .‬أي كیفیة ترتیب قائمة من‬
‫العناصر الغیر مرتبة ‪.‬‬
‫فھنالك العدید من الحلول لھذه المشاكل تعرف باسم خوارزمیات الترتیب ‪Sort‬‬
‫‪Algorithms‬‬

‫أشھر سبعة خوارزمیات للترتیب ھي‪:‬‬


‫خوارزمية الفقاعة ‪Bubble‬‬
‫•خوارزمية الحشر ‪Insertion‬‬
‫•خوارزمية التحدید ‪Selection‬‬
‫•خوارزمية التكویم ‪Heap‬‬
‫•خوارزمية الدمج ‪Merge‬‬
‫•خوارزمية السرعة ‪Quick‬‬
‫•خوارزمية الھیكل ‪Shell‬‬
‫‪86‬‬
‫خوارزمية الفقاعة ‪Bubble‬‬
‫‪ .‬االسهل االبطأ‬
‫تقوم ھذه الخوارزمیة بترتیب عناصر المصفوفة عنصرًا عنصرًا عن طریق‬
‫مقارنتھ بالعنصر الذي بعده‪ ،‬ویقوم بالتبدیل في موقعھما في المصفوفة متى ما‬
‫استلزم األمر‪ .‬تكرر ھذه الخوارزمیة ھذه الدورة على جمیع العناصر عنصرًا خلف‬
‫اآلخر‪.‬‬

‫‪87‬‬
package project_array1;
public class Project_Array1 {
public static void main(String[] args) {
int arr[] = {29,10,14,37,13};
for(int j =arr.length-1; j >=0 ; j--) {
for(int i = 1; i <=j ; i++) {
if(arr[i-1]< arr[i]) { for(int i =0;i<arr.length; i++)
int t = arr[i-1]; System.out.print(arr[i]+" ");
arr[i-1] = arr[i];
arr[i] = t; System.out.println("\n");
} }
} }
88
}
‫{ )‪for(int j =arr.length-1; j >=0 ; j--‬‬
‫{ )‪for(int i = 1; i <=j ; i++‬‬
‫{ )]‪if(arr[i-1]< arr[i‬‬
‫;]‪int t = arr[i-1‬‬
‫;]‪arr[i-1] = arr[i‬‬
‫;‪arr[i] = t‬‬
‫}‬
‫}‬

‫سمیت بالفقاعة ألن العنصر األصغر‪ /‬االكبر یصعد‬


‫‪.‬كالفقاعة إلى بدایة المصفوفة‬
‫‪89‬‬
‫خوارزمية الحشر ‪Insertion‬‬
‫نمثل ھذه الخوارزمیة باستخدام مصفوفة واحدة عن طریق حشر‬
‫العنصر في مكانھ الصحیح فیھا ثم عمل ‪ shift‬لبقیة العناصر وھكذا‬
‫ستتقسم المصفوفة الواحدة إلى قسمین‪ ،‬قسم بھ العناصر المرتبة وقسم بھ‬
‫العناصر الغیر مرتبة‬

‫‪90‬‬
package project_array2;
public class Project_Array2 {
public static void main(String[] args) {
public static void main(String[] args) {
// Insertion Sort Algorithm
int arr[] = {29,10,14,37,13};
int i; int j; int index;
for(j =0;j<arr.length; j++)
for( i = 1; i < arr.length; i++ ) System.out.print(arr[j]+" ");
{ index = arr[i]; j = i;
System.out.println("\n");
while( (j > 0) && (arr[j-1] < index) )
{ arr[j] = arr[j-1]; }
j = j - 1; } }
} 91
arr[j] = index;
‫‪// Insertion Sort Algorithm‬‬
‫;}‪int arr[] = {29,10,14,37,13‬‬
‫;‪int i; int j‬‬ ‫;‪int index‬‬
‫) ‪for( i = 1; i < arr.length; i++‬‬
‫;]‪{ index = arr[i‬‬ ‫;‪j = i‬‬
‫‪while( (j > 0) && (arr[j-1] < index‬‬
‫{‬ ‫;]‪arr[j] = arr[j-1‬‬
‫} ;‪j = j - 1‬‬
‫;‪arr[j] = index‬‬
‫}‬
‫من حیث السرعة مناسبة لتطبق على مصفوفة ذات ألف عنصر أو‬
‫أقل‪ .‬ھذه الخوارزمیة تعتبر أسرع مرتین من طریقة الفقاعة كما أنھ‬
‫‪92‬‬
‫‪.‬أسرع ‪ %40‬من الخوارزمية القادمة خوارزمیة التحدید‬
‫خوارزمية التحدید ‪Selection‬‬
‫تعمل ھذه الطریقة عن طریق تحدید أو اختیار أكبر ( أو أصغر)‬
‫عنصر غیر مرتب في المصفوفة‪ .‬ومن ثم تحریكھ كي یشغل‬
‫الحیز المتاح لھ في آخرھا‪ ،‬وھكذا لكل عنصر‪ .‬فتنتھي عملیة‬
‫الترتیب عندما ننتھي من تحریك جمیع العناصر‪.‬‬

‫‪93‬‬
package project_array3;
public class Project_Array3 {
public static void main(String[] args) {
// Selection Sort Algorithm
int arr[] = {29,10,14,37,13};
int i, j;
temp = arr[i];
int min, temp;
arr[i] = arr[min];
for( i = 0; i < arr.length-1; i++ )
arr[min] = temp;
{ min = i;
for(j =0;j<arr.length; j+
for( j = i+1; j < arr.length; j++ )
System.out.print(arr
{ if( arr[j] > arr[min] )
{
System.out.println("\
min = j; 94
// Selection Sort Algorithm
int arr[] = {29,10,14,37,13};
int i, j;
int min, temp;
for( i = 0; i < arr.length-1; i++ )
{ min = i;
for( j = i+1; j < arr.length; j++ )
{ if( arr[j] > arr[min] )
{
min = j;
‫في الحقیقة تعتبر ھذه الخوارزمیة أفضل من‬ }
‫ لكنھ لیس أفضل من‬،‫خوارزم الفقاعة بقلیل‬
}
‫خوارزم الحشر استخدمھ إن كان عدد عناصر‬
temp = arr[i];
1500 ‫مصفوفتك ال یتجاوز‬.
arr[i] = arr[min];
95
arr[min] = temp;
‫خوارزمیات البحث ‪Searching Algorithms‬‬
‫عادًة یقوم المبرمج بالتعامل مع مصفوفات كبیرة الحجم وبالتالي لتحدید أي‬
‫عنصر معین موجود في مصفوفة البد من استخدام طرق البحث ‪،‬‬

‫البحث الخطي )‪. (linear Search‬‬


‫البحث الثنائي )‪.(Binary Search‬‬

‫البحث الخطي )‪. (linear Search‬‬


‫یستخدم البحث الخطي للبحث عن عنصر معین داخل المصفوفة غیر المرتبة أو‬
‫المصفوفة المرتبة ‪ ،‬وفي ھذه الطریقة یتم مقارنة جمیع محتویات المصفوفة مع‬
‫القیمة المراد البحث عنھا وبشكل متسلسل من بدایة المصفوفة إلى نھایتھا‪.‬‬
‫مثال‪/‬‬

‫‪96‬‬
‫البحث الثنائي )‪.(Binary Search‬‬

‫ولكي نطبق أحد خوارزمیات ال التالیة‪:‬‬

‫الخطوة األولى واألھم والتي ال یمكن تطبیق ال ‪ Binary Search‬ھي ترتیب‬


‫المصفوفة تصاعدیًا أو تنازلیًا أو أبجدیًا على حسب نوع البیانات المخزنة فیھا‪.‬‬

‫تحدید أول عنصر في المصفوفة ولنسمه ‪ i‬وآخر عنصر فیھا ولنسمھ مثًال ‪.j‬‬
‫تحدید العنصر الذي یقع في منتصف ھذه المصفوفة ولنسمه ‪.k‬‬
‫بعد ذلك یمكننا تطبیق إستراتیجیة البحث الثنائي على المصفوفة‪ ،‬وھناك عدة خوارزمیات‬
‫للبحث الثنائي‪ ،‬أولھما‬
‫‪97‬‬
Binary Search Algorithm ‫خوارزمية البحث الثنائي‬

‫تقوم فكرة البحث الثنائي على تقسیم المصفوفة إلى نصفین واستبعاد النصف الذي ال ینتمي‬
‫ كیف ذلك؟‬،‫ الذي نبحث عنھ‬key ‫إلیھا المفتاح‬
package project_array4;
import javax.swing.*;
public class Project_Array4 {
public static void main(String[] args) {
int NumArray[]={0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28};
int result,key,max_size=15;
String s;
s=JOptionPane.showInputDialog("Enter the number which you want to
search for:");

98
int NumArray[]={0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28};

key=Integer.parseInt(s);
int i=0, j=max_size-1, k=(i+j)/2;
while(i<j && i!=k){
if (key == NumArray[k])
{ System.out.println("we found the key "+ key);
System.exit(0);
}
if (key > NumArray[k]){
else{
i=k;
if (key < NumArray[k]){
k=(i+j)/2;
j=k;
}
k=(i+j)/2;
} 99

}
‫‪:.‬عدد مرات البحث‬
‫من حجم المصفوفه ‪ 1+‬اذا كانت فرديه‬

‫‪N=15+1‬‬
‫)‪N=16 =(4^2‬‬
‫‪Loop=4‬‬

‫‪Suppose n=1024‬‬
‫‪N=1024=10^2= 10‬‬
‫‪100‬‬

You might also like