Lecture A Java Review
Lecture A Java Review
.1مفهوم Object
اذا اردت كتابة رساله فتحتاج الي قلم وورقه وطاولة وكرسي وربما حاسوب شخصي
جميع هذه األشياء الالزمة لكتابة الرسالة .وكل كائن له شكل معين ،و وظيفة
مميزة" objects. ،
فالطبيب كائن له وظيفة محددة وهى التطبيب،
لذلك objectهو اي شئ مميز له هوية ( له )Dataوسلوك () behavior
Encapsulation .2الكبسلة او التغليف
وضع كل من البيانات و العمليات (الدوال) في مكان واحد يساعد المبرمج على التعامل مع
الكائن بسهولة .
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
تعتبر من اللغات المشھورة بالتعامل مع ال تستطیع التعامل مع مواقع ذاكریھ أو مع
المنافذ فال تستطیع كتابة كود لیشغل قطع .الھاردویر
اشرح الطريقة
نغتح المفكره
نكتب برنامج الجافا.
نخزن الملف في مجلد binفي الجافا بنفس اسم الكالس الرئيسي بامتداد
.java
تكتب اسم البرنامج في خانة 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")
.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(.
عدة سطور.
سطر واحد.
ما الفائدة منها؟.
6.أصناف ( )Classes
األصناف تمثل البنیة األساسیة في لغة Javaحیث تمیزھا وتعطیھا أدوات قویة جدا ،وسیتم التطرق لھا في الفصول
القادمة بشكل واسع جدًا.
7.معدالت الوصول ()Modifiers
تستخدم Javaبعض الكلمات المفتاحیة لتحدید خصائص البیانات والدوال والفئات وكیفیة استخدام ھا ففي المثال
FristProgramتم استخدام الكلمة static ، publicوسیتم التطرق في الفصول القادمة.
8.الدالة الرئیسیة main :
وتعتبر أھم جزئ في البرنامج حیث ال یوجد برنامج یخلي من الدالة mainفتمنح ھذه الدالة القدرة على التحكم بتدفق
البرنامج.
amount
xyz
switch_8
A_very_long_Name
CustomersAmount
القیود المفروضة على األسماء Restrictions on Name
ماهي؟
التصریح عن المتحوالت Declaring a Variable
التصریح ()Declare
>; اسم المتحول > < ,أسم المتحول > " نوع المعطیات "
Char
وھي بدایة كلمة characterو یخّز ن في حجم من الذاكرة مقداره 2بایت.
هذا المتغّیر یخّز ن حرفًا واحدًا فقط.
و یكتب ھكذا محصورًا بین عال متي تنصیص مفردتین.
;'char key = 'u
و ھي المتغیرات التي یقوم المبرمج بتعریف نوعھا .مثل ال classesا لتي نقوم بكتابتھا في ملفات و برامج الجافا.
الثوابت Constants
;final datatype Constantname =value
فالكلمة finalھي كلمة مفتاحیھ في لغة جافا وتعني أن الثابت ال یمكن أن یتغیر.
;final double i = 0.045
سینتج خطاء بسبب محاولة تغیر قیمتة وھو من نوع ثابت i++;//
أنواع المتغیرات من ناحیة الوصول
متغیرات من نوع staticھذه المتغیرات نستطیع أن نقول إنھا نوع ثابت أي لیس
بمعنى أننا ال نستطیع تغیر قیمتھا ولكن قد تكون بداخل Classفنتعامل معھا مباشرة
أي كأنھا عامة فعند ترجمة البرنامج یتعرف علیھ المترجم مباشرة قبل الدخول إلى
الدالة الرئیسیة
المؤثرات Operators
المؤثرات ھي الرموز التي تربط بین المتغیرات والثوابت إلنشاء عالمة أو معادلة
تختلف أنواع المؤثرات باختالف وظیفة كل مؤثر
Arithmetic operators المؤثرات الحسابیة
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 أسبقیة العوامل وترتیب الحدود
بمعنى التبدیل بین أنواع البیانات مثل القناع وأحیانا ُیجبر المبرمج في استخدام ھذه العملیة.
عند تحویل نمط كبیر إلى صغیر فأنة من الضروري عمل 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
;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( الدوران
47
بنیة التكرار الحذ ()while
while Loop
48
تجاوز قوانین الحلقات Getting Around The Looping Rules
تملك لغة جافا عدة روتینان مسبقة التعریف تمكن من القیام بأعمال خاصة أثناء تنفیذ الحلقات .وھذه
اإلجراءات ھي break, continueووظیفة ھذه اإلجراءات تغیر انسیاب التحكم ()flow of control
ضمن البرنامج.
جملة ()break
49
) continue( جملة
50
جملة return .
تستطیع إیقاف تنفیذ البرنامج بھذه التعلیمة returnفھي تعمل على
إیقاف الدالة الرئیسیة mainوھذا المثال یبین ذلك
51
عمليات االدخال:
بطبيعة الحال د يخلو أي برنامج لو فائدة من جملة اإلدخال ,فهي
الجملة التي تربط البرنامج بالعالم الخارجي وهي الوسيلة الوحيدة
التي يستطيع فيها المستخدم إدخال القيم عن طريق لوحة المفاتيح
للحاسب ,حتى يقوم بمعالجة هذه القيم سواء كان البرنامج )برنامج
حسابات – قاعدة بيانات (......
52
الفصيلة Scannerتوجد داخل الباكيج java.utilلذلك عليك جلبه للبرنامج بواسطة
االمر
;import java.util.Scanner
وبذلك يمكننا استخدام عبارة اإلدخال Scannerفي البرنامج المطلوب .
53
54
55
56
Dialog Box عن طريق
57
JOptionPane.showInputDialog("Enter a number:");
} 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;
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أطبع تكعيب .
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,
74
اذا كان لديك n=158027اوجد االتي:
مراتب العدد n؟ 6
مجموع العدد n؟ 23
اكبر رقم ؟ 8
اقل رقم ؟ 0
عكس الرقم ؟720851
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;
قد تحتاج في بعض األحیان تخزین عدد كبیر من األرقام في الذاكرة خالل تنفیذ
البرنامج فال یمكن أن تقوم بتعریف متغیرات من أجل كل رقم ،جافا وضعت حدَا
لھذه المشكلة بما یدعى المصفوفات . Array
;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
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
= int[][] uneven
{ { 1, 9, 4 },
{ 0, 2},
;} } { 0, 1, 2, 3, 4 84
:العمليات على المصفوفات
.االدخال والطباعه
.نسخ المصفوفه الى اخرى
.عكس المصفوفه الي اخرى
.عكس المصفوفه
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
}
}
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
عادًة یقوم المبرمج بالتعامل مع مصفوفات كبیرة الحجم وبالتالي لتحدید أي
عنصر معین موجود في مصفوفة البد من استخدام طرق البحث ،
96
البحث الثنائي ).(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