You are on page 1of 603

‫بنائيات البيانات‬

‫‪ /7‬المصفوفات‬
‫والسجلت‬
‫السجلت ‪:‬‬

‫التي تشترك في وصف شيء واحد ‪ ،‬وكل حقل‬


‫يمثل وحدة بيانية مفردة ‪ .‬بهذا التعريف يمكن أن‬
‫يكون السجل صفا في مصفوفة ذات بعدين‬
‫بنائيات البيانات‬
‫‪ /7‬المصفوفات‬
‫والسجلت‬
‫السجلت ‪:‬‬
‫فقط الفرق بين السجل وصف المصفوفة أو بين‬
‫السجلت والمصفوفة عموما – أنه ل يشترط في‬
‫السجل أن تكون كل بياناته من نوع واحد بينما‬
‫يشترط ذل ك ف ي المص فوفة ؛ فالس جل يمك ن أن‬
‫يكون بع ض حقول ه حرفي ة‪ ،‬وبعضه ا رقمية‪،‬‬
‫وبعضها عددية ‪ ،‬وبعضها منطقية ‪.‬‬
‫بنائيات البيانات‬
‫‪ /7‬المصفوفات‬
‫والسجلت‬
‫السجلت ‪:‬‬
‫فمثل ف ي المص فوفة الثاني ة الت ي بها درجات‬
‫الطلب إذا أضفن ا عمودا ب ه أسماء الطلب‬
‫وعمودا آخر به هل الطالب ناجح أو راسب –‬
‫تكون المص فوفة ق د تحول ت إل ي سجلت تحتوي‬
‫على أسماء وأرقام وبيانات منطقية وبهذا التحول‬
‫ل تصلح كمصفوفة ‪.‬‬
‫بنائيات البيانات‬
‫‪ /7‬المصفوفات‬
‫والسجلت‬
‫السجلت ‪:‬‬
‫يت م تخزي ن الس جلت بنف س طريق ة المصفوفات‪،‬‬
‫أي أن الحقول تخزن بمواقع متجاورة في الذاكرة‬
‫إل أنه ليس لحقوله ا مؤشرات مباشرة يتم على‬
‫ضوئه ا حس اب موق ع العنص ر‪ ،‬وإنما هناك‬
‫معرفات أ و أس ماء للحقول تمث ل عناوين للحقول‬
‫مثلها مثل الوحدات البيانية البسيطة ‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫يتألف برنامج باسكال من ثلث أجزاء هي ‪:‬‬


‫أ ‪ .‬رأ س ال برنامج ‪ :‬هو جزء اختياري ل يؤثر‬
‫عل ى ال برنامج ويبدأ بكلم ة ‪ program‬يعقبها‬
‫اسم يدل على طبيعة البرنامج ‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫يتألف برنامج باسكال من ثلث أجزاء هي ‪:‬‬


‫ب ‪ .‬جزء التعريفات أ و العلنات ‪ :‬هو الجزء‬
‫الذي يتم فيه العلن عن الجمل المستخدمة في‬
‫البرنامج ويتم العلن عن ‪:‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫العلن‪ :‬عنها‬
‫أجزاء هي‬
‫ثلثخلل‬‫من من‬
‫باسكالالتي‬ ‫برنامج‬
‫الوحدات‬ ‫يتألف‬
‫أسماء‬ ‫ب‪.‬‬
‫نتمكن من استخدام بعض الدوال المتاحة في لغة‬
‫باس كال ويتم العلن ع ن هذه الوحدات بواسطة‬
‫عبارة ‪Uses‬ويعقبه ا اسم الوحدة المراد‬
‫العلن عنها فمثل ‪:‬‬
‫‪; Uses Dos‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬
‫فيتم من خلل هذا العلن التعامل مع كافة الدوال‬
‫والعبارات التي تحتوي عليها الوحدة ‪Dos‬‬
‫• الثوابت ‪.Const‬‬
‫• التعريفات الجديدة المستخدمة بواسطة كلمة ‪. Type‬‬
‫• اللفتات ‪. Label‬‬
‫• المتغيرات ‪.‬‬
‫• الجراءات المستخدمة بواسطة كلمة ‪. Procedure‬‬
‫• الدوال المستخدمة بواسطة كلمة ‪. Function‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫ليس من الضروري إستخدام جزء العلنات في‬


‫البرنامج كله او جزء منه ولكن حسب إحتياجات‬
‫البرنامج ‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫الجزءهي ‪:‬‬
‫الساسي‬ ‫هوأجزاء‬
‫من ‪:‬ثلث‬ ‫باسكال‬
‫برنامج‬ ‫برنامج م ال‬
‫جزء جس‬ ‫يتألف‬
‫ج‪.‬‬
‫وه و ضروري لكتاب ة أ ي برنام ج يبدأ بكلمة‬
‫‪ Begin‬وينتهي بكلمة ‪ End‬وبينهما مجموعة‬
‫من العبارات التي تشكل البرنامج ‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫يت م ف ي لغ ة باس كال أولً تعري ف ال برنامج‪ ،‬ثم‬


‫تعري ف الثواب ت‪ ،‬وتعري ف المتغيرات البسيطة‬
‫بأنواعها المختلفة‪،‬وتعريف المصفوفات‪ ،‬وتعريف‬
‫السجلت ‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫يمك ن توضي ح ذلك بالمثال أدناه‪ :‬هذه التعريفات‬


‫تبدأ أولً بتعري ف ال برنامج بع د كلمة‬
‫(‪ ،)Program‬ويعرف ال برنامج باسمه الذي‬
‫يختاره (المبرمج) ‪ ،‬ثم تضع بين قوسين إن كان‬
‫هناك مخرجات أ و مدخلت ف ي ال برنامج أو‬
‫مخرجات فقط ‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫بع د ذل ك تعرف الثواب ت بع د كلم ة(‪ ) Const‬إذ‬


‫أن الثوابت هي العناوين التي ل تقبل تغير قيمها‬
‫في الذاكرة ‪ ،‬ولذا لبد من تعريفها للحاسوب منذ‬
‫البداية ‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫بع د الثواب ت يبدأ تعري ف المتغيرات ‪ ،‬وه ي إما‬


‫أعداد حقيقي ة ‪ ،‬أ و أعداد رقمي ة أ و منطقي ة أو‬
‫حرفي ة ويت م ذل ك بع د كلمة (‪ ) var‬ويحدد نوع‬
‫المتغيرات بع د كتاب ة أس ماء المتغيرات وفصلها‬
‫عن بعضها بشولة وختمها بعلمة (‪):‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫أم ا المص فوفات فتعرف بع د كتاب ة أسماء‬


‫المتغيرات وعم ل علم ة (‪ ):‬كم ا ف ي حالة‬
‫المتغيرات السابقة بإضافة كلمة (‪ ، )array‬أي‬
‫مصفوفة تتبعها بين قوسين بُع د المصفوفة وإن‬
‫كان ت هناك ابعاد مركب ة للمص فوفة يفص ل بين‬
‫البعد والخر بعلمة شولة ‪،‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫وعادة يوصف البُع د من ‪ 1‬إلي حد البعد ثم يلي‬


‫ذلك كما في حالة المتغيرات البسيطة تعرف نوع‬
‫البيانات هل رقمية أم عددية أم حرفية أم منطقية‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫أم ا تعري ف الس جل فأكث ر تعقيدا فنبدأ أول بكلمة‬


‫(‪ ، )type‬يتبعها اسم السجل ثم تساوي سجل ثم‬
‫يلي ذلك تعريف الحقول ‪ ،‬وبعد ذلك مثلما تم مع‬
‫المتغيرات البس يطة ‪ ،‬ولن الس جلت ه ي كما‬
‫ذكرنا تمثل صفوفا في المصفوفات كان لبد من‬
‫تعريف مصفوفة تكون بياناتها من السجلت‪،‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫وبهذا تكون لغ ة باس كال ق د تحايل ت على‬


‫المص فوفة بجع ل وحدته ا البياني ة م ن نوع بياني‬
‫واحد هو السجل ولكن في الواقع يتكون السجل‬
‫من أنواع شت ي م ن ال بيانات وهذه تعت بر من‬
‫ميزات لغة باسكال ولغة سي ‪.‬‬
Program;) Example )input, output
Uses
Graph, Dos, Crt;
Const
No_stud = 50;
low_marks = 5;
high_marks =100;
;subj = 9
qu = 5;
Label
Stop, L1 ;
Type
Student_record = record
Total : integer;
Order : integer;
End
Var
root1, root2 : real ;
count, I : integer ;
Found : Boolean;
Filler : char ;
S_names :array [ 1..No_stud] of char ;
S_marks : array[ 1..No_stud,1..subj] of
Byte;
S_d :array [1..No_stud,1..subj,1..qu] of Word;
Stud_pass :array [1..no_stud] of Boolean;
students :array [1..50] of Student_record ;
Rec : Student_record;
Procedure proc_name
Begin

End;
Function f_name)p_var : var_type( :
return_type ;
Begin
.
func_name := value;
End;
Begin

End.
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫يمكن كتابة ذلك باللغة العربية بشكل يماثل لغة‬


‫باسكال علي النحو التالي ‪:‬‬
‫برنامجمثال(ادخال واخراج)‬
‫وحداتدوس‪ ،‬رسم ;‬
‫ثوابتعدد الطلب =‪; 50‬‬
‫اقل درجة = ‪; 50‬‬
‫اعلي درجة ;‬
‫المواد =‪; 9‬‬
‫السئلة = ‪; 5‬‬
‫عنوانتوقف‪ ،‬ل‪; 1‬‬
‫أنواع سجل طلب = سجل‬

‫نهاية‬
‫المتغيراتالجزر‪ ، 1‬الجزر‪ : 2‬عدد حقيقي ;‬

‫إجراءاتاسم الجراء ;‬
‫بداية‬

‫نهاية ;‬
‫دالةاسم الدالة (المتغير المرسل ‪ :‬نوعه) نوع القيمة الراجعة ;‬
‫بداية‬

‫نهاية ;‬
‫بداية‬
‫نهاية‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫مثال (‪:)4‬‬
‫اكتب شفرة توضح كيفية العلن عن سجل‬
‫يسمي عناوين ويحتوي على البيانات التالية‪:‬‬
‫السم ‪ 30‬حرف ‪ ،‬الشارع ‪ 30‬حرف‪ ،‬المدينة‬
‫‪ 30‬حرف ‪ ،‬الولية ‪ 30‬حرف ‪ ،‬الرمز رقمي‬
‫‪Type‬‬ ‫‪address = record‬‬ ‫النوع العنوان = سجل‬
‫; ‪name :array [1.. 30] of char‬‬ ‫السم ‪ :‬مصفوفة[ ‪ ] 30 ..1‬حرفية ;‬
‫الشارع ‪ :‬مصفوفة[ ‪ ] 30 ..1‬حرفية ; ; ‪street :array [1.. 30] of char‬‬
‫; ‪city :array [1.. 30] of char‬‬ ‫المدينة ‪ :‬مصفوفة[ ‪ ] 30 ..1‬حرفية ;‬
‫; ‪state :array [1.. 30] of char‬‬ ‫الولية ‪ :‬مصفوفة[ ‪ ] 30 ..1‬حرفية ;‬
‫; ‪code : integer‬‬ ‫الرمز ‪ :‬رقمي ;‬
‫;‪End‬‬ ‫نهاية ;‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫هذا الس جل يتكون م ن خمس ة حقول ك ل حقل عبارة‬


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

‫ونف س الش ي ت م بالنس بة للشارع والمدين ة والولية ‪.‬‬


‫أم ا رق م أ و رم ز الولي ة فه و رق م واح د ‪ .‬وحت ى يتم‬
‫التعام ل م ع هذا الس جل ف ي خزن ال بيانات نحتاج إلي‬
‫تعريف متغير على النحو التالي ‪:‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬
‫‪Var‬‬
‫;‪Students : array [ 1..50 ] of address‬‬
‫;‪Line : address‬‬
‫متغيرات‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫هنال ك مص فوفة متغيرة أ ي أ ن بياناتها متغيرة‬


‫ونوع بياناته ا س جلت م ن نوع س جل العناوين‬
‫تس مي الطلب أ و (‪ ) students‬وكذلك هناك‬
‫متغير واحد بسيط اسمه عنوان ‪ ،‬ولكنه من نوع‬
‫سجل العناوين‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫فمثل ف ي مص فوفة الطلب عندما تقرأ "الطلب‬


‫(‪ . )24‬السم (‪ " )1‬نعنى الحرف الول من اسم‬
‫الطلب رقم ‪ 24‬في سجلت الطلب ‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫أم ا عندم ا تقول " عنوان ‪ .‬رم ز " نعن ي قيمة‬


‫الحقل رمز في السجل عنوان ‪ .‬أما عندما تقول "‬
‫عنوان " نعني كل بيانات السجل عنوان ومثلها‬
‫عندم ا تقول طلب (‪ )5‬نعن ى ك ل بيانات سجل‬
‫الطالب رقم ‪ 5‬في المصفوفة ‪،‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫وم ا دام الس جل ف ي المص فوفة يت م التعام ل معه‬


‫كامل كعنصر من عناصر المصفوفة فإن تخزين‬
‫الس جلت داخ ل المص فوفة يت م بنف س طريقة‬
‫تخزين العناصر البسيطة في المصفوفة مثل ‪:‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫عندما تقول الطلب (‪ )50‬نعني كل سجل الطالب‬


‫الخي ر ف ي قائم ة الطلب وعندما نقول الطلب‬
‫(‪ )1‬نعني كل سجل الطالب الول ‪ ،‬وعندما نقول‬
‫الطلب (‪ )2‬نعني كل سجل الطالب الثاني ‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫بهذا يكون المجاور لس م الطال ب الول ه م اسم‬


‫الشارع ف ي عنوان الطال ب الول ولي س إسم‬
‫الطال ب الثاني‪.‬أم ا الطال ب الثان ي فيجاور رمز‬
‫الولية في عنوان الطالب الول‪ ،‬وهكذا ‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫أم ا عدد مواق ع التخزي ن ف ي مصفوفة الطلب‬


‫فتساوي عدد الطلب مضروبا في عدد العناوين‬
‫أو المواقع في سجل العناوين أي تساوي ‪× 50‬‬
‫‪ 6050 = 121‬موق ع ‪ .‬يمك ن وص ف وضعها‬
‫على النحو التالي‪ :‬نفترض أن الموقع ‪ 500‬هو‬
‫الموقع الساسي بالذاكرة ‪.‬‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫هذا الموق ع س يكون الحرف الول م ن السم‬


‫الول‪ ،‬ثم تنتهي حروف السم الول في الحرف‬
‫رق م ‪ 30‬وهذه تأخ ذ عنوان مص فوفة تسمي‬
‫الس م‪ ،‬تليه ا مص فوفة الشارع الت ي تتكون كذلك‬
‫من ‪ 30‬حرفا بمعدل موقع لكل حرف‬
‫بنائيات البيانات‬
‫‪ /8‬الشكل العام للبرنامج‬
‫في لغة باسكال‬

‫ثم مصفوفة المدينة التي تتكون من ‪ 30‬حرفا ثم‬


‫مصفوفة الولية التي تتكون من ‪ 30‬حرفا ثم رمز‬
‫الولية الذي يأخذ موقعا واحدا فقط فيكون مجموع‬
‫المواقع لكل سجل ‪ 121‬موقعا للعنصر الول في‬
‫المصفوفة ( الطلب ) التي تتكون من ‪ 50‬سجل ‪.‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫تس تخدم لغ ة باسكال العبارتين‪Writeln,Write‬‬


‫لكتاب ة المعلومات عل ى الشاش ة أ و عل ى ملف‬
‫محدد‪ ،‬والفرق الوحيد بينهما أن عبارة ‪Writeln‬‬
‫تنقل المؤشر إلى سطر جديد بعد إظهار أو كتابة‬
‫المعلومات (عبارات التحكم في ملحق (أ))‪.‬‬
‫بنائيات البيانات‬
‫ عبارتي الخراج والدخال في‬/9
‫لغة باسكال‬

Year := 2002;
Writeln )‘ Sudan ‘(;
Write )‘ Tabat ‘(;
Writeln )2000(;
Writeln;
Writeln )‘ Exam ‘ , year(;
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫عن د تنفي ذ الشفرة (جزء م ن البرنامج) يكون‬


‫الخراج على النحو التالي ‪:‬‬
‫‪Sudan‬‬
‫‪Tabat 2000‬‬

‫‪Exam 2002‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫‪ /1‬يمكن تكون عبارتي الخراج‬


‫(‪ )Writeln,Write‬الشياء التالية ‪:‬‬
‫• ثابت عددي أو سلسي ( محصور بين فاصلتين‬
‫علويتين) فيكون الخراج نفس الثابت ‪.‬‬
‫• متغير فيكون الخراج قيمة المتغير ‪.‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫• تعبير جبري فيكون الخراج قيمة التعبير‬


‫الجبري ‪.‬‬
‫• لشيء فيكون الخراج سطرا فارغا إذا‬
‫استخدمنا عبارة ‪Writeln‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫‪ /2‬إذا كان أول متغير بعد عبارتي الخراج‬


‫(‪ )Writeln ,Write‬اسما لملف فتتم الكتابة‬
‫على الملف وإل سوف تتم الكتابة على جهاز‬
‫الخرج الساسي ‪.‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫تستخدم لغة باسكال العبارتين‬


‫‪ Readln,Read‬لقراءة المعلومات من لوحة‬
‫المفاتيح أو من ملف حسب المتغير الول كما‬
‫ذكرنا في عبارتي الخراج ‪.‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫مثال (‪:)6‬‬
‫المثال التالي يوضح الفرق بين عبارتي‬
‫‪ ، Readln,Read‬افترض أن هناك ملف يشار‬
‫إليه بالمتغير‪ FileName‬يحتوي على‬
‫المعلومات التالية ‪:‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫مثال (‪:)6‬‬
‫‪10 20 30 40‬‬
‫‪50‬‬
‫المطلوب ما هي قيمة المتغير ‪ D‬عند تنفيذ‬
‫العبارتين التاليتين ‪:‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫مثال (‪:)6‬‬

‫; (‪ReadLn )Filename ,A,B,C‬‬


‫; (‪ReadLn )Filename, D‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫يتم إسناد القيم ‪ 30 , 20 , 10‬للمتغيرات‬


‫‪ A,B,C‬على الترتيب بواسطة الستدعاء الول‬
‫للعبارة ‪ Readln‬وينتقل بعدها المؤشر إلي‬
‫سطر جديد بالملف وعليه فأن القيمة ‪ 50‬تقرأ‬
‫بواسطة الستدعاء الثاني للعبارة ‪Readln‬‬
‫وتسند للمتغير ‪ D‬ويتم تجاهل القيمة ‪. 40‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫وعند إستبدال عبارتي ‪ Readln‬ب ‪Read‬‬


‫; (‪Read )Filename ,A,B,C‬‬
‫; (‪Read )Filename , D‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫فيتم اسناد القيم ‪ 30 , 20 , 10‬للمتغيرات‬


‫‪ A,B,C‬على الترتيب بواسطة الستدعاء الول‬
‫للعبارة ‪ Read‬ويبقي المؤشر في نفس السطر‬
‫بالملف وعليه فأن القيمة ‪ 40‬تقرأ بواسطة‬
‫الستدعاء الثاني للعبارة ‪ Read‬وتسند للمتغير‬
‫‪.D‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫مثال (‪:)7‬‬

‫اكتب برنامجا بلغة باسكال يقوم بحساب مساحة‬


‫الدائرة التي نصف قطرها ‪ r‬علما بأن مساحتها‬
‫تحسب وفقا للمعادلة ‪area = πr2‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫;‪Const pi=3.14‬‬ ‫الثوابت باي = ‪; 3.14‬‬


‫‪Var‬‬ ‫متغيرات‬
‫; ‪Area , r : real‬‬ ‫مساحة ‪ ،‬نق ‪ :‬حقيقي ;‬
‫‪Begin‬‬ ‫البداية‬
‫اكتب (" ادخل قيمة نصف القطر"); ;(’ أدخل قيمة نصف القطر‘) ‪Write‬‬
‫; (‪Readln )r‬‬ ‫أقرأ (نق) ;‬
‫; ‪Area:=pi *r*r‬‬ ‫المساحة = باي × نق × نق ;‬
‫;(‪‘ , area‬مساحة الدائرة‘)‪Writln‬‬ ‫اكتب (”مساحة الدائرة‪;) ”area‬‬
‫;‪End‬‬ ‫النهاية ;‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬

‫مثال (‪:)8‬‬
‫اكتب برنامجا بلغة باسكال يقوم بحساب مساحة‬
‫أي مثلث قائم الزاوية ارتفاعه ‪ a‬وقاعدته ‪ b‬علما‬
‫بأن مساحة المثلث تحسب وفقا للمعادلة التالية‬
‫‪Area‬‬ ‫=‬ ‫‪1/2 ab‬‬
‫بنائيات البيانات‬
‫‪ /9‬عبارتي الخراج والدخال في‬
‫لغة باسكال‬
‫‪Var‬‬ ‫المتغيرات‬
‫; ‪Area , a ,b : real‬‬ ‫المساحة ‪ ،‬أ ‪ ،‬ب ‪ :‬حقيقي ;‬
‫‪Begin‬‬ ‫البداية‬
‫;( ‘أدخل قيمة طول الرتفاع‘) ‪Write‬‬ ‫اكتب (” أدخل قيمة طول الرتفاع”) ;‬
‫; (‪Readln )a‬‬ ‫أقرأ (أ) ;‬
‫;(’ أدخل قيمة طول القاعدة‘) ‪Write‬‬ ‫اكتب (”أدخل قيمة طول القاعدة ”) ;‬
‫; (‪Readln )b‬‬ ‫أقرأ (ب) ;‬
‫; ‪Area:=a *b/2‬‬ ‫المساحة = أ×ب\‪; 2‬‬
‫;(‪ = ’, Area‬المساحة‘)‪Writln‬‬ ‫اكتب (”مساحة المثلث =”‪،‬المساحة);‬
‫;‪End‬‬ ‫النهاية ;‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬

‫هناك معالجات تتفق فيها كل لغات البرمجة في‬


‫التعامل مع أنواع البيانات المختلفة ‪ .‬نذكر منها‬
‫على سبيل المثال ‪:‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬
‫أ‪ /‬معالجات العداد الحقيقية ‪:‬‬
‫الضرب "*" ‪ :‬عدد حقيقي في عدد حقيقي أو في‬
‫رقم يكون الناتج عددا حقيقيا ‪.‬‬
‫القسمة "‪ : "/‬عدد حقيقي علي عدد حقيقي أو‬
‫رقم علي رقم يكون الناتج عددا حقيقيا ‪.‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬
‫أ‪ /‬معالجات العداد الحقيقية ‪:‬‬
‫الجمع "‪ : "+‬عدد حقيقي مع عدد حقيقي أو مع‬
‫رقم تنتج عددا حقيقيا ‪.‬‬
‫الطرح " – " ‪ :‬عدد حقيقي مع عدد حقيقي أو‬
‫مع رقم تنتج عددا حقيقيا ‪.‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬

‫أ‪ /‬معالجات العداد الحقيقية ‪:‬‬


‫‪ : )abs)x‬القيمة المطلقة للعدد (‪ )x‬وبالطبع‬
‫القيمة المطلقة ل تتغير من نوع العدد‪.‬‬
‫‪ : )Sqr)x‬المربع لي عدد ينتج عددا حقيقيا ‪.‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬
‫أ‪ /‬معالجات العداد الحقيقية ‪:‬‬
‫جا (‪ ))sin )x‬وجتا ‪ )))cos )x‬ومعكوس الظل‬
‫(‪ ))arctan)x‬واللوغريثم الطبيعي ((‪Lnx‬‬
‫والقوى ‪ )exp)x‬الجذر التربيعي ‪ )sqrt)x‬كلها‬
‫دوال تنتج عددا حقيقيا سواء أكانت قيمة ‪ x‬رقما‬
‫أم عددا ‪.‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬
‫ب‪ /‬معالجات العداد الرقمية ‪:‬‬
‫الضرب "*" ‪ :‬ضرب الرقام ( عدد صحيح )‬
‫ينتج أرقاما ‪.‬‬
‫القسمة "‪ : "/‬قسمة الرقام ل تنتج أرقاما بل‬
‫تنتج أعداد حقيقية ‪.‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬

‫ب‪ /‬معالجات العداد الرقمية ‪:‬‬


‫الجمع "‪ : "+‬الجمع للرقام ينتج أرقاما ‪.‬‬
‫الطرح " – " ‪ :‬الطرح للرقام ينتج أرقاما ‪.‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬

‫ب‪ /‬معالجات العداد الرقمية ‪:‬‬


‫‪ :)Y DIV)x‬هذه قسمة تنتج رقما بكشط الكسر‬
‫الناتج بعد قسمة ‪ y‬على ‪.x‬‬
‫‪ :)Y mod)x‬هذه تنتج رقما باقي قسمة ‪y‬على ‪.x‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬
‫ب‪ /‬معالجات العداد الرقمية ‪:‬‬
‫‪ : )Sqr)x‬هذه دالة المربع وبالطبع تنتج رقما إذا‬
‫كان ‪ x‬رقماً ‪.‬‬
‫‪ :)Trunk )x‬هذه تنتج من العدد الحقيقي ‪ x‬رقما‬
‫بكشط الكسر ‪.‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬

‫ب‪ /‬معالجات العداد الرقمية ‪:‬‬


‫‪ :)Round )x‬هذه تنتج من العدد الحقيقي ‪x‬‬
‫رقما بتقريب الكسر‪.‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬
‫ج‪ /‬معالجات الحروف ‪:‬‬

‫‪ ،‬والرقام ‪ ،‬وحرف الفراغ‪ .‬هناك دالتان في لغة‬


‫باس كال وف ي غال ب لغات البرمج ة تتعام ل مع‬
‫ال بيانات الحرفي ة وه ي الدال ة ‪ )ord)c‬والدالة‬
‫‪. )chr)i‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬
‫ج‪ /‬معالجات الحروف ‪:‬‬

‫الحروف (‪ )C‬من جدول ترميز الحروف ‪ ،‬بينما‬


‫الدال ة الثاني ة ‪ )chr)i‬تعني الحرف الذي رمزه‬
‫يساوي (‪.)i‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬
‫ج‪ /‬معالجات الحروف ‪:‬‬
‫وبما أن الدالة ‪ )ord)c‬ناتجها رقم فإنه بإلمكان‬
‫إجراء أو تطبيق كل العمليات التي تتم على الرقام‬
‫عليها‪ ،‬مثل عملية أكبر من‪ ،‬و أصغر من ويساوي‬
‫وك ل تركيباته ا لن ف ي ذل ك أهميت ه ف ي التساول‬
‫والستفسار عن ترتيب السماء مثل ‪:‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬

‫ج‪ /‬معالجات الحروف ‪:‬‬

‫الدالة ‪ )ord)c‬والدالة ‪ )chr)i‬متعاكستان أي أن‪:‬‬


‫‪. Ord )Chr )i( ( =i ,Chr )ord )c( ( =c‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬

‫د‪ /‬معالجات البيانات المنطقية ‪:‬‬


‫)‪AND‬تحقق كل الشروط) ينتج عنها قيمة منطقية‪.‬‬
‫‪( OR‬تحقق أي شرط) ينتج منها قيمة منطقية‪.‬‬
‫‪(NOT‬نفي الشرط) ينتج منها قيمة منطقية‪.‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬

‫د‪ /‬معالجات البيانات المنطقية ‪:‬‬


‫أقل من أو يساوي <= ينتج منه قيمة منطقية ‪.‬‬
‫يساوي = تنتج منه قيمة منطقية ‪.‬‬
‫ل يساوي <> ينتج منه قيمة منطقية ‪.‬‬
‫البيانات‬
‫‪ /10‬معالجات الحاسوب‬
‫بنائيات‬
‫البيانات‬ ‫لنواع‬
‫في لغة باسكال‬
‫د‪ /‬معالجات البيانات المنطقية ‪:‬‬
‫‪ )Odd)X‬ينتج منه قيمة منطقية وهي تحقق‬
‫فردية ‪.X‬‬
‫‪ )Eol )f‬ينتج منه قيمة منطقية وهي تحقق انتهاء‬
‫السطر ‪.‬‬
‫‪)Eof)f‬ينتج منه قيمة منطقية وهي انتهاء الملف‪.‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫تحتوي على بعض البنائيات البيانية البسيطة ‪ ،‬أو‬


‫المتغيرات البس يطة ‪ ،‬والبنائيات المركب ة مثل‬
‫المص فوفات ومص فوفات الس جلت ولك ن هنالك‬
‫بنائيات أكثر تعقيدا وتستطيع أن تتعامل مع بعض‬
‫التطبيقات بكفاءة عالية‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫ولكنه ا غي ر موجودة ف ي لغات البرمج ة ؛ لنها‬


‫تحتاج إل ي برمجيات خاص ة تمك ن م ن التعامل‬
‫معها ‪ .‬هذه البنائيات تعرف بالبنائيات المتجردة ‪.‬‬
‫إذن البنائية المتجردة هي عبارة عن بنائية بيانية‬
‫زائدا البرمجيات التي تمكن من التعامل معها ‪.‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫ولما كانت العمليات التي تتم على البنائية البيانية‬


‫هي في الغالب إضافة وحدة بيانية أو حذفها ‪ ،‬لذا‬
‫تص مم البنائي ة المتجردة عادة لتكون مناسبة‬
‫للطريق ة الت ي يت م به ا الضافة والحذف مثل‬
‫البنائية التي تعرف بالمكدسات ( ‪ ) stacks‬يتم‬
‫فيها الحذف والضافة من اتجاه واحد‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫مث ل طريق ة التخزي ن عموم ا حي ث يت م سحب‬


‫الشياء الت ي وص لت أخيرا قب ل الس ابقة ‪ ،‬وهنا‬
‫يعرف بنظام ليفو (‪ ) lifo‬لتكدس الشياء بعضها‬
‫فوق بع ض ولي س بالمكان س حب الس فلي قبل‬
‫العلي ا ‪ ،‬إذن بنائي ة المكدس تناس ب تطبيقات‬
‫المخازن عموما ‪.‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫أما المثال الثاني للبنائيات المتجردة فهو البنائية‬


‫الت ي تعرف بالص فوف (‪ ) queues‬الص ف يتم‬
‫فيه الضافة الحذف من اتجاهين متعاكسين مثل‬
‫الص ف تمام ا ‪ ،‬حي ث أ ن أول م ن وص ل هو أول‬
‫من خرج‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫وهنا يعرف بنظام فيفو (‪ ) fifo‬وبنائية الصفوف‬


‫تناسب كل تطبيقات الصفوف التي عادة ما يؤخذ‬
‫فيها الخدمة السابقة قبل اللحق ‪.‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫هناك بنائي ة متجردة م ن أكثر البنائيات المتجردة‬


‫مرونة تعرف بالقوائم المتصلة ‪ ،‬وهي عبارة عن‬
‫سجلت ك ل س جل ل ه تكوين ه الخاص ‪ .‬ليس‬
‫بالضرورة أن تأخذ كل السجلت شكل واحد ‪.‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫الشكل العام للسجل أن يكون به حقل يخزن فيه‬


‫عنوان ومواق ع الس جل التال ي ل ه في الذاكرة ‪،‬‬
‫إضاف ة إل ي حق ل واح د أ و أكثر يحوي الوحدات‬
‫البياني ة ف ي الس جل ‪ .‬يعرف الس جل ف ي القوائم‬
‫المتص لة بالعقدة (‪ ) node‬ويعرف حق ل موقع‬
‫السجل التالي بالمؤشر ‪.‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫هناك عقدتان أساسيتان في القوائم المتصلة هي‬


‫العقدة الول ي الت ي لي س هناك عقدة تحفظ‬
‫عنوانه ا أ و تشي ر إليه ا‪ ،‬وتعرف برأ س القائمة‪،‬‬
‫والعقدة الخيرة التي ليس بها عنوان عقدة أو ل‬
‫تشير لعقدة تالية لها تعرف بذيل القائمة‪،‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫ولك ن لن بالضرورة هناك عنوان ا ف ي أي عقدة‬


‫فإ ن ذي ل القائم ة تشي ر إل ي عقدة وهمي ة تعني‬
‫نهاية القائمة‪ .‬هذه البنائية تناسب الملفات متغيرة‬
‫السجلت ‪.‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫عقدة‬ ‫عقدة‬ ‫عقدة‬


‫المؤشر‬ ‫المؤشر‬ ‫المؤشر‬ ‫المؤشر‬
‫النهاية‬ ‫السجل‬ ‫السجل‬ ‫السجل‬
‫الذيل‬ ‫الرأس‬
‫عنوان العقدة‬ ‫عنوان العقدة‬ ‫عنوان عقدة عنوان العقدة‬
‫الوهمية‬ ‫التالية‬ ‫التالية‬ ‫الرأس‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫القوائم المتصلة‬
‫إضافة إلي هذه المثلة الثلث يمكن اعتبار قاعدة‬
‫ال بيانات الت ي يت م تص ميمها بواسطة برمجيات‬
‫قواعد البيانات مثل برنامج إس كيو أل (‪ )sql‬أو‬
‫أوراكل أو فكس برو بنائية متجردة‪ ،‬وهي تناسب‬
‫المجموعات البيانية الضخمة والمتداخلة‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫القوائم المتصلة‬
‫مث ل بيانات عملء البن ك الس اسية‪ ،‬وحركة‬
‫حس اباتهم ف ي الحس ابات المختلف ة‪ ،‬كالحساب‬
‫الجاري والس تثمار وغيره‪ ،‬وتعامله م في الفرع‬
‫المختلف ة ومقاضاته م م ع البنوك الخري داخليا‬
‫وخارجيا‪،‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫القوائم المتصلة‬
‫ومثال آخ ر بيانات حرك ة الطيران في الخطوط‬
‫المختلف ة وحجوزات العملء وبيانات المسافرين‪،‬‬
‫امتعتهم وحركة البضائع ‪.‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫القوائم المتصلة‬
‫ومثال آخ ر بيانات الشرط ة الت ي تشم ل البطاقة‬
‫الشخص ية‪ ،‬والجنسية‪ ،‬والجوازات‪ ،‬ودخول‬
‫وخروج المواطني ن والجان ب ‪ ،‬وملفات الجرائم‬
‫والمشبوهين وغيرها ‪.‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫القوائم المتصلة‬
‫إ ن ك ل النظم ة الت ي تتعام ل م ع بيانات ضخمة‬
‫ومختلف ة ومتداخل ة تناس بها تط بيقات البنائية‬
‫المتجردة الت ي تعرف بقواع د البيانات العلئقية‪.‬‬
‫فمثل في المثال السابق بيانات العملء تمثل قاعدة‬
‫بيانات‪،‬‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬
‫القوائم المتصلة‬
‫وبيانات المس افرين تمثل قاعدة بيانات‪ ،‬وبيانات‬
‫البضائع تمثل قاعدة بيانات وحركة الطيران تمثل‬
‫قاعدة بيانات‪ ،‬وهكذا‪ .‬وكله ا عن د ربطه ا مع‬
‫بعضه ا تمث ل بنائي ة متجردة معقدة تعرف باسم‬
‫قواع د ال بيانات العلئقية‪ .‬مثال لذل ك العلئقية‬
‫التالية ‪:‬‬
‫‪500‬‬ ‫‪5/3‬‬ ‫دائن‬ ‫‪315‬‬ ‫‪15‬‬ ‫‪7‬‬ ‫‪778871‬‬ ‫ص‪.‬ب‬ ‫السوق‬ ‫‪18‬‬ ‫استثمار‬ ‫‪415‬‬ ‫احمد‬
‫‪18‬‬ ‫العربي‬

‫‪500‬‬ ‫‪3/5‬‬ ‫دائن‬ ‫‪305‬‬ ‫‪15‬‬ ‫‪17‬‬ ‫‪778872‬‬ ‫ص‪.‬ب‬ ‫الحرية‬ ‫‪5‬‬ ‫جاري‬ ‫‪315‬‬ ‫عثمان‬
‫‪17‬‬

‫‪500‬‬ ‫‪3/5‬‬ ‫دائن‬ ‫‪315‬‬ ‫‪15‬‬ ‫‪11‬‬ ‫‪778873‬‬ ‫ص‪.‬ب‬ ‫الجمهورية‬ ‫‪17‬‬ ‫استثمار‬ ‫‪225‬‬ ‫علي‬
‫‪16‬‬

‫‪500‬‬ ‫‪3/5‬‬ ‫دائن‬ ‫‪325‬‬ ‫‪15‬‬ ‫‪15‬‬ ‫‪778877‬‬ ‫ص‪.‬ب‬ ‫السجانة‬ ‫‪15‬‬ ‫جاري‬ ‫‪325‬‬ ‫محمد‬
‫‪15‬‬

‫المبلغ‬ ‫التاريخ‬ ‫الحركة‬ ‫رقم‬ ‫الفرع‬ ‫رقم‬ ‫التلفون‬ ‫العنوان‬ ‫اسم الفرع‬ ‫رقم‬ ‫نوع‬ ‫رقم‬ ‫السم‬
‫الحساب‬ ‫الفرع‬ ‫الفرع‬ ‫الحساب‬ ‫الحساب‬
‫بنائيات البيانات‬
‫‪ /11‬البنائيات‬
‫المتجردة‬

‫القوائم المتصلة ‪:‬‬

‫الحس اب رق م ‪ 325‬بمبلغ ‪ 500‬دينار وهذا‬


‫الحساب يخص محمد بفرع السجانة وهو حساب‬
‫جاري وعنوان فرع الس جانة هو ص ‪ .‬ب ‪15‬‬
‫وتلفون ‪. 778877‬‬
‫بنائيات البيانات‬
‫‪ /12‬خوارزميات الضافة‬
‫والحذف‬

‫يوجد نوعان من الخوارزميات هما ‪:‬‬


‫(أ) خوارزمية الضافة ‪.‬‬
‫(ب) خوارزمية الحذف ‪.‬‬
‫بنائيات البيانات‬
‫‪ /12‬خوارزميات الضافة‬
‫والحذف‬

‫(أ) خوارزمية الضافة ‪:‬‬


‫‪ .1‬هل الموقع العلى أصبح يساوي أو أكبر من‬
‫حجم المكدس ؟ إن كان ”نعم” ليمكن الضافة‬
‫وتنته ي الخوارزمي ة ( تخرج الرس الة ل يمكن‬
‫الضاف ة لغم ر المكدس ) وإ ن كان ”ل” تستمر‬
‫الخوارزمية في إضافة العنصر ‪.‬‬
‫بنائيات البيانات‬
‫‪ /12‬خوارزميات الضافة‬
‫والحذف‬

‫(أ) خوارزمية الضافة ‪:‬‬


‫‪ .2‬الموقع العلى = الموقع العلى ‪(1 +‬حرك‬
‫الموقع العلى خطوة إلي أعلى ) ‪.‬‬
‫‪ .3‬المصفوفة ( العلى ) = العنصر المضاف ‪.‬‬
‫بنائيات البيانات‬
‫‪ /12‬خوارزميات الضافة‬
‫والحذف‬

‫أ ي يضاف العنص ر إل ي المص فوفة ف ي الموقع‬


‫الذي رقم ة يس اوي الرق م العل ى السابق زائداً‬
‫واحد ‪.‬‬
‫فيما يلي برنامج خوارزمية الضافة ‪:‬‬
‫; ‪Program add_stack‬‬ ‫برنامج إضافة عنصر للمكدس‬
‫‪Const‬‬ ‫ثابت‬
‫;‪max =100‬‬ ‫الكبر = ‪;100‬‬
‫‪Var‬‬ ‫متغيرات‬
‫;‪top: integer‬‬ ‫الموقع العلى ‪ :‬رقمي ;‬
‫;‪newelement :char‬‬ ‫العنصر المضاف ‪ :‬حرفي ;‬
‫;‪stack :array[1.. Max] of char‬‬ ‫المكدس‪:‬مصفوفة ] ‪ ..1‬الكبر [‬
‫‪Begin‬‬ ‫حرفي;‬
‫;(‪Readln )top‬‬ ‫أبدا‬
‫;(‪Readln )newelement‬‬
‫أقرأ ( الموقع العلي ) ;‬
‫أقرأ ( العنصر المضاف ) ;‬
‫‪if top = max then‬‬ ‫إذا كان الموقع العلي= الكبر‬
‫;(’‪writeln )‘over flow‬‬ ‫اكتب ( ”المكدس مفمور”) وال‬
‫‪else‬‬ ‫البداية‬
‫‪begin‬‬ ‫الموقع العلى = الموقع العلى ‪1 +‬‬
‫المكدس ( الموقع العلى ) = العنصر‬
‫;‪top:=top+1‬‬
‫المضاف‬
‫;‪stack)top( =newelement‬‬ ‫انتهت إل‬
‫;‪end‬‬ ‫النهاية ‪.‬‬
‫‪End.‬‬
‫بنائيات البيانات‬
‫‪ /12‬خوارزميات الضافة‬
‫والحذف‬

‫(ب) خوارزمية الحذف ‪:‬‬


‫‪ .1‬هل الموق ع العل ى = صفر إ ن كان نعم ل‬
‫يمكن الحذف وتنتهي الخوارزمية وتخرج الرسالة‬
‫المكدس فارغ وإ ن كان تس تمر الخوارزمي ة في‬
‫عملية الحذف ‪.‬‬
‫بنائيات البيانات‬
‫‪ /12‬خوارزميات الضافة‬
‫والحذف‬

‫(ب) خوارزمية الحذف ‪:‬‬


‫‪ .2‬العنص ر المحذوف = المص فوفة (الموقع‬
‫العل ى ) أي يحذف العنص ر الذي رقم ه في‬
‫المصفوفة = الموقع العلى ‪.‬‬
‫‪ .3‬الموقع العلي = الموقع العلي – ‪. 1‬‬
‫فيما يلي برنامج خوارزمية الحذف ‪:‬‬

‫; ‪Program delete_stack‬‬ ‫برنامج حذف عنصر المكدس‬


‫‪Const‬‬ ‫ثابت‬
‫;‪max =100‬‬ ‫الكبر = ‪;100‬‬
‫متغيرات‬
‫‪Var‬‬
‫الموقع العلى ‪ :‬رقمي ;‬
‫;‪top: integer‬‬ ‫العنصر المحذوف ‪ :‬حرفي ;‬
‫;‪deleteelement :char‬‬ ‫المكدس‪:‬مصفوفة ] ‪ ..1‬الكبر [ حرفي;‬
‫;‪stack :array[1.. Max] of char‬‬ ‫أبدا‬
‫‪Begin‬‬ ‫اقرا (الموقع العلى الحالية) ;‬
‫;(‪Readln )top‬‬
‫‪if top =0 then‬‬ ‫إذا كانت قيمة العلى = صفر‬
‫;(’‪writeln )‘stack empty‬‬ ‫اكتب ( ” المكدس فارغ“ ) ;‬
‫‪else‬‬ ‫وإل‬
‫ابدا‬
‫‪begin‬‬
‫العنصر المحذوف= المكدس( الموقع‬
‫;(‪deleteelement :=stack)top‬‬ ‫العلى);‬
‫;‪top:= top-1‬‬ ‫الموقع العلى = الموقع العلى ‪;1-‬‬
‫;‪end‬‬ ‫انتهت إل;‬
‫‪end.‬‬ ‫النهاية‪.‬‬
‫بنائيات البيانات‬
‫‪ /13‬مقارنة القوائم المتصلة‬
‫والمصفوفات‬

‫أول ‪ :‬تميزت القوائ م المتص لة عل ى المصفوفات‬


‫بديناميكي ة مس احة التخزي ن حي ث أ ن المساحة‬
‫تتقل ص أ و تزي د كلم ا حذف عنص ر أ و أضيف‬
‫عنصر‪،‬‬
‫بنائيات البيانات‬
‫‪ /13‬مقارنة القوائم المتصلة‬
‫والمصفوفات‬

‫أول‪:‬‬
‫أما في المصفوفات فمنذ البداية لبد من حجز كل‬
‫المساحة إذ أنه ل مجال لتغير مساحة المصفوفة‬
‫لنه ا منذ البداي ة يت م تعريفه ا وفق مس احة ثابتة‬
‫ومواقع ثابتة لكل عناصر المصفوفة في الذاكرة ‪.‬‬
‫بنائيات البيانات‬
‫‪ /13‬مقارنة القوائم المتصلة‬
‫والمصفوفات‬

‫ثاني ا ‪ :‬تميزت القوائ م المتص لة بسهولة الحذف‬


‫والضاف ة حي ث يت م ك ل ذل ك فق ط بتغيي ر مؤشر‬
‫الرأس هذا في حالة المكدس‪،‬‬
‫بنائيات البيانات‬
‫‪ /13‬مقارنة القوائم المتصلة‬
‫والمصفوفات‬

‫ثانيا‪:‬‬
‫أما في حالة أخرى فإنه بلمكان إضافة أي عنصر‬
‫إل ي موق ع م ن مواق ع القائم ة فق ط بجع ل مؤشر‬
‫العنص ر الجدي د يؤش ر إل ي العنص ر الس ابق له‪،‬‬
‫ومؤش ر العنص ر اللح ق ل ه يشي ر إلي ه كم ا في‬
‫الرسم‪:‬‬
‫بنائيات البيانات‬
‫‪ /13‬مقارنة القوائم المتصلة‬
‫والمصفوفات‬

‫إضافة عنصر جديد‬


‫بنائيات البيانات‬
‫‪ /13‬مقارنة القوائم المتصلة‬
‫والمصفوفات‬

‫عنصر ووضعه في مكانه الصحيح حسب الترتيب‬


‫أم ا ف ي المص فوفات فل يت م ذل ك بهذه السهولة‬
‫حيث يتم تحريك كل العناصر الصغر خطوة نحو‬
‫الخلف ‪ ،‬أو كل العناصر الكبر خطوة نحو المام ‪.‬‬
‫بنائيات البيانات‬
‫‪ /13‬مقارنة القوائم المتصلة‬
‫والمصفوفات‬

‫ثالث ا ‪ :‬تميزت المص فوفات عل ى القوائ م المتصلة‬


‫عند البحث عن معلومة أو الوصول إلي معلومة‬
‫معين ه‪ ،‬فيت م ذل ك بطرق شت ي ‪ ،‬وليس هناك إل‬
‫طريقة واحدة فقط بالنسبة للقوائم المتصلة ‪،‬‬
‫بنائيات البيانات‬
‫‪ /13‬مقارنة القوائم المتصلة‬
‫والمصفوفات‬

‫ثالثا‪:‬‬
‫وه ي طريق ة البح ث المتتال ي أ ي أ ن البح ث عن‬
‫المعلومة يتم مبتدئاً من رأس القائمة حتى نجد‬
‫المعلومة المطلوبة ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /1‬خوارزميات البحث عن‬
‫المعلومة‬

‫بالطبع من الضرورة أن نعرف أين أماكن تخزين‬


‫المعلومات حت ى نس تطيع الوص ول إليها بغرض‬
‫التعام ل معه ا س واء أكان ذل ك لمعرفته ا أو‬
‫تحديثها أو حذفها أو غير ذلك ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /1‬خوارزميات البحث عن‬
‫المعلومة‬

‫لقد رأينا أن أكثر البنائيات مرونة في استيعاب‬


‫أنواع شت ي م ن ال بيانات وبأحجام ك بيرة هي‬
‫البنائيات التي تمت عبر مصفوفات السجلت ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /1‬خوارزميات البحث عن‬
‫المعلومة‬

‫لذا عندم ا نتحدث ع ن خوارزميات البح ث عن‬


‫المعلوم ة فأنن ا نتحدث ع ن خوارزميات البحث‬
‫عن سجل في مصفوفة السجلت ثم البحث عن‬
‫المعلومة في أحدي حقول ذلك السجل ويتم ذلك‬
‫عادة بالبحث عبر حقل في السجل للوصول لذلك‬
‫السجل‪،‬‬
‫الخوارزميات البيانية‬
‫‪ /1‬خوارزميات البحث عن‬
‫المعلومة‬

‫ث م بع د ذل ك يت م التعام ل م ع أ ي حق ل آخ ر من‬
‫حقول السجل أو مع كل حقول ذلك السجل ‪ .‬على‬
‫سبيل المثال يمكن أن يكون ‪:‬‬
‫الخوارزميات البيانية‬
‫‪ /1‬خوارزميات البحث عن‬
‫المعلومة‬

‫• حقل رقم الطالب هو الحقل الذي يتم به البحث‬


‫عن س جل الطال ب وبع د الوص ول إل ي سجل‬
‫الطالب يمكن النظر إلي حقل ترتيب الطالب ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /1‬خوارزميات البحث عن‬
‫المعلومة‬

‫• حق ل رق م الموظ ف ه و الحق ل الذي يت م به‬


‫البحث عن سجل الموظف ثم بعد ذلك يتم النظر‬
‫إلي راتب الموظف إن كنا نريد معرفة راتبه أو‬
‫تعديله أو النظر إلي تاريخ تعينه ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /1‬خوارزميات البحث عن‬
‫المعلومة‬

‫• حق ل اس م الشخ ص ه و الحق ل الذي يت م به‬


‫البح ث ف ي س جلت التلفونات لمعرفة تلفون‬
‫شخص معين وهذه هي الطريقة الطبيعية لمعرفة‬
‫تلفون معين في دليل التلفونات ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /1‬خوارزميات البحث عن‬
‫المعلومة‬

‫ف ي هذه المثل ة يس مي حق ل رق م الطال ب في‬


‫سجلت الطلب ‪ ،‬وحقل رقم الموظف في سجل‬
‫الموظفي ن ‪ ،‬وحق ل اس م الشخ ص ف ي دليل‬
‫التلفونات بالمفتاح ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /1‬خوارزميات البحث عن‬
‫المعلومة‬

‫هناك خوارزميات شتي تم تصميمها للبحث عن‬


‫المعلومة من أشهرها خوارزمية البحث المتتالي‬
‫أو البح ث الخط ي وخوارزمي ة البح ث الثنائي‬
‫وغيره ا ‪ .‬لغرض هذا المنه ج س وف نكتفي‬
‫بوص ف خوارزمي ة البح ث المتتال ي وخوارزمية‬
‫البحث الثتائي ‪.‬‬
‫الخوارزميات البيانية‬
‫‪/2‬خوارزمية البحث‬
‫المتتالي‬

‫على التوالي من أول مفتاح إلي آخر مفتاح وفي‬


‫كل مرة تقارن بين المفتاح الذي في الصف وبين‬
‫المفتاح المطلوب حت ى نج د المفتاح المطلوب أو‬
‫ينتهي الصف ‪.‬‬
‫الخوارزميات البيانية‬
‫‪/2‬خوارزمية البحث‬
‫المتتالي‬

‫مثال (‪: )1‬‬


‫إذا كان صف المفاتيح هو ‪:‬‬
‫‪8‬‬ ‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫مؤشر المصفوفة‬
‫‪892‬‬ ‫‪350‬‬ ‫‪296‬‬ ‫‪257‬‬ ‫‪210‬‬ ‫‪156‬‬ ‫‪112‬‬ ‫‪110‬‬ ‫المفتاح‬
‫الخوارزميات البيانية‬
‫‪/2‬خوارزمية البحث‬
‫المتتالي‬

‫• والمفتاح المطلوب هو ‪ 350‬فإن الخوارزمية‬


‫تبدأ بمفارنة ‪ 350‬مع ‪:‬‬
‫• المفتاح الول ‪ 110‬فل نج د أن ه يساوي‬
‫المفتاح المطلوب ‪. 350‬‬
‫الخوارزميات البيانية‬
‫‪/2‬خوارزمية البحث‬
‫المتتالي‬

‫• المفتاح الثان ي ‪ 112‬فل نج د أن ه يساوي‬


‫المفتاح المطلوب ‪. 350‬‬
‫• المفتاح الثال ث ‪ 156‬فل نج د أن ه يساوي‬
‫المفتاح المطلوب ‪. 350‬‬
‫الخوارزميات البيانية‬
‫‪/2‬خوارزمية البحث‬
‫المتتالي‬

‫• المفتاح الراب ع ‪ 210‬فل نج د أن ه يساوي‬


‫المفتاح المطلوب ‪. 350‬‬
‫• المفتاح الخام س ‪ 257‬فل نج د أن ه يساوي‬
‫المفتاح المطلوب ‪. 350‬‬
‫الخوارزميات البيانية‬
‫‪/2‬خوارزمية البحث‬
‫المتتالي‬

‫• المفتاح الس ادس ‪ 296‬فل نج د أن ه يساوي‬


‫المفتاح المطلوب ‪. 350‬‬
‫• المفتاح السابع حيث نجد أنه يساوي المفتاح‬
‫المطلوب ‪. 350‬‬
‫الخوارزميات البيانية‬
‫‪/2‬خوارزمية البحث‬
‫المتتالي‬

‫إنن ا عندم ا نتحدث ع ن كفاء ة أ و سرعة هذه‬


‫الخوارزمية ‪ ،‬فإننا نجد أن متوسط عدد المقارنات‬
‫= ( ن ‪ 2 /) 1 +‬إذا كانت ن هي عدد المفاتيح‬
‫فاعتبار إذا كان المفتاح الول هو المفتاح‬
‫المطلوب فإن الخوارزمية تكون قد اكتفت بمقارنة‬
‫واحدة فقط وهي أحسن حالة ممكنة‬
‫الخوارزميات البيانية‬
‫‪/2‬خوارزمية البحث‬
‫المتتالي‬

‫وأما أسوأ حالة هي أن يكون المفتاح الخير هو‬


‫المفتاح المطلوب وعلي ه يكون ف ي هذه الحالة‬
‫عدد المقارنات يس اوي "ن" هذا النوع من‬
‫الخوارزميات يوص ف عدد مقارنات ه بأنها تزداد‬
‫طردياً مع عدد المفاتيح ‪.‬‬
‫الخوارزميات البيانية‬
‫‪/2‬خوارزمية البحث‬
‫المتتالي‬

‫الخوارزمية ‪:‬‬
‫‪ .1‬أدخل عدد المفاتيح ن ومصفوفة المفاتيح ‪.‬‬
‫‪ .2‬أدخل المفتاح المطلوب ‪.‬‬
‫‪ .3‬أجعل عداد المفاتيح في البدء = ‪. 0‬‬
‫‪ .4‬عدد المفاتيح = عداد المفاتيح ‪. 1 +‬‬
‫‪ .5‬أقرأ مفتاح المصفوفة الذي يشير إليه المؤشر‪.‬‬
‫الخوارزميات البيانية‬
‫‪/2‬خوارزمية البحث‬
‫المتتالي‬

‫الخوارزمية ‪:‬‬
‫‪ .1‬هل تطابق المفتاح مع مفتاح المصفوفة ؟ نعم ‪.‬‬
‫أذهب إلي ‪. 8‬‬
‫‪ .2‬هل عداد المفاتيح أكبر من ن ؟ "ل" أذهب إلي‬
‫‪" 4‬نعم" أذهب إلي ‪. 10‬‬
‫‪ .3‬اكتب "وجد المفتاح في " عداد المؤشر ‪.‬‬
‫الخوارزميات البيانية‬
‫‪/2‬خوارزمية البحث‬
‫المتتالي‬

‫الخوارزمية ‪:‬‬
‫‪ .1‬أذهب إلي ‪.11‬‬
‫‪ .2‬اكتب ” لم يوجد المفتاح ” ‪.‬‬
‫‪ .3‬النهاية ‪.‬‬
Program searchline ;
Const
n:=50;
Var
I , key : integer;
found : Boolean;
keys :array [1..n] of integer;
Begin
for i:=1 to n do
readln )keys )I((;
I:=0;
found := false;
readln )key(;
repeat
I := I+1;
if keys )I( = key then
found:= true;
until I < n or found == true;
if I < n then
write )‘ key not found’(;
else
write )‘ key found in ‘ I (;
End.
‫برنامج البحث الخطي‬
‫ثابت‬
‫ن = ‪ 50‬عدد المفاتيح‬
‫المتغيرات‬
‫المؤشر ‪ ،‬المفتاح ‪ :‬عدد صحيح‬
‫هل وجد ‪ :‬منطقي‬
‫المفتاح ‪ :‬مصفوفة [ ‪ ..1‬ن ] رقمية‬
‫أبدأ‬
‫من المؤشر = ‪ 1‬إلي ن‬
‫أقرأ المفتاح ( المؤشر )‬
‫المؤشر = ‪0‬‬
‫المفتاح لم يوجد‬
‫أقرأ المفتاح‬
‫كرر‬
‫المؤشر = المؤشر ‪1 +‬‬
‫إذا تطابق المفتاح مع المفتاح الذي يشير إليه المؤشر‬
‫أجعل المتغير المنطقي هل وجد ؟ نعم‬
‫أوقف التكرار إذا كانت الجابة نعم أو زاد عدد المؤشر على ن‬
‫إذا كان عدد المؤشر أكثر من ن‬
‫اكتب لم يجد المفتاح‬
‫وإل‬
‫اكتب وجد المفتاح في المؤشر‬
‫النهاية‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫هذه الخوارزمي ة تفترض أ ن المفاتي ح مرتبة‬


‫ترتيبا تصاعديا ثم بعدها تقارن المفتاح المطلوب‬
‫مع المفتاح الذي ف ي وس ط القائم ة أي المفتاح‬
‫الذي يؤشر إليه المؤشر رقم و = (ن ‪2 /) 1 +‬‬
‫باعتبار "ن " هي عدد المفاتيح (إذا كان هناك‬
‫كسر في القسمة يتم اسقاطه)‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫فإذا كان المفتاح المطلوب أكبر من مفتاح الوسط‬


‫"و" فأنن ا نهم ل البح ث ف ي النص ف الذي به‬
‫المفاتيح الصغر من المفتاح المطلوب ‪ ،‬أي بلغة‬
‫أخري نهمل كل المفاتيح من المؤشر رقم "‪"1‬‬
‫إلي المؤشر "و" ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫نجعل بعد ذلك المؤشر رقم "و" هو مثل المؤشر‬


‫رقم "‪ "1‬في المعالجة السابقة ونحسب المؤشر‬
‫الوس ط ف ي النص ف م ن المؤش ر رق م "و" إلي‬
‫المؤش ر رق م "ن" والذي يساوي (و‪+‬ن)‪2/‬‬
‫وهي قيمة المؤشر الوسط الجديد "وج"‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫ثم تقارن المفتاح الذي يؤشر إليه مؤشر الوسط‬


‫الجدي د م ع المفتاح المطلوب ‪ ،‬فأن كان المفتاح‬
‫المطلوب هذه المرة أص غر م ن مفتاح الوسط‬
‫الجدي د فأنن ا س نهمل الرب ع الك بر من مفتاح‬
‫الوسط الجديد وننظر فقط للربع من مفتاح الوسط‬
‫الجديد "وج" إلى مفتاح الوسط "و"‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫ث م نكرر العملي ة ونحس ب مؤش ر الوس ط الجد‬


‫"وأ" والذي يس اوي (و‪+‬وج )‪ 2/‬ثم تقارن‬
‫المفتاح المطلوب م ع مفتاح الوس ط الج د‪ ،‬فإن‬
‫كان أكبر منه نظرنا إلي الثمن من مفتاح الوسط‬
‫الج د إل ي مفتاح الوس ط الجدي د ويستمر هكذا‬
‫نقس م النص ف إل ي نص فين إل ي أ ن نبق ي على‬
‫مفتاح واحد هو المفتاح المطلوب ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫إذا لم نجد مفتاحاً مساوياً للمفتاح المطلوب يكون‬


‫في هذه الحالة المفتاح المطلوب غير موجود ‪.‬‬
‫المثال التال ي يمك ن أ ن يوض ح الخطوات على‬
‫التوالي ‪:‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫مثال (‪: )2‬‬


‫إذا كان صف المفاتيح هو ‪:‬‬
‫‪892 350‬‬ ‫‪296‬‬ ‫‪257‬‬ ‫‪210‬‬ ‫‪156‬‬ ‫‪112‬‬ ‫‪110‬‬ ‫المفتاح‬

‫والمفتاح المطلوب هو‪ 350‬فإن الخوارزمية تبدأ‬


‫ب‪:‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫القائمة الولي ‪257 296 350892 210 156 112 110‬‬


‫الخطوة الول ي مفتاح الوسط = ‪ 210‬المفتاح المطلوب‬
‫‪210 >350‬‬
‫القائمة الثانية ‪892 350 296 257 210‬‬
‫الخطوة الثانية مفتاح الوسط = ‪ 296‬المفتاح المطلوب ‪>350‬‬
‫‪296‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫القائمة الثالثة ‪892 350 296‬‬


‫الخطوة الثالثة مفتاح الوسط = ‪ 350‬المفتاح المطلوب ‪=350‬‬
‫‪350‬‬

‫المفتاح المطلوب هو الذي يؤشر إليه المؤشر رقم ‪7‬‬


‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫الخوارزمية ‪:‬‬
‫‪ .1‬أدخل المفتاح المطلوب وقائمة المفاتيح مرتبة‬
‫تصاعدياً حيث أن المؤشر رقم ‪ 1‬يؤشر لصغر‬
‫مفتاح والمؤشر الخير "ن" يؤشر لكبر مفتاح‬
‫( ن عدد المفاتيح ) ‪.‬‬
‫‪ .2‬هل المؤشر الول = المؤشر الخير ؟ نعم‬
‫أذهب ‪. 6‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫الخوارزمية ‪:‬‬
‫‪ .1‬أحسب مؤشر الوسط و = (المؤشر الول‪+‬‬
‫المؤشر الخير)‪. 2/‬‬
‫‪ .2‬هل مفتاح المؤشر الوسط = المفتاح المطلوب‬
‫؟ نعم أذهب إلي ‪. 8‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫الخوارزمية ‪:‬‬
‫• إذا كان مفتاح المؤش ر الوسط > المفتاح‬
‫المطلوب أجعل المؤشر الخير = المؤشر الوسط‬
‫وإل أجعل المؤشر الول = المؤشر الوسط ‪.‬‬
‫• اكتب ل يوجد المفتاح ‪.‬‬
‫• أذهب إلي ‪. 9‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫الخوارزمية ‪:‬‬
‫‪ .1‬اكتب المؤشر الوسط ‪.‬‬
‫‪ .2‬النهاية ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫نلحظ في هذه الخوارزمية أن عدد المقارنات‬


‫يساوي لو ‪ 2‬ن إذا افترضنا مثل أن ن = ‪16‬‬
‫فإن الخطوة الولي سيكون عدد المفتاح ‪ 8‬ثم‬
‫الخطوة الثانية يكون عدد المفتاح ‪ 4‬ثم الخطوة‬
‫الثالثة يكون عدد المفتاح ‪2‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫ثم الخطوة الرابعة يكون عدد المفاتيح ‪ 1‬وهو‬


‫المفتاح المطلوب ‪ .‬إذن تمت ‪ 4‬مقارنات حتى‬
‫وصلنا إلي المفتاح (‪ 4‬هي في الواقع لو‪. )16 2‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫ملحوظة ‪:‬‬
‫إننا في مثالي وبرنامجي خوارزمية البحث‬
‫المتتالي أو الخطي والبحث الثنائي أو الزوجي –‬
‫جعلنا مصفوفة المفاتيح رقمية ‪ ،‬وهذا فقط على‬
‫سبيل المثال ‪ ،‬لن المفاتيح يمكن أن تكون حرفية‬
‫مثل السماء ‪ ،‬أو أن تكون أي نوع آخر ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫ملحوظة ‪:‬‬
‫ولكن في غالب الستخدمات تكون المفاتيح رقمية‬
‫لرفع كفاءة البحث ؛ لن مقارنة الرقام أسرع من‬
‫مقارنة النواع الخرى ‪ ،‬لذا دائماً يستحسن أن‬
‫يتم البحث برقم الموظف ‪ ،‬ورقم الطالب بد ًل من‬
‫اسم الموظف ‪،‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫ملحوظة ‪:‬‬
‫واسم الطالب بحيث يكون هناك رقم مفرد لي‬
‫طالب ‪ ،‬ولي موظف على سبيل المثال ‪ .‬نجد‬
‫عموماً أن أغلب التصميمات تعطي مفتاحا رقميا‬
‫مفردا للمتعاملين مثل رقم الحساب ورقم بطاقة‬
‫الخدمة الوطنية ‪..‬‬
‫الخوارزميات البيانية‬
‫‪ /3‬خوارزمية البحث‬
‫الثنائي‬

‫ملحوظة ‪:‬‬
‫كما لبد من الشارة الى ان هذا المفتاح يشير‬
‫الى معان هامة مثل رقم فرع البنك ‪ ،‬ورقم‬
‫البنك ‪ ،‬ثم رقم العميل ‪ ،‬وكذلك رقم البطاقة‬
‫الشخصية يشير الى رقم الولية ورقم المحافظة‬
‫ورقم المحلية ثم رقم المواطن مثل وهكذا‬
Program binary_search;
Const
n:= 50;
Var
I , key , first , last, middle :integer;
found : Boolean;
keys : array[1.. N] of integer;
Begin
for I:=1 to n do
readln ) keys )I((;
readln )key(;
found := false;
first := 1;
last := n;
repeat
middle := ) first + last ( div 2;
if key [middle] < key then
begin
last := middle;
if key [middle] > key then
first := middle;
else
found := true;
end;
until found or last >= first
if found then
writeln )‘ key found’ , middle(;
else
writeln )‘ key not found’(;
End.
‫برنامج البحث الثاني‬
‫الثوابت‬
‫ن = ‪ 50‬عدد المفاتيح‬
‫المتغيرات‬
‫المفتاح ‪ ،‬الول ‪ ،‬الخير ‪ ،‬المؤشر الوسط ‪ :‬عدد صحيح‬
‫هل وجد ‪ :‬منطقي‬
‫مفتاح مصفوفة من ‪ 1‬إلي ن رقمية‬
‫إبدا‬
‫من ‪ 1‬إلي ن‬
‫أقرأ عناصر المصفوفة‬
‫أقرأ المفتاح‬
‫هل وجد = ل‬
‫المؤشر الول = ‪1‬‬
‫المؤشر الخير = ن‬
‫كرر‬
‫المؤشر الوسط = إسقاط ( المؤشر الول ‪ +‬الخير )‪)2 /‬‬
‫إذا كان مفتاح المؤشر الوسط أكبر من المفتاح‬
‫إبدا‬
‫المؤشر الخير = المؤشر الوسط‬
‫إذا كان مفتاح المؤشر الوسط أصغر من المفتاح‬
‫المؤشر الول = المؤشر الوسط‬
‫وإل‬
‫أجعل هل وجد = نعم‬
‫نهاية‬
‫حتى يتحقق وجد المفتاح أو المفتاح الخير أقل من أو يساوي المفتاح الول‬
‫إذا هل وجد = نعم‬
‫اكتب ( ” وجد المفتاح في المؤشر الوسط“ )‬
‫وإل‬
‫اكتب (” لم يوجد المفتاح ”)‬
‫النهاية‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫تصنيف المعلومات ‪ ،‬ومعنى تصنيف المعلومات‬


‫وضع السجلت حسب ترتيب معين ويتم ذلك‬
‫بالطبع عن طريق ترتيب مفاتيح السجلت التي‬
‫ترتب ترتيبا تصاعديا أو تنازليا ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫رقم الموظف أو رقم البطاقة الشخصية فإن‬


‫ترتيب المفاتيح يتم من أصغر رقم إي أصغر قيمة‬
‫مفتاح تصاعديا إلى اكبر رقم إي اكبر قيمة مفتاح‬
‫وبهذا تكون سجلت الطلب أو الموظفين أو‬
‫المواطنيين تم ترتيبها تصاعدياً ‪،‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫والعكس إذا بدأنا الترتيب بأكبر رقم ثم نزلنا‬


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

‫وإذا تساوى في الحرف الثاني ينظر إلى الحرف‬


‫الثالث وهكذا ‪ .‬ومن الضروري إل يتطابق اسمان‬
‫في كل الحروف وأل يكون حقل السم غير صالحاً‬
‫ليكون مفتاحاً ‪،‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫لن هنالك شرطاً أساسياً لمفتاح السجل وهو أن‬


‫يكون مفرداً في التعبير عن السجل ( لهذه‬
‫المشكلة ل يفضل استخدام السماء في المفاتيح)‪.‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫الخوارزمية هو تسهيل أو تسريع عملية البحث‬


‫عن السجل هذا إضافة إلى إستخدامات أخرى في‬
‫ترتيب المستويات للفراد مثل نتائج المتحانات‬
‫والمنافسات بين الطلب والموظفين عامة‬
‫المتنافسين‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫ومثل أولويات الحجوزات والطلبات والخدمات‬


‫عموماً والتي تعطى أولوية للول فالتالي وهكذا ‪.‬‬
‫إذاً ليس كل الترتيب يتم فقط لحقل المفاتيح وإنما‬
‫يكمن أن يتم على أي حقل حسب الحاجة‬
‫الستفسارية أو التحليلية ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫بعضها معقدة جداً وعالية الكفاءة ‪ ،‬ونعنى‬


‫بالكفاءة إن يتم التصنيف في أقل وقت ممكن وفى‬
‫أقل سعة تخزينية ممكنة ولكن لغرض هذا المنهج‬
‫سوف نركز على نوعين من الخوارزميات يتميز‬
‫بالبساطة وكثرة الستخدام ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫ما عرف باسم خوارزمية الفقاعة حيث يتم‬


‫مقارنه كل عنصرين أو مفتاحين متجاورين‬
‫وتعديل وضعهما حسب الترتيب المطلوب‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫أما النوع الثاني والذي عرف بخوارزميات‬


‫الختيار وأشهرها ما يعرف بإسم خوارزمية‬
‫الختيار المباشر حيث اختيار اكبر المفاتيح أو‬
‫أصغرها حسب الترتيب المطلوب ووضعها في‬
‫الترتيب الول ثم اختيار الكبر أو الصغر من‬
‫بقية المفاتيح ووضعه في الترتيب الثاني وهكذا‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫يتم اختيار العنصر أو المفتاح التالي من بقية‬


‫المفاتيح إلى إن يبقى مفتاح أو عنصر واحد هو‬
‫المفتاح الخير أو العنصر الخير ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬
‫خوارزمية الفقاعة ‪:‬‬
‫• ادخل عدد المفاتيح أو العناصر (ن) ومصفوفة‬
‫المفاتيح أو العناصر ‪.‬‬
‫• قارن كل عنصر والعنصر الذي يليه مبتدئ ًا من‬
‫العنصر الول مع الثاني ‪ ،‬الثاني مع الثالث ‪...‬‬
‫حتى العنصر ( ن ‪ ، )1-‬العنصر (ن) ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬
‫خوارزمية الفقاعة ‪:‬‬
‫‪ .3‬إن كان ا غي ر مرت بين الترتيب المطلوب بدل‬
‫موقعيهما (نلحظ هنا أن المقارنة التالية ستكون‬
‫بي ن العنص ر الس ابق والعنص ر التال ي إذا تمت‬
‫عملية تبديل الموقعين‪ ،‬مثلً إذا تم تبديل العنصر‬
‫الثالث مع الرابع فإن العنصر الرابع الجديد‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬
‫خوارزمية الفقاعة ‪:‬‬
‫س يكون ف ي الواق ع ه و العنص ر الثال ث؛ لذا من‬
‫الناحي ة العلمي ة س تتم المقارن ة هذه المرة بين‬
‫العنص ر الثال ث والعنص ر الخام س‪ ،‬وهذا سبب‬
‫تسمية الفقاعة حيث يقفز ليعيد الترتيب بسرعة‬
‫إلى وضعه الطبيعي‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫خوارزمية الفقاعة ‪:‬‬


‫مثل الفقاعة الصغيرة الحقيقية تقفز بسرعة إلى‬
‫سطح الماء أو الزيت تاركة الفقاعات الكبر داخل‬
‫السائل) ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫خوارزمية الفقاعة ‪:‬‬


‫‪ .1‬قف إذا لم يعد هناك أي تبديل مواقع وأل عد‬
‫إلى ‪. 2‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬
‫مثال ( ‪: ) 3‬‬
‫إذا كان صف المفاتيح هو ‪:‬‬
‫‪33‬‬ ‫‪86 92 12 37 48 57 25‬‬
‫المطلوب ترتيب العناصر ترتيباً تصاعدياً‬
‫مصفوفة العناصر الساسية ‪:‬‬
‫‪33 86 92 12 37 48 57 25‬‬
‫التبديل الول ل تبديل ‪57 25‬‬
‫تبديل ‪57 48 25‬‬ ‫التبديل الثاني‬

‫تبديل ‪57 37 48 25‬‬ ‫التبديل الثالث‬

‫تبديل ‪57 12 37 48 25‬‬ ‫التبديل الرابع‬

‫التبديل الخامس ل تبديل ‪92 57 12 37 48 25‬‬


‫‪92 86 57 12 37 48 25‬‬ ‫التبديل السادس تبديل‬

‫‪92 33 86 57 12 37 48 25‬‬ ‫تبديل‬ ‫التبديل السابع‬


‫مصفوفة العناصر بعد الدورة الولى ‪:‬‬
‫‪92 33 86 57 12 37 48 25‬‬
‫التبديل الول ل تبديل ‪48 25‬‬
‫‪48 37 25‬‬ ‫تبديل‬ ‫التبديل الثاني‬

‫‪48 12 37 25‬‬ ‫تبديل‬ ‫التبديل الثالث‬

‫التبديل الرابع ل تبديل ‪57 48 12 37 25‬‬


‫التبديل الخامس ل تبديل ‪86 57 48 12 37 25‬‬
‫‪86 33 57 48 12 37 25‬‬ ‫التبديل السادس تبديل‬

‫التبديل السابع ل تبديل ‪92 86 33 57 48 12 37 25‬‬


‫مصفوفة العناصر بعد الدورة الثانية ‪:‬‬
‫‪92 86 33 57 48 12 37 25‬‬
‫التبديل الول ل تبديل ‪37 25‬‬
‫‪37 12 25‬‬ ‫تبديل‬ ‫التبديل الثاني‬

‫التبديل الثالث ل تبديل ‪48 37 12 25‬‬


‫التبديل الرابع ل تبديل ‪57 48 37 12 25‬‬
‫‪57 33 48 37 12 25‬‬ ‫التبديل الخامس تبديل‬

‫التبديل السادس ل تبديل ‪86 57 33 48 37 12 25‬‬


‫التبديل السابع ل تبديل ‪92 86 57 33 48 37 12 25‬‬
‫مصفوفة العناصر بعد الدورة الثالثة ‪:‬‬
‫‪92 86 57 33 48 37 12 25‬‬
‫التبديل الول تبديل ‪25 12‬‬
‫التبديل الثاني ل تبديل ‪37 25 12‬‬
‫التبديل الثالث ل تبديل ‪48 37 25 12‬‬
‫‪48 33 37 25 12‬‬ ‫تبديل‬ ‫التبديل الرابع‬

‫التبديل الخامس ل تبديل ‪57 48 33 37 25 12‬‬


‫التبديل السادس ل تبديل ‪86 57 48 33 37 25 12‬‬
‫التبديل السابع ل تبديل ‪92 86 57 48 33 37 25 12‬‬
‫مصفوفة العناصر بعد الدورة الرابعة ‪:‬‬
‫‪92 86 57 48 33 37 25 12‬‬
‫التبديل الول ل تبديل ‪25 12‬‬
‫التبديل الثاني ل تبديل ‪37 25 12‬‬
‫تبديل ‪37 33 25 12‬‬ ‫التبديل الثالث‬

‫التبديل الرابع ل تبديل ‪48 37 33 25 12‬‬


‫التبديل الخامس ل تبديل ‪57 48 37 33 25 12‬‬
‫التبديل السادس ل تبديل ‪86 57 48 37 33 25 12‬‬
‫التبديل السابع ل تبديل ‪92 86 57 48 37 33 25 12‬‬
‫مصفوفة العناصر بعد الدورة الخامسة ‪:‬‬
‫‪92 86 57 48 37 33 25 12‬‬
‫التبديل الول ل تبديل ‪25 12‬‬
‫إذن تم الترتيب النهائي‬
‫التبديل الثاني ل تبديل ‪33 25 12‬‬
‫التبديل الثالث ل تبديل ‪37 33 25 12‬‬
‫التبديل الرابع ل تبديل ‪48 37 33 25 12‬‬
‫التبديل الخامس ل تبديل ‪57 48 37 33 25 12‬‬
‫التبديل السادس ل تبديل ‪86 57 48 37 33 25 12‬‬
‫التبديل السابع ل تبديل ‪92 86 57 48 37 33 25 12‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫خوارزمية الختيار المباشر ‪:‬‬


‫نبحث ع ن أصغر عنصر في المصفوفة‪ ،‬ونقوم‬
‫بتبديل ه م ع العنصر الول‪ ،‬ثم نبحث عن أصغر‬
‫عنص ر م ن بي ن عناص ر المص فوفة م ن العنصر‬
‫الثان ي إل ي العنص ر الخي ر‪ ،‬ونقوم بتبديل ه مع‬
‫العنصر الثاني ‪،‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫خوارزمية الختيار المباشر ‪:‬‬


‫ث م نبح ث ع ن أص غر عنص ر م ن بي ن عناصر‬
‫المص فوفة م ن العنص ر الثال ث إل ي العنصر‬
‫الخير‪ ،‬ونقوم بتبديله مع العنصر الثالث‪ ،‬وهكذا‬
‫إل ي أ ن تنته ي ك ل عناص ر المص فوفة وعندها‬
‫نحصل على مصفوفة مرتبة ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫مثال (‪: )4‬‬


‫إذا كان صف المفاتيح هو ‪:‬‬
‫‪33 86 92 12 37 48 57 25‬‬
‫المطلوب ترتيب العناصر ترتيباً تصاعدياً‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫الخطوة ‪:1‬‬
‫نبح ث ع ن أص غر عنص ر م ن عناص ر المص فوفة وهو‬
‫العنصر رقم [‪ ] 5‬الذي يساوي "‪ "12‬ونقوم بتبديله مع‬
‫العنصر رقم [‪: ]1‬‬
‫رقم العنصر [‪]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1‬‬
‫‪33 86 92 25 37 48 57 12‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬
‫الخطوة ‪:2‬‬
‫نبحث عن أصغر عنصر من بين عناصر المصفوفة من‬
‫العنصر الثاني إلي العنصر الخير وهو العنصر رقم [‪]5‬‬
‫الذي يساوي "‪ "25‬ونقوم بتبديله مع العنصر رقم [‪]2‬‬
‫[‪]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1‬‬ ‫رقم العنصر‬
‫‪33 86 92 57 37 48 25 12‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬
‫الخطوة ‪:3‬‬
‫نبحث عن أصغر عنصر من بين عناصر المصفوفة من‬
‫العنصر الثالث إلي العنصر الخير وهو العنصر رقم [‪]8‬‬
‫الذي يساوي "‪ "33‬ونقوم بتبديله مع العنصر رقم [‪]3‬‬
‫[‪]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1‬‬ ‫رقم العنصر‬
‫‪48 86 92 57 37 33 25 12‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬
‫الخطوة ‪:4‬‬
‫نبحث عن أصغر عنصر من بين عناصر المصفوفة من‬
‫العنصر الرابع إلي العنصر الخير وهو العنصر رقم [‪]4‬‬
‫الذي يساوي "‪ "37‬ونقوم بتبديله مع العنصر رقم [‪]4‬‬
‫وهو نفس العنصر ‪:‬‬
‫[‪]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1‬‬ ‫رقم العنصر‬
‫‪48 86 92 57 37 33 25 12‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬
‫الخطوة ‪:5‬‬
‫نبحث عن أصغر عنصر من بين عناصر المصفوفة من‬
‫العنصر الخامس إلي العنصر الخير وهو العنصر رقم [‬
‫‪ ]8‬ويساوي "‪ "48‬ونقوم بتبديله مع العنصر رقم [‪]5‬‬

‫[‪]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1‬‬ ‫رقم العنصر‬
‫‪57 86 92 48 37 33 25 12‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬
‫الخطوة ‪:6‬‬
‫نبحث عن أصغر عنصر من بين عناصر المصفوفة من‬
‫العنصر السادس إلي العنصر الخير وهو العنصر رقم [‬
‫‪ ]8‬الذي يساوي "‪ "57‬ونقوم بتبديله مع العنصر رقم [‬
‫‪]6‬‬
‫[‪]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1‬‬ ‫رقم العنصر‬
‫‪92 86 57 48 37 33 25 12‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬
‫الخطوة ‪:7‬‬
‫نبحث عن أصغر عنصر من بين عناصر المصفوفة من‬
‫العنصر السابع إلي العنصر الخير وه و العنصر رقم [‬
‫‪]7‬الذي يساوي "‪ "86‬ونقوم بتبديله مع العنصر رقم [‬
‫‪]7‬وهو نفس العنصر ‪.‬‬
‫[‪]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1‬‬ ‫رقم العنصر‬
‫‪92 86 57 48 37 33 25 12‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫[‪]8[ ]7[ ]6[ ]5[ ]4[ ]3[ ]2[ ]1‬‬ ‫رقم العنصر‬
‫‪92 86 57 48 37 33 25 12‬‬

‫ونجد العنصر الخير يكون في موضعه الصحيح ‪.‬‬


‫إذن تم الترتيب النهائي‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫الخوارزمية ‪:‬‬
‫‪ .1‬ضع رقم العنصر = ‪. 1‬‬
‫‪ .2‬أبحث عن أصغر عنصر من عناصر‬
‫المصفوفة من رقم العنصر إلي آخر عنصر ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫الخوارزمية ‪:‬‬
‫‪ .1‬قم بتبديل العنصر الصغر مع العنصر الذي‬
‫يشير إليه رقم العنصر ‪.‬‬
‫‪ .2‬رقم العنصر = رقم العنصر ‪. 1 +‬‬
‫الخوارزميات البيانية‬
‫‪ -4‬تصنيف‬
‫المعلومات‬

‫الخوارزمية ‪:‬‬
‫‪ .1‬إذا كان رقم العنصر = آخر عنصر أذهب إلي‬
‫‪ 6‬وإل أذهب إلي ‪. 2‬‬
‫‪ .2‬أطبع المصفوفة وهي مرتبة ‪.‬‬
‫‪ .3‬النهاية ‪.‬‬
Program bubble sort;
Const
n:= 50;
Var
I , pass :integer;
temp : integer;
sortfield : array[1.. n] of integer;
exchange : Boolean;
Begin
for I := 1 to n do
readln ) sortfield [I](;
pass := 0;
exchange := true;
while exchange do
begin
exchange := false;
pass := pass +1;
for I := 1 to n-1 do
if sortfield [I] < sortfield[I+1] then
begin
temp := sortfield [ I ];
sortfield [ I ] := sortfield [ I+1]
sortfield [ I+1] := temp;
exchange := true;
end;
end;
writeln )‘ no of passes’ , pass(;
for I := I to n do
writeln )sortfield [ I ](;
End.
‫برنامج خوارزمية الفقاعة‬
‫ثابت ن = ‪ 50‬عدد العناصر‬
‫المتغيرات‬
‫دورة ومؤشر ‪ :‬عدد صحيح‬
‫مؤقت ‪ :‬عدد صحيح‬
‫قائمة ‪ :‬مصفوفة من ‪ 1‬إلي ن وهي رقمية‬
‫تبديل ‪ :‬منطقي‬
‫أبدا‬
‫المؤشر من ‪ 1‬إلي ن اعمل‬
‫أقرأ عناصر مصفوفة القائمة‬
‫دورة = ‪0‬‬
‫تبديل = نعم‬
‫ما دام التبديل نعم أعمل‬
‫أبدا‬
‫التبديل = ل‬
‫الدورة = الدورة ‪1 +‬‬
‫من ‪ 1‬إلي ن – ‪ 1‬اعمل‬
‫إذا كان بيان حقل التبديل < من الذي يليه‬
‫أبدا‬
‫أجعل حقل التبديل = تخزين مؤقت‬
‫أجعل حقل التبديل التالي = حقل التبديل‬
‫أجعل التخزين المؤقت = التبديل التالي‬
‫أجعل التبديل = نعم‬
‫نهاية (*نهاية إذا كان *)‬
‫نهاية (* مادام * )‬
‫اكتب (”عدد دورة الترتيب ” ‪ ,‬دورة )‬
‫من ‪ 1‬إلي ن‬
‫اكتب البيانات المرتبة من القائمة‬
‫نهاية البرنامج‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫كلم ة تشفي ر نابع ة م ن كلم ة سايفر (‪)cipher‬‬


‫النجليزي ة والت ي ه ي ف ي الواق ع أص لها الكلمة‬
‫العربي ة صفر والت ي تعن ى (ل شي ء ) إذ أن‬
‫التشفير مقصود به أل يفهم القارئ شيئاً مما هو‬
‫مكتوب ( غير ذلك الشخص المصرح له بذلك ) ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫وبهذا لب د أ ن يكون عل م التشفير علماً قديماً؛‬


‫فالناس منذ الزل لهم أسرارهم التي ل يؤدون أن‬
‫يعرفها كل الناس‪ .‬ومما هو مسجل في التاريخ أن‬
‫المص ريين القدام ى أول م ن بدأ التشفي ر لطريقة‬
‫علمي ة ‪ ،‬وذل ك لم ا لديه م م ن مهارات رياضية‬
‫معروفة‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫ث م مارس الهنود ولغري ق وغيره م م ن المم‬


‫القديم ة التشفي ر‪ ،‬وأ ن المس لمين العرب مث ل بن‬
‫الدره م ق د وثقوا لعل م التشفي ر وكتبوا في ه‪ ،‬أما‬
‫اللمان فه م أول م ن مارس التشفي ر باستخدام‬
‫الل ة حي ث اس تخدموا الل ة المعروف ة ب‬
‫(‪. )Enigma‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫تتبع نظم التشفير الخطوات التالية ‪:‬‬


‫‪ .1‬صمم خوارزمية الشفرة التي تود استخدامها‬
‫مع الطرف الخر ‪.‬‬
‫‪ .2‬أدخل النص أو المعلومات واضحة ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫تتبع نظم التشفير الخطوات التالية ‪:‬‬


‫‪ .1‬أدخل الشفرة على النص أو المعلومات ليخرج‬
‫نص أو معلومات مشفرة ‪.‬‬
‫‪ .2‬أرسل الرسالة إلي الطرف الخر ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫تتبع نظم التشفير الخطوات التالية ‪:‬‬


‫‪ .1‬عالج النص أو المعلومات التي بالرسالة‬
‫بخوارزمية فك الشفرة ‪.‬‬
‫‪ .2‬أخرج النص واضحا أو المعلومات واضحة ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫شفرات الستبدال أو التعويض ‪:‬‬


‫تعت بر خوارزميات الس تبدال والتعوي ض من‬
‫الخوارزميات القديم ة أبس طها ه ي خوارزمية‬
‫يوليوس قيص ر والت ي تقوم باس تبدال أي حرف‬
‫بالحرف الثال ث ف ي الترتيب‪ .‬يعن ى مثل حسب‬
‫ترتيب الحروف العربية بالنظام التالي ‪:‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫‪14 13 12 11 10‬‬ ‫‪9‬‬ ‫‪8‬‬ ‫‪7‬‬ ‫‪6‬‬ ‫‪5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬
‫ر ز س ش ص‬ ‫ذ‬ ‫د‬ ‫خ‬ ‫ح‬ ‫ج‬ ‫ث‬ ‫ت‬ ‫ب‬ ‫أ‬

‫‪28 27 26 25 24 23 22 21 20 19 18 17 16 15‬‬
‫ض ط ظ ع غ ف ق ك ل م ن ه و ي‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫فإن أ تصبح ث و ب تصبح ج و ل تصبح ه ون‬


‫تص بح ي وهكذا‪ .‬إذن نضي ف لموقع الحروف‬
‫المراد تشفيره ‪ 3‬ليص بح الحرف المشف ر هو‬
‫حرف ذلك الموقع ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫مثال (‪: )5‬‬


‫حس ب خوارزمي ة يوليوس قيص ر م ا التشفير‬
‫المقاب ل لحروف "ه " ‪" ،‬و" ‪" ،‬ي" مستعينا‬
‫بالجدول أعله ؟‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫• موقع الحرف "ه " = ‪ ، 26‬موقع الحرف بعد‬


‫التشفير = ‪ 29 = 3+ 26‬ل يوجد حرف رقمه‬
‫‪ 29‬إذن نقوم بطرح ‪ 28‬وهي عدد الحروف‬
‫وعليه يكون الحرف المقابل للحرف "ه " هو‬
‫الحرف الذي موقعه = ‪ 1 = 28 – 29‬أي‬
‫الحرف "أ" ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫مثال (‪: )5‬‬


‫• موقع الحرف "و" = ‪ ، 27‬موقع الحرف بعد‬
‫التشفير = ‪ 2 = 28 – 30 = 3 + 27‬وهو‬
‫الحرف "ب"‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫مثال (‪: )5‬‬
‫• موقع الحرف "ي" = ‪ ، 28‬موقع الحرف بعد‬
‫التشفير = ‪ 3 = 28 – 31=3+28‬وهو الحرف‬
‫"ت" ‪.‬‬
‫هذا الجراء يتم في الحاسوب تلقائيا بواسطة‬
‫الدالة ‪. MOD‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫معلومة ‪:‬‬
‫تحسب الدالة ‪ MOD‬باقي القسمة فمثل‬
‫‪ 16 MOD 3 = 1 , 37 MOD 7 = 2‬‬
‫‪ 89 MOD 11 = 1 , 30 MOD 28 = 2‬‬
‫‪ 31 MOD 28 = 3 , 7 MOD 4 = 3‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫وإذا أردنا تنفيذ هذه الخوارزمية بالحاسوب بلغة‬


‫باسكال فإننا ببساطة‬
Program substitution ;
Const
no_of_char = 28;
Var
I : integer;
letters :array[1.. No_of_char] of char;
Begin
for I := 1 to no_of_char do
letters [I] := char ))I+3( mod no_of_char(;
End.
‫برنامج استبدال الحروف‬
‫ثابت‬
‫عدد الحرف = ‪28‬‬
‫متغيرات‬
‫الحرف = مصفوفة حروف من ‪ 1‬إلي ‪28‬‬
‫أبدا‬
‫من ‪ 1‬إلي عدد الحرف‬
‫أجعل الستبدال = الحرف الذي بعد ثلثة مواقع منه وعند‬
‫انتهاء الحرف أبدا من الول‬
‫النهاية‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫أما إذا أردنا فك التشفير فإننا نكرر نفس البرنامج‬


‫فقد نجعل المعادلة‬
‫( ‪Letters [ I ]:= char ))I – 3 ( mod No _ of _ char‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫أي أن الحرف المستبدل هو الحرف السابق قبل‬


‫ثلث مواق ع م ن حرف الشفرة وعندما تكون‬
‫القيم ة س البة فإنن ا نضي ف "‪ "28‬وهي عدد‬
‫الحروف ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫مثال (‪: )6‬‬


‫حس ب خوارزمي ة يوليوس قيص ر ما الحرف‬
‫الص لي للمقابل للحروف المشفرة "أ" "ب"‬
‫"ت" مستعينا بالجدول السابق ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫مثال (‪: )6‬‬
‫‪ ‬موقع الحرف المشفر "أ" = ‪ ، 1‬موقع الحرف‬
‫المقابل = ‪ 2 - = 3 – 1‬ل يوجد حرف رقمه –‬
‫‪ 2‬إذن نقوم بجمع ‪ 28‬وهي عدد الحروف وعليه‬
‫يكون الحرف المقاب ل للحرف "أ" هو الحرف‬
‫الذي موقعه = ‪ 26 = 28+2-‬أي الحرف "ه "‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫الحرف المشف ر "ب" = ‪ ، 2‬موقع‬ ‫موق ع‬
‫(‪: )6‬‬ ‫‪‬مثال‬
‫الحرف المقابل = ‪27 = 28 + 1 - = 3 – 2‬‬
‫وهو الحرف "و" ‪.‬‬
‫‪ ‬موق ع الحرف المشف ر "ت" = ‪ ، 3‬موقع‬
‫الحرف المقابل = ‪28 = 28 + 0 = 3 – 3‬‬
‫وهو الحرف "ي" ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫مثال (‪: )7‬‬


‫حسب خوارزمية يوليوس قيصر ما تشفير عبارة‬
‫" أوقف الشراء " مستعينا بالجدول أعله ‪:‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫الل ف بعد الشفرة ثاء والواو "ب"‬ ‫يكون‬


‫(‪: )7‬‬ ‫سمثال‬
‫والقاف ميما والفاء لما واللم تصبح ياء والشين‬
‫تص بح طاء والراء تص بح شيناً وم ن ث م تصبح‬
‫العبارة ( أوقف الشراء ) ( ثنمل ثهطشث ) وإذا‬
‫عرف الطرف الخ ر مفتاح الس تبدال ‪ 3‬فإنه‬
‫سيفك تلك الشفرة ويصل إلي النص الواضح ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫فك الشفرات ‪:‬‬
‫تعتمد خوارزميات فك الشفرات على التي ‪:‬‬
‫‪ .1‬المعرفة بخواص اللغة مثل تكرارية الحروف‬
‫في اللغة ‪ ،‬ففي كل لغة تتكرر الحروف بنسب‬
‫ثابتة ‪ ،‬وهناك إحصائية ثابته بالنسبة المئوية‬
‫لتكرار أي حرف في أي لغة ‪،‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫فك الشفرات ‪:‬‬
‫تعتمد خوارزميات فك الشفرات على التي ‪:‬‬
‫ث م أ ن هناك حروف ا معين ة تتكرر ف ي الكلمة‬
‫الواحدة وحروف أخري ل تتكرر مثل حروف‬
‫العط ف ف ي اللغ ة العربي ة فيمك ن أ ن تجد الواو‬
‫جوارها واواً أو الفاء جوارها فاءاً‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫فك الشفرات ‪:‬‬


‫تعتمد خوارزميات فك الشفرات على التي ‪:‬‬
‫وكذل ك حروف الج ر فيمك ن أ ن تجد جوار اللم‬
‫لماً وجوار الباء با ءً ولكن قل أو ل تكاد تجد‬
‫جوار القاف قافاً أو جوار النون نوناً ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫فك الشفرات ‪:‬‬


‫تعتمد خوارزميات فك الشفرات على التي ‪:‬‬
‫كذلك هناك حروف يكثر تجاورها مثل ألف ولم‬
‫في اللغ ة العربي ة وكي و ي و ‪ q u .‬في اللغة‬
‫النجليزية ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫فك الشفرات ‪:‬‬


‫تعتمد خوارزميات فك الشفرات على التي ‪:‬‬
‫كذل ك هناك تكث ر ف ي بداي ة الكلمات ف ي ك ل لغة‬
‫مثل حرف اللف في اللغة العربية وحرف الي ‪I‬‬
‫في اللغة النجليزية ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫فك الشفرات ‪:‬‬
‫تعتمد خوارزميات فك الشفرات على التي ‪:‬‬

‫‪ .1‬معرف ة أس لوب المناف س اللغوي والمنطقي‬


‫والعلم ي وذل ك ع ن طري ق كتابات ه المفتوحة‬
‫وكلمه وحواره مع الخرين ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫فك الشفرات ‪:‬‬
‫تعتمد خوارزميات فك الشفرات على التي ‪:‬‬
‫‪ .1‬تخمي ن نوع الرس ائل الت ي يمك ن أ ن يرسلها‬
‫بناء عل ى معلومات ع ن أنشطت ه وعلقات ه مع‬
‫الطرف الخ ر‪ ،‬فه ل ه ي رس ائل تجارية‪،‬‬
‫رياضية‪ ،‬أمنية‪ ،‬ثقافية‪ ،‬أكاديمية ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫فك الشفرات ‪:‬‬
‫تعتمد خوارزميات فك الشفرات على التي ‪:‬‬
‫‪ .1‬محاول ة الوص ول بقدر المكان إلي أنواع‬
‫الخوارزميات الت ي تس تخدم ف ي التشفير فإذا‬
‫عرفن ا عل ى س بيل المثال أن ه يستخدم شفرة‬
‫قيصر‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫فك الشفرات ‪:‬‬
‫تعتمد خوارزميات فك الشفرات على التي ‪:‬‬

‫يمك ن معرف ة المفتاح بس هولة ع ن طريق‬


‫خواص حروف اللغة ثم تجربة استبدال حرف‬
‫بآخر حتى نصل للحل ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫فك الشفرات ‪:‬‬
‫تعتمد خوارزميات فك الشفرات على التي ‪:‬‬
‫لبد من الشارة في أن سرعة الوصول إلي فك‬
‫الشفرة يتناس ب تناس باً طردياً وأس ياً مع‬
‫جزئيات المعلوم ة المكتشف ة ‪ .‬مثلً إذا اكتشفنا‬
‫الحرف ألف يمكن أن نكتشف الحرف لم‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫فك الشفرات ‪:‬‬
‫على رالتي ‪:‬‬
‫تجاورها‬ ‫الشفراتي يكث‬ ‫خوارزميات فك‬
‫الحروف الت‬ ‫تعتمد ن وك ل‬
‫والحرف‬
‫للل ف‪ ،‬وم ن ث م ك ل حرف يت م اكتشاف ه يؤدي إلي‬
‫اكتشاف الحروف الخري ‪ .‬وهكذا تتزاي د سرعة‬
‫اكتشاف الحروف أضعافا مضاعفة‪ ،‬وهذا ما يعرف‬
‫في علم تعقيدات الحاسوب بالسرعة السية‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫تعقيدات شفرات التبديل والتعويض ‪:‬‬
‫يمكن تعقيد شفرة يوليوس قيصر ليكون مفتاحها‬
‫بدلً من الرقم ثلثة أي رقم آخر مثل أنه يكون‬
‫المفتاح "‪ "7‬فإ ن "أ " ستصبح بع د عملية‬
‫التشفير "د" ‪" ،‬ن" ستصبح بعد عملية التشفير‬
‫"ث" وهكذا ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫تعقيدات شفرات التبديل والتعويض ‪:‬‬


‫نلحظ في شفرة يوليوس قيصر أن كل الحروف‬
‫يتم تشفيرها بمفتاح واحد فقط فإذا اكتشف ذلك‬
‫المفتاح سيتم فك الشفرة ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫تعقيدات شفرات التبديل والتعويض ‪:‬‬


‫يمك ن تعقيد هذه الشفرة بإنشاء جدول حروف‬
‫يكون لك ل حرف مفتاح خاص يت م تحديد هذا‬
‫المفتاح عشوائياً (يختلف هذا الجدول اختلفاً‬
‫كلي ًا عن جدول ترتيب الحروف)‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫تعقيدات شفرات التبديل والتعويض ‪:‬‬


‫ويكون هذا الجدول الجديد مفتاح الشفرة السري‬
‫بين الراسل والمرسل إليه ويتم هذا الجراء في‬
‫الحاسوب تلقائيا بواسطة الدالة ‪.RANDOM‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫معلومة ‪:‬‬
‫الدالة ‪ )RANDOM )N‬تعطي رقما عشوائيا‬
‫بين ‪ 1‬و ‪ N‬فمثل ‪:‬‬
‫يمكن أن تعطي ‪)RANDOM)6 6 ، 5 ، 4 ، 3 ، 2 ، 1‬‬
‫يمكن أن تعطي أي رقم بين ‪ 1‬و ‪)RANDOM)28 28‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫وحتى يتم ذلك يمكن عمل تعديل بسيط في البرنامج‬


‫الس ابق وذل ك باس تدعاء الدال ة العشوائي ة الرقمية‬
‫أي تلك التي تعطي رقماً عشوائياً بين واحد وعدد‬
‫الحروف حس ب نظام التمثي ل واس تخدام مصفوفة‬
‫منطقية لتحدد هل الرقم العشوائي تم استخدامه أم‬
‫ل على النحو التالي ‪:‬‬
Program random_change ;
Const
n = 28;
Var
L : integer;
substit :array [1.. n] of integer;
character :array [1.. n] of char;
change :array [1.. n] of Boolean;
Begin
for I := 1 to no_of_char do
begin
substit [I] := I;
change [I] := false;
end;
for I := 1 to no_of_char do
begin
L := random )n(;
if not change [L] then
begin
substit [I] := L;
change [I] := true;
end;
characters [I] := char )substit [I](;
end;
End.
‫برنامج تبديل الحروف‬
‫ثابت‬
‫عدد الحروف ‪28‬‬
‫متغيرات‬
‫م ‪ :‬عدد صحيح‬
‫مصفوفة تغيير الرقام‬
‫مصفوفة الحروف المشفرة‬
‫مصفوفة هل استخدم الرقم العشوائي ؟‬
‫أبدا‬
‫من ‪ 1‬إلي عدد الحروف‬
‫أبدا‬
‫أجعل كل رقم في مكانه‬
‫أجعل هل تم التغير = ل لكل الحروف‬
‫النهاية‬
‫من ‪ 1‬إلي عدد الحروف‬
‫أبدا‬
‫أجعل م = الرقم العشوائي الذي تم توليده من ‪ 1‬إلي ن‬
‫هل تم تغير في الحروف رقم م من قبل‬
‫أبدا‬
‫وضع رقم الحرف إلي الرقم العشوائي‬
‫أجعل هل تم التغيير = نعم‬
‫النهاية‬
‫الحرف المشفر في المصفوفة = الحرف المقابل لرقم الحرف‬
‫النهاية‬
‫انتهت عملية تغيير وضع الرقام‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫هذا البرنامج يقوم أولً بافتراض كل الحروف في‬


‫وضعه ا الط بيعي‪ ،‬ث م بع د ذل ك يت م توليد أرقاماً‬
‫عشوائي ة بالدال ة ‪ random‬ولك ن لن هناك‬
‫احتمالً بأن تعطي الدالة العشوائية أرقاماً متكررة‬
‫ينتج عنها حرفان أو أكثر في موقع واحد‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫فكان لب د م ن اس تخدام المص فوفة المنطقية‬


‫لزالة التكرارية‪ ،‬ولبد من إعطاء القيم الصلية‬
‫للحروف لمص فوفة التبدي ل حت ى تظل الرقام‬
‫التي لم يحدث لها تغيير في وضعها القديم ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬

‫إن نقطة الضعف في هذه الشفرة تتمثل في أنها‬


‫يمك ن أ ن تكتش ف باس تخدام التكرار النسبي‬
‫للحرف ف ي اللغ ة كم ا ذكرن ا م ن قب ل‪ ،‬لن كل‬
‫حرف يقابل ه حرف وبهذا س تظل التكرارية‬
‫النسبية للحروف كما هي مع تغيير الحرف ومن‬
‫ثم يمكن اكتشاف الحرف المقابل وفك الشفرة ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /5‬خوارزميات تشفير‬
‫المعلومات‬
‫ملحوظة ‪:‬‬
‫لحظ إننا لم نعط المسافة بين الكلمات رمزاً في‬
‫المثل ة م ن أج ل المثال ولكنه ا ف ي الواق ع هي‬
‫مثله ا مث ل الحروف له ا رم ز ف ي الحاسوب‬
‫ويس ري عليه ا التبدي ل بك ل أنواع ه مثله ا مثل‬
‫الحرف ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫عندم ا تحدثن ا ع ن أنظم ة الترمي ز الثنائ ي في‬


‫منهج السنة الولي ذكرنا أن كل حرف لبد أن‬
‫يكون ب ه رم ز ثنائ ي مفرد‪ ،‬وم ن هنا تطورت‬
‫أنظم ة الترمي ز الثنائ ي م ن نظام ب ي سي دي‬
‫(‪ )BCD‬الس داسي إل ي نظام البسيديك‬
‫(‪ )EBEDIC‬ونظام آسكي (‪ )ASCII‬الثماني ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫ولك ن ذكرن ا ف ي الفقرة الس ابقة أ ن لك ل لغة‬


‫خواص ها ف ي التكرار النس بي للحروف وداخل‬
‫اللغة لكل مؤسسة أو مركز معلومات خواص في‬
‫نوع المعلومات الت ي يتعام ل معه ا‪ ،‬فإن كان‬
‫مركزاً إحص ائياً فإ ن أكث ر المعلومات ستكون‬
‫أرقاماً‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫وإ ن كان مركزاً ص حفياً فإ ن أكثر المعلومات‬


‫ستكون صوراً وأما الراديو فإن أكثر المعلومات‬
‫كلماً ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫م ن هذا المنطل ق كان لب د م ن تحوي ر التمثيل‬


‫الثنائ ي أ و تغييره ليمك ن م ن تمثيل ه تمثيلً أمثل‬
‫لل بيانات بناء عل ى خواص اللغة وخواص‬
‫البيانات ‪ ،‬ونعنى بالتمثيل المثل هو التمثيل الذي‬
‫يأخ ذ أق ل حج م ممك ن م ن ذاكرة الحاس وب ‪ ،‬أو‬
‫وسائط تخزين الحاسوب ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫ومن ثم أقل وقت ممكن في إرسال تلك البيانات‬


‫وهذا يتم ببساطة بتمثيل أكثر الحروف أو الرقام‬
‫أو الرموز تكراراً بأقل عدد من الثنائيات‪ ،‬ويزيد‬
‫عدد الثنائيات الممثلة للحرف أو الرقم أو الرمز‬
‫كلما قلت تكرارية استخدامه‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫وهذه الطريقة أو الخوارزمية تعرف بخوارزمية‬


‫هوفمان ويت م تص ميمها بطريق ة الشجرة الثنائية‬
‫على النحو التالي ‪:‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫‪ -1‬نفترض أن لدينا رمز أ ‪ 1‬و أ ‪ 2‬و أ ‪ 3‬و أ ‪ 4‬و‬


‫أ ‪ 5‬وكان التكرار النس بي لهذه الرموز مرتبة‬
‫تنازليا حسب الجدول أدناه ‪:‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫التكرار النسبي‬ ‫الرمز‬


‫‪40%‬‬ ‫أ‪1‬‬
‫‪20%‬‬ ‫أ‪2‬‬
‫‪20%‬‬ ‫أ‪3‬‬
‫‪10%‬‬ ‫أ‪4‬‬
‫‪10%‬‬ ‫أ‪5‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫‪ -2‬يت م رب ط ك ل رمزي ن م ن أس فل إل ي أعلى‬


‫بالترتيب التالي ‪:‬‬
‫أ ‪ /‬أ‪ 4‬و أ‪ 5‬يت م ربطهم ا ويس تبدل برم ز ربط‬
‫جدي د أس مه أ‪ 5 4‬وبتكراري ة افتراضي ة تساوي‬
‫جمعهما النسبي ‪. %20 = %10 + %10‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫ب ‪ /‬الن لدين ا ‪ 4‬رموز ه م الرمز أ‪ 1‬بتكرار‬


‫نس بي ‪ %40‬والرمز أ‪ 2‬و أ‪ 3‬و أ‪ 54‬بتكرار‬
‫نسبي ‪ %20‬فيمكننا اختيار أي اثنين من أ‪ 2‬و‬
‫أ‪ 3‬و أ‪ 54‬فمثلً أ‪ 2‬و أ‪ 54‬وربطه ا برم ز جديد‬
‫سمه أ‪ 254‬بتكرار نسبي ‪. %40‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫ج ‪ /‬الن أصبح لدينا ثلث رموز هم أ‪ 1‬وأ‪ 3‬و‬


‫أ‪ 254‬بتكرار نسبي ‪ %40‬و ‪ %20‬و ‪%40‬‬
‫على التوالي ‪ .‬لذا يتم ربط أ ‪ 3‬مع أي من أ‪ 1‬أو‬
‫أ‪ 254‬فمثل أ‪ 254‬برمز ربط جديد سمه أ‪3254‬‬
‫بتكرار نسبي ‪. %60‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫د ‪ /‬الن بق ي لن ا رمزي ن ه م أ‪ 1‬و أ‪ 3254‬يتم‬


‫ربطهما برمز جديد أسمه أ‪ 13254‬بتكرار نسبي‬
‫‪. %100‬‬
‫بهذا تكتمل شجرة هوفمان حسب الرسم أدناه ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫أ‪13254‬‬
‫أ‪3254‬‬
‫أ‪1‬‬
‫أ‪452‬‬
‫أ‪3‬‬
‫أ‪54‬‬
‫أ‪2‬‬
‫أ‪4‬‬
‫أ‪5‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫نلح ظ أ ن الشجري ة مائل ة ب ل شب ه س اقطة على‬


‫الجانب اليسر أما تكويد الرموز فحسب الجدول‬
‫أدناه ‪:‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬
‫التكويد‬ ‫الرمز‬
‫‪1‬‬ ‫أ‪1‬‬
‫‪100‬‬ ‫أ‪2‬‬
‫‪10‬‬ ‫أ‪3‬‬
‫‪1000‬‬ ‫أ‪4‬‬
‫‪1000‬‬ ‫أ‪5‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬
‫متوسط حجم الشجرة ‪:‬‬
‫يقاس متوس ط حج م الشجرة بطول الرمز‬
‫مضروب في التكرارية بالنسبة للرمز فمن جدول‬
‫التكرار النس بي وجدول التكوي د يمك ن حساب‬
‫حج م هذه الشجري ة ب ‪× 3 + %40 × 1‬‬
‫‪× 4 + %10 × 4 + %20 × 2 + %20‬‬
‫‪ 2.2 = %10‬ثنائية ‪ /‬الرمز ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬
‫متوسط حجم الشجرة ‪:‬‬
‫تعت بر م ن ميزات تكوي د هوفمان أ ن يعط ي كما‬
‫ذكرنا التكويد المثل ‪ ،‬ومن ثم حتى إذا تم تغيير‬
‫اختيار ربط الرموز التي لها في كل مرحلة نفس‬
‫التكرار النس بي ل ن يؤث ر ف ي القيم ة النهائية‬
‫لمتوسط حجم الشجرية‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫إ ن الرم ز أ‪ 1‬و أ‪ 2‬و أ‪ 3‬و أ‪ 4‬و أ‪ 5‬يمك ن أن‬


‫تكون رموزاً لي رسائل أو لكلمات أو توجيهات‬
‫هامة‪ ،‬ولها تكرارية مثلً يمكن أن تكون رسائل‬
‫بي ن مكت بين ف ي بورتس ودان و الخرطوم في‬
‫شرك ة اس تيراد‪ ،‬وبه ا تكراري ة س لم البضاعة‬
‫للزبون ‪%40‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫وتس تلم البضاع ة من الباخرة ‪ %20‬وخزن‬


‫البضاعة ‪ %20‬وإرسال البضاعة إلي الخرطوم‬
‫‪ %10‬وتسلم التحويل المالي ‪ %10‬أو يمكن أن‬
‫تكون نف س هذه الرموز يرم ز به ا لرسائل‬
‫عسكرية في العمليات‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫مث ل (تس لم الغذي ة) ‪( %40‬وتسلم‬


‫الذخيرة)‪( %20‬وتس لم الرواتب) ‪ %20‬و‬
‫(الهجوم على العدو) ‪ %10‬و (إيقاف الهجوم)‬
‫‪. %10‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫تكويد هوفمان المثالي للحروف النجليزية ‪:‬‬


‫إذا كان ت تكراري ة الحروف النجليزي ة حسب‬
‫دراس ات إحص ائية مكثف ة للغ ة النجليزي ة كانت‬
‫حسب الجدول المرفق – فإن خوارزمية هوفمان‬
‫يمكن أن تصمم عاى النحو التالي ‪:‬‬
‫تكويد هوفمان المثالي للحروف النجليزية ‪:‬‬
‫‪ .1‬اربط ‪ z‬و‪ q‬في ‪ qz‬بنسبة ‪%0.5‬‬
‫‪ .2‬اربط ‪ qz‬مع ‪ x‬بنسبة ‪ %1‬من ‪. xqz‬‬
‫‪ .3‬اربط ‪ k‬و ‪ j‬في ‪ jk‬بنسبة ‪. %1‬‬
‫‪ .4‬اربط ‪ xqz‬و ‪ jk‬في ‪ jk xqz‬بنسبة ‪. %2‬‬
‫‪ .5‬اربط ‪ g‬و ‪ v‬في ‪ vg‬بنسبة ‪%2.5‬‬
‫‪ .6‬اربط ‪ b‬و ‪ w‬في ‪ wb‬بنسبة ‪%3‬‬
‫تكويد هوفمان المثالي للحروف النجليزية ‪:‬‬
‫‪ .1‬اربط ‪ p‬و ‪ y‬في ‪ yp‬بنسبة ‪%4‬‬
‫‪ .2‬اربط ‪ f‬مع ‪ jkxqz‬في ‪ jkxqzf‬بنسبة ‪%4‬‬
‫‪ .3‬اربط ‪ vg‬و ‪ wb‬في ‪ wbvg‬بنسبة ‪%5.5‬‬
‫‪ .4‬اربط ‪ m‬و‪ u‬في ‪ um‬بنسبة ‪%6‬‬
‫‪ .5‬اربط ‪ I‬و ‪ c‬في ‪ lc‬بنسبة ‪%6.5‬‬
‫‪ .6‬اربط ‪ d‬و ‪ yp‬في ‪ ypd‬بنسبة ‪%9.5‬‬
‫تكويد هوفمان المثالي للحروف النجليزية ‪:‬‬
‫‪ .1‬اربط ‪ jkxqzf‬مع ‪ wbvg‬في‬
‫‪ wbvgjkxqzf‬بنسبة ‪%9.5‬‬
‫‪ .2‬اربط ‪ s‬و ‪ h‬في ‪ sh‬بنسبة ‪%12‬‬
‫‪ .3‬اربط ‪ um‬مع ‪ j‬في ‪ jum‬بنسبة ‪%12.5‬‬
‫‪ .4‬اربط ‪ c‬مع ‪ r‬في ‪ rc‬بنسبة ‪%13‬‬
‫‪ .5‬اربط ‪ o‬مع ‪ n‬في ‪ on‬بنسبة ‪%15‬‬
‫تكويد هوفمان المثالي للحروف النجليزية ‪:‬‬
‫‪ .1‬اربط ‪ a‬مع ‪ ypd‬في ‪ aypd‬بنسبة ‪%16‬‬
‫‪ .2‬اربط ‪ wbvgdkxqzf‬مع ‪ t‬في‬
‫‪ twbvgdkxqzf‬بنسبة ‪%18.5‬‬
‫‪ .3‬اربط ‪ e‬مع ‪ sh‬في ‪ esh‬بنسبة ‪%25‬‬
‫‪ .4‬اربط ‪ jum‬مع ‪ vlc‬في ‪ vlcjum‬بنسبة‬
‫‪%25.5‬‬
‫تكويد هوفمان المثالي للحروف النجليزية ‪:‬‬
‫‪ .1‬اربط ‪ on‬مع ‪ apyd‬في ‪ apydon‬بنسبة‬
‫تكرارية ‪%31‬‬
‫‪ .2‬اربط ‪ twbvghjxqzf‬مع ‪ esh‬في‬
‫‪ eshtwbvgjkxqzf‬بنسبة ‪%43.5‬‬
‫‪ .3‬اربط ‪ rkcium‬مع ‪ apydib‬في‬
‫‪ apydibrkcium‬بنسبة ‪%56.5‬‬
‫تكويد هوفمان المثالي للحروف النجليزية ‪:‬‬
‫‪ .1‬اربط ‪ eshtwbvgkxqzf‬مع‬
‫‪ apydibrkcium‬في‬
‫‪apydonrlcjumeshtwbvgjkxqzf‬‬
‫بنسبة تكرارية ‪%100‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬
‫تمرين‬
‫‪ .1‬ماالغرض من معرفة أماكن تخزين المعلومات ؟‬
‫‪ .2‬ما المقصود بالبحث المتتالي ؟‬
‫‪ .3‬ما المقصود بالبحث الثنائي ؟‬
‫‪ .4‬ما المفتاح الساسي ؟‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬
‫تمرين‬
‫‪ .1‬حدد عيوب اس تخدام الس ماء كمفاتي ح مع‬
‫ضرب أمثلة لذلك ‪.‬‬
‫‪ .2‬أيهما أفضل للبحث المتتالي أم الثنائي ؟ وضح‬
‫السباب ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬
‫تمرين‬
‫‪ .1‬صف خوارزمية البحث المتتالي ‪.‬‬
‫‪ .2‬صف خوارزمية البحث الثنائي ‪.‬‬
‫‪ .3‬ما المقصود بتصنيف المعلومات ؟‬
‫‪ .4‬صف أحد خوارزميات التبديل ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬
‫تمرين‬
‫‪ .1‬صف أحد خوارزميات الختيار ‪.‬‬
‫‪ .2‬أيهم ا أفض ل للس تخدام ف ي ترتي ب قائم ة من‬
‫العداد أس لوب الفقاع ة ‪ ،‬أ م اسلوب الختيار‬
‫المباشر ؟ وضح السباب ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬
‫تمرين‬
‫‪ .1‬عرف الشفرة ‪.‬‬
‫‪ .2‬ما الغرض من استخدام الشفرة ؟‬
‫‪ .3‬حدد خطوات الشفرة ‪.‬‬
‫‪ .4‬على ماذا يعتمد فك الشفرة ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫تمرين‬
‫‪ .1‬أعم ل شفرة ش بيه بشفرة يوليوس قيصر‬
‫مستخدما الرقم "‪ "5‬كمفتاح لهذه الشفرة ‪.‬‬
‫‪ .2‬وض ح عي ب الشفرة الت ي عملته ا في المثال‬
‫السابق ‪.‬‬
‫الخوارزميات البيانية‬
‫‪ /6‬ترميز‬
‫هوفمان‬

‫تمرين‬
‫‪ .1‬ما الح ل المناس ب حس ب رأي ك لتفادي عيب‬
‫الشفرة في المثال السابق ؟‬
‫نظم التشغيل‬
‫‪/1‬‬
‫مدخل‬

‫نظام التشغي ل ه و برنام ج يعم ل بي ن مستخدم‬


‫الحاسوب وجهاز الحاسوب يمكن المستخدم من‬
‫تنفي ذ برمجيات ه بس هولة وفعالي ة وبكفاء ة عالية‬
‫(نعنى بالكفاءة العالية التنفيذ في أقل وقت ممكن‬
‫وفي أقل مساحة من الذاكرة)‬
‫نظم التشغيل‬
‫‪/1‬‬
‫مدخل‬

‫يمكن أن نتصور نظام التشغيل كتنظيم فرعي من‬


‫نظام الحاسوب في الرسم التالي ‪:‬‬
‫مستخدم‬ ‫مستخدم‬ ‫مستخدم‬ ‫مستخدم‬ ‫مستخدم‬ ‫مستخدم‬ ‫مستخدم‬
‫(ن)‬ ‫(‪)6‬‬ ‫(‪)5‬‬ ‫(‪)4‬‬ ‫(‪)3‬‬ ‫(‪)2‬‬ ‫(‪)1‬‬

‫معالج‬ ‫إرسال‬ ‫لغة‬ ‫طباعة‬ ‫لغة‬ ‫تخزين‬ ‫نظام‬


‫النصوص‬ ‫بيانات‬ ‫تجميع‬ ‫باسكال‬ ‫بيانات‬ ‫قاعدة‬
‫تقرير‬
‫(اسمبلي)‬ ‫بيانات‬

‫البرامج التطبيقية أو برامج المستخدمين‬

‫نظام التشغيل‬

‫جهاز الحاسوب‬
‫(الهاردوير)‬
‫نظم التشغيل‬
‫‪/1‬‬
‫مدخل‬

‫نلحظ من الرسم أن نظام التشغيل ينظم أو يتحكم‬


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

‫وأحيان ا ب ل ف ي كثي ر م ن الحيان ق د يطلب عدد‬


‫المستخدمين نفس الخدمة في وقت واحد ‪ .‬إذن‬
‫يمك ن أ ن نقول أ ن برنام ج نظام التشغي ل هو‬
‫برنام ج تحك م يس اعد ف ي تنفي ذ برامجه م وإنها‬
‫أعماله م باس تخدام الح د الدن ي من إمكانات‬
‫الحاسوب (الوقت والذاكرة) ‪.‬‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫عند اختراع الحاسوب في نهاية الربعينات كان‬


‫التعامل مع الحاسوب باللغة الثنائية أو ما يعرف‬
‫بلغ ة الماكين ة‪ ،‬وكان مس تخدم الحاس وب لب د أن‬
‫يكون مبرمج ا بلغ ة الماكين ة ول م يكن حينذاك‬
‫يوجد نظام تشغيل أو مشغل ‪،‬‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫ب ل كان الم برمج نفس ه الذي يشغ ل الحاسوب‬


‫ليقوم بتنفيذ برنامجه‪ ،‬ثم بعد ذلك يدخل المبرمج‬
‫التال ي ويشغ ل الحاس وب لتنفي ذ عمله وهكذا‬
‫ولتنظي م أعمال الم برمجين يقوم الم برمج بحجز‬
‫الحاسوب لفترة معينة كل ساعة ‪،‬‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫ث م الذي يلي ه فإذا اكتمل ت الس اعة ول م ينفذ‬


‫الم برمج عمل ه يوق ف عمل ه بتس ليم الحاسوب‬
‫للمبرمج التالي‪ .‬تم في نهاية الخمسينيات تصميم‬
‫المترجمات مث ل مترج م القول (باس كال حاليا)‪،‬‬
‫ومترجم فورتران ‪ ،‬ومترجم كوبول ‪.‬‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫وق د س هلت المترجمات عملي ة تص ميم البرامج‬


‫وساعدت في كتابة برامج متطورة ومتعددة ولكن‬
‫لم تساعد في عملية التشغيل‪ ،‬وظل التشغيل يأخذ‬
‫وقت ا طويل حي ث يت م أول أنزال المترج م من‬
‫الشريط إلي الذاكرة ‪،‬‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫ث م بع د ذل ك إنزال ال برنامج ث م تشغي ل المترجم‬


‫على البرنامج ليتحول غلي لغة التجميع ثم إعادة‬
‫المترجم إلي الشريط على البرنامج المترجم إلي‬
‫لغ ة التجمي ع للتص حيح باللغ ة الثنائي ة‪ ،‬ثم إعادة‬
‫التجميع إلي الشريط ثم تشغيل البرنامج المترجم‬
‫باللغة الثنائية‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫أ و م ا يعرف بال برنامج الهدف عل ى الحاسوب‪.‬‬


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

‫هذا م ن ناحي ة‪ ،‬م ن ناحي ة أخري خلل فترة كل‬


‫إنزال شري ط لغ ة البرمج ة وإعادته ا للشريط‬
‫وإنزال شريط لغة التجميع وإعادتها إلي الشريط‬
‫يظل الحاسوب عاطل غير مستخدم فإذا علمنا أن‬
‫تكلفة ساعة الحاسوب في تلك الفترة حوالي ‪45‬‬
‫دولر في الساعة‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫إذا عمل لمدة ‪ 24‬ساعة وحوالي ‪ 90‬دولرا في‬


‫الساعة إذا عمل لفترة ‪ 12‬ساعة في حين أن الحد‬
‫الدن ى للجور ف ي تل ك الفترة كان فقط دولرا‬
‫واحدا للساعة بالوليات المتحدة ‪ .‬ممكن أن نري‬
‫مدي الخس ارة الناتج ة ع ن أ ي وق ت يضيع دون‬
‫استخدام الحاسوب لتنفيذ أعمال مفيدة ‪.‬‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫لهذا ت م خل ق وظيف ة جديدة ف ي الحاس وب هي‬


‫وظيفة المشغل وهو الذي يقوم بأداء كل العمال‬
‫اليدوي ة م ن إنزال للشرط ة وغيره ا والتي كان‬
‫يقوم به ا الم برمجون‪ ،‬وق د أدي ذل ك إل ي تقليل‬
‫الزمن الضائع من الحاسوب‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫لم ا كان للمشتغلي ن م ن خ برة في هذه العمال‬


‫اليدوية أكثر من المبرمجين ثم أنه عندما يظهر‬
‫خط أ ف ي ال برنامج – فأ ن المشغل يقوم مباشرة‬
‫بإيقاف ذلك البرنامج وإعادته للمبرمج والبدء في‬
‫تشغيل البرنامج التالي ‪.‬‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫ولق د كان ف ي الس ابق كم ا ذكرن ا (عندم ا ل م يكن‬


‫هنال ك مشغ ل يقوم الم برمج باس تخدام ك ل وقته‬
‫ويحاول تص حيح برنامج ه إ ن كان ت به أخطاء‬
‫خلل وقت ه المحجوز) ولك ن بع د خل ق وظيفة‬
‫المشغل يتم الستفادة من الوقت الذي يصحح فيه‬
‫المبرمج برنامجه في تشغيل برنامج آخر ‪.‬‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫كذلك لتقليل الوقت الضائع في إنزال وإعادة أشرطة‬


‫المترجمات والتجمي ع أدخلت فكرة حزم العمال‬
‫وه ي أ ن يت م تشغي ل ك ل مجموع ة أعمال متساوية‬
‫في وق ت واح د مثل ك ل ال برامج المس تخدمة للغة‬
‫"القول" يت م تشغيله ا م ع بعضه ا حي ث يتم إنزال‬
‫مترجم "القول" لكل هذه العمال في وقت واحد‪.‬‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫وبالمثل برامج فورتران أو برنامج كوبول وبهذا‬


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

‫يقوم المشغل بتوجيه الحاسوب للنتقال للبرنامج‬


‫التالي ويظل الحاسوب عاطل خلل تلك الفترة أما‬
‫إذا غف ل ع ن ذل ك س يظل الحاس وب عاطل حتى‬
‫ينتب ه (وبهذا يظ ل وقت ا ضائع ا ف ي النتقال من‬
‫برنام ج إل ي آخ ر داخ ل الحزم ة إذا حدث خطأ‪،‬‬
‫وهناك حاجة لمراقبة لصيغة من المشغل) ‪.‬‬
‫نظم التشغيل‬
‫‪ /2‬ما قبل نظم‬
‫التشغيل‬

‫لمعالج ة هذه المشكل ة ت م إدخال فكرة التوالي‬


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

‫وهذه الفكرة أ و هذا ال برنامج والذي يسمي‬


‫بالمراقب المقيم ‪ resident monitor‬يعتبر‬
‫أول خطوة في تصميم برنامج نظام التشغيل ‪.‬‬
‫نظم التشغيل‬
‫‪ /3‬المرقب‬
‫المقيم‬

‫مثال لوامر برنامج المراقب المقيم ‪:‬‬


‫‪FTN$‬‬ ‫تشغيل مترجم فورتران‬
‫تشغيل لغة التجميع اسمبلي ‪A S M $‬‬
‫‪RUM$‬‬ ‫تشغيل برنامج المستخدم‬
‫نظم التشغيل‬
‫‪ /3‬المرقب‬
‫المقيم‬

‫وللتفريق بين عمل وآخر لبد أن يكون ‪:‬‬


‫‪JOB $‬‬ ‫أول سطر في العمل‬
‫وآخر سطر في العمل ‪END $‬‬
‫نظم التشغيل‬
‫‪ /3‬المرقب‬
‫المقيم‬

‫وهذان الس طران يمك ن ع ن طريقهم ا معرفة‬


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

‫نلح ظ م ن الس طر أعله أنه ا تبدأ بعلمة دولر‬


‫(‪ )$‬وفي بعض الجهزة مثل (‪ ) IBM‬كانت تبدأ‬
‫بعلم ة (‪ )/‬وهذه العلم ة ضروري ة للتفري ق بين‬
‫أس طر أوام ر التشغي ل وأس طر البرنامج‬
‫والمدخلت وعلي ه س يتم تشغي ل العمال على‬
‫النحو التالي ‪:‬‬
‫نظم التشغيل‬
‫‪ /3‬المرقب‬
‫المقيم‬

‫‪JOB $‬‬ ‫بداية عمل جديد‬


‫‪FTN $‬‬ ‫تشغيل مترجم فورتران‬
‫البرنامج‬
‫ترجمة برنامج فورتران إلي لغة الماكينة ‪LOAD $‬‬
‫تشغيل البرنامج على البيانات ‪RUN $‬‬
‫نظم التشغيل‬
‫‪ /3‬المرقب‬
‫المقيم‬

‫البيانات‬

‫نهاية العمل ‪END $‬‬


‫‪JOB $‬‬ ‫بداية عمل جديد‬
‫نظم التشغيل‬
‫‪ /4‬المراقب‬
‫والمستخدم‬

‫لق د أحدث برنام ج المراق ب المقي م م ع حزمة‬


‫العمال تطورا ك بيرا ف ي رف ع كفاء ة تشغيل‬
‫الحاس وب‪ ،‬وق د رأينا أن برنام ج المراق ب المقيم‬
‫يقوم بتشغي ل العمال داخ ل الحزم ة عمل بعد‬
‫عمل على التوالي‪،‬‬
‫نظم التشغيل‬
‫‪ /4‬المراقب‬
‫والمستخدم‬

‫ولكن هناك مشكلة إذا كان هناك خطأ في برنامج‬


‫أحد أعمال الحزمة مثل كتابة أمر غير موجود في‬
‫لغة البرمجة أو محاولة إدخال بيانات في مواقع‬
‫غير معرفة في الذاكرة (مثل أن تكون المصفوفة‬
‫أ معرفة من ‪ 1‬إلي ‪ 25‬ثم محاولة إدخال بيانات‬
‫في الموقع أ (‪ )26‬أو أ (صفر)‬
‫نظم التشغيل‬
‫‪ /4‬المراقب‬
‫والمستخدم‬

‫ونقول في هذه الحالة أن برنامج المراقب المقيم‬


‫قد وق ع ف ي مص يدة وس يضطر غل ي مس ح ذلك‬
‫البرنامج من الذاكرة ثم البدء في العمل التالي ‪.‬‬
‫نظم التشغيل‬
‫‪ /4‬المراقب‬
‫والمستخدم‬

‫كذلك من أخطاء المبرمجين الشائعة الدخول في‬


‫دوار ل نهائي عند قراءة البيانات ويقوم البرنامج‬
‫حينئ ذ بع د انتهاء أس طر ال بيانات بمحاول ة قراءة‬
‫أس طر العم ل التال ي ‪ ،‬لن أم ر القراء ة مستمر‬
‫بسبب خطأ الدوار اللنهائي ‪،‬‬
‫نظم التشغيل‬
‫‪ /4‬المراقب‬
‫والمستخدم‬

‫ولك ن لن أس طر العم ل التال ي تبدأ بعلمة (‪)$‬‬


‫وهي علمة أوامر المراقب المقيم سيقوم برنامج‬
‫المراق ب المقي م بمعامل ة هذه الحال ة معامل ة خطأ‬
‫في ال برنامج ويقوم تلقائي ا بمس حه من الذاكرة‬
‫والنتقال إلي العمل التالي في الحزمة ‪.‬‬
‫نظم التشغيل‬
‫‪ /4‬المراقب‬
‫والمستخدم‬

‫إذن ليست هناك مشكلة غذ عمل المبرمجون عبر‬


‫برنام ج المراق ب المقي م‪ ،‬ولك ن بعضهم ل يلتزم‬
‫بذلك ‪ ،‬ومن ثم ل يستطيع المراقب المقيم التحكم‬
‫في أخطائهم مما ينتج عنه دخول الحاسوب في‬
‫دوار مما يضطر ليقافه لمعالجة هذه المشكلة‪.‬‬
‫نظم التشغيل‬
‫‪ /4‬المراقب‬
‫والمستخدم‬

‫ثم إضافة ثنائية في جهاز الحاسوب (الهاردوير)‬


‫لتفري ق بي ن أوام ر المس تخدم وأوام ر المراقب‬
‫حي ث ل يقب ل الحاس وب أس طر المراق ب المقيم‬
‫كمدخلت في برنامج المستخدم على الطلق ‪.‬‬
‫نظم التشغيل‬
‫‪ /4‬المراقب‬
‫والمستخدم‬

‫إذن تمكين الحاسوب منذ البداية من التفريق بين‬


‫حال ة المس تخدم (‪ )USER MODE‬وحالة‬
‫المراقب أو المشرف (‪)Mode supervisor‬‬
‫يؤدي إل ي عدم قبول أوام ر برنام ج للمراقب‬
‫المقيم كمدخلت في البرنامج‬
‫نظم التشغيل‬
‫‪ /4‬المراقب‬
‫والمستخدم‬

‫ومن ثم يتم تنفيذ تلك الوامر التي تقوم بالتحكم‬


‫في أخطاء الم برمجين وإلغاء برامجه م من‬
‫الذاكرة والنتقال للعمال التالية ‪.‬‬
‫نظم التشغيل‬
‫‪ /5‬نداءات النظام‬

‫م ا دام م ن غي ر المس موح للم برمج التعام ل مع‬


‫أجهزة الدخال والخراج إل عبر المشرف – فإن‬
‫أجهزت الحاس وب الحديث ة جعل ت هناك أوامر‬
‫تس مي نداءات المراق ب أ و المشرف أو نداءات‬
‫النظام يمك ن ل برنامج المس تخدم استدعاءها إذا‬
‫رغ ب المس تخدم ف ي العام ل م ع أ ي جهاز من‬
‫أجهزة الدخال أو الخراج ‪.‬‬
‫نظم التشغيل‬
‫‪ /5‬نداءات النظام‬

‫عندما يصل النداء أو المر إلي البرنامج المراقب‬


‫أو المشرف فإنه يقوم بتنفيذ النداء ‪ .‬بهذا يكون‬
‫ال برنامج المشرف ه و الذي يقوم نياب ة عن‬
‫برنامج المستخدم عن طريق نداءات النظام بتنفيذ‬
‫كل أوامر المستخدم المتعلقة بالتعامل مع أجهزة‬
‫الدخال والخراج‬
‫نظم التشغيل‬
‫‪ /5‬نداءات النظام‬

‫وبهذا يكون البرنامج المراقب أو نظام التشغيل له‬


‫التحك م التام ف ي نظام الحاس وب فالمستخدم ل‬
‫يستطيع مباشرة التعامل مع الحاسوب لتنفيذ أي‬
‫عمل يجب أن يتم عبر نظام التشغيل المشرف ‪.‬‬
‫نظم التشغيل‬
‫‪ /5‬نداءات النظام‬

‫فنظام التشغي ل المشرف يتأك د أول م ن أ ن عمل‬


‫المس تخدم المراد تنفيذه مس موح ب ه ومقبول من‬
‫ذلك المستخدم ثم بعد ذلك يقوم بتنفيذ العمل نيابة‬
‫عن المس تخدم ث م يعي د للمس تخدم التحكم مرة‬
‫أخري فيما يليه من أوامر ‪.‬‬
‫نظم التشغيل‬
‫‪ /5‬نداءات النظام‬

‫لبد أن نلحظ أن هناك أوامر أخري غير التحكم‬


‫في الدخال والخراج ل يمك ن أ ن يسمح‬
‫للمس تخدم بتنفيذه ا مث ل أم ر إيقاف الحاسوب‬
‫(‪)HALT‬‬
‫نظم التشغيل‬
‫‪ /5‬نداءات النظام‬

‫وأم ر التحول م ن حال ة المس تخدم إل ي حالة‬


‫المشرف أ و الدخول ف ي منطق ة الذاكرة الخاصة‬
‫بال برنامج المشرف (أو نظام التشغيل)‬
‫‪. memory protection‬‬
‫نظم التشغيل‬
‫‪ /6‬ساعة الحاسوب‬
‫(‪)Tuner‬‬

‫لق د ت م تص ميم س اعة الحاس وب لمن ع برنامج‬


‫المستخدم من الدخول في دوار ل نهائي وامتداد‬
‫سيطرة البرنامج المشرف ‪.‬‬
‫نظم التشغيل‬
‫‪ /6‬ساعة الحاسوب‬
‫(‪)Tuner‬‬

‫حي ث تقوم س اعة الحاس وب ع بر نظام التشغيل‬


‫بإيقاف البرنامج إذا تجاوز فترة معينة مثل ‪60/1‬‬
‫ثاني ة ث م بع د ذل ك يقرر ال برنامج المشرف إما‬
‫إعطاء برنام ج المس تخدم زمن ا إضافي ا أ و إعادته‬
‫له برسالة (خطأ فادح) (‪.)fatal error‬‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫إ ن سرعة أجهزة الدخال والخراج ل تقارن‬


‫بس رعة ولهذا ربم ا يظ ل الحاس وب عاطل بعض‬
‫الوق ت ف ي انتظار المدخلت من أجهزة الدخال‬
‫وف ي انتظار إخراج ال بيانات بواسطة أجهزة‬
‫الخراج ‪.‬‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫إ ن فكرة الترجم ة تهدف إل ي الس تفادة القصوى‬


‫من وق ت الحاسوب وأجهزة الدخال والخراج‬
‫وذلك بحجز موقع في الذاكرة للسجلت التي تتم‬
‫قراءتها في انتظار المعالجة وتعرف هذه المواقع‬
‫بمواقع الرجاء (‪)buffers‬‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫وبهذا يمك ن لجهاز الدخال قراء ة عدة سجلت‬


‫ووضعه ا ف ي مواق ع إرجاء المدخلت قب ل أ ن تدخل‬
‫للمعالجة في وحدة المعالجة المركزية كما يمكن بعد‬
‫إنها وحدة المعالجة المركزية من معالجة السجلت‬
‫ثم إرسالها مباشرة إلي مواقع إرجاء المخرجات بدلً‬
‫من انتظار وحدة الخراج لخراج تلك السجلت‪.‬‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫ولك ن إذا كان ت س رعة الحاس وب كبيرة جدًا‬


‫مقارنة بس رعة جهاز الدخال فإ ن مواقع إرجاء‬
‫المدخلت س تكون دائم ا فارغ ة وم ن ث م ليست‬
‫ذات جدوي وكذل ك إذا كان ت س رعة الحاسوب‬
‫كبيرة جدا مقارنة بسرعة جهاز الخراج‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫فإ ن مواق ع إرجاء المخرجات س تكون ممتلئة‬


‫وس يضطر الحاس وب للنتظار عاطل حتى تفرغ‬
‫تلك المواقع‪ .‬إذن فكرة الدخال لن تكون مفيدة إل‬
‫إذا كانت سرعة أجهزة الدخال والخراج مقاربة‬
‫لسرعة الحاسوب في التعامل مع السجلت ‪.‬‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫ولما كانت سرعة الحاسوب عادة أكبر من سرعة‬


‫أجهزة الدخال والخراج ل بس رعة الحاسوب‬
‫ولك ن ف ي بع ض الحيان ربما تكون عمليات‬
‫الحوسبة المطلوبة على السجلت عالية جدا وفي‬
‫هذه الحال ة س تكون مواقع إرجاء المدخلت‬
‫ممتلئة‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫ومواقع إرجاء المخرجات خالية بسبب الحوسبة‬


‫العالي ة المطلوب ة م ن وحدة المعالج ة المركزية ‪.‬‬
‫بهذا يمك ن القول إ ن فكرة الرجاء أ و الترجئة‬
‫يمكن أن تعالج بعض المشكلة ولكن لن تعالج كل‬
‫المشكل ة بس بب الفوارق العالي ة بي ن سرعة‬
‫الحاس وب وسرعة أجهزة الدخال والخراج‬
‫وبسبب نوع الحوسبة المعقدة المطلوبة أحيانا ‪.‬‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫لمعالج ة مشكل ة الفوارق العالي ة بي ن سرعة‬


‫الحاسوب وأجهزة الدخال والخراج يتم استخدام‬
‫وسائط تخزينية أعلى سرعة مثل الشريط وتخزين‬
‫البيانات عليه بعد إدخالها بواسطة جهاز الدخال‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫ث م يقوم الحاس وب بالتعام ل م ع الس جلت في‬


‫الشريط ومعالجتها ثم يقوم بإخراج البيانات على‬
‫الشريط قبل إخراجها بواسطة جهاز الخراج وهذه‬
‫‪off-line‬‬ ‫تعرف بالمعاملة غير النية‬
‫‪( operation‬موضحة في الشكال التالية) ‪.‬‬
‫وحدة المعالجة المركزية‬

‫الماملة النية‬
‫مع مواقع الرجاء‬
‫وحدة الدخال‬ ‫إرجاء المدخلت‬ ‫إرجاء المخرجات‬ ‫الطابعة‬

‫وحدة المعالجة المركزية‬

‫وحدة الدخال‬ ‫الشريط‬ ‫الشريط‬ ‫الطابعة‬


‫المعاملة غير النية باستخدام الشريط‬

‫القرص‬

‫وحدة إدخال‬ ‫الطابعة‬


‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫لقد تم تحسين فكرة المعاملة غير النية باستخدام‬


‫القراص‪ ،‬والقراص بالطب ع له ا ميزاته ا على‬
‫الشرطة في أنها ل تشترط التعامل المثالي ‪ .‬مثل‬
‫ل يمك ن عل ى الشري ط الكتاب ة والقراء ة ف ي وقت‬
‫واحدة فل يمك ن أ ن يت م إدخال ال بيانات عليه‬
‫بواسطة وحدة إدخال‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫وف ي نف س الوق ت قراء ة ال بيانات من ه بواسطة‬


‫الحاس وب أ و وحدة المعالج ة المركزية لتفوم‬
‫بمعالجته ا ‪ ،‬ولك ن القرص يعال ج هذه المشكلة‬
‫حيث يمك ن الكتابة عليه والقراءة منه آنيا حيث‬
‫يقوم نظام التشغي ل بوض ع مدخلت ك ل عم ل في‬
‫جدول على التوالي الول فأول ‪،‬‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫ويقوم الحاسوب بقراءة تلك المدخلت حسب طلب‬


‫ال برنامج ‪ ،‬ث م يقوم بنق ل المخرجات إل ي مساحة‬
‫إرجاء المخرجات ليت م كتابته ا عل ى القرص لتتم‬
‫طباعتها على التوالي الول فالول ‪ .‬هذه الطريقة‬
‫تسمي المعاملة النية المشتركة (‪. )spooling‬‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫في الواقع إن المعاملة النية المشتركة هي نفس‬


‫فكرة الترجم ة م ع اس تخدام القرص بدل عن‬
‫الذاكرة مما يمكن من تخزين الملفات بعد إدخالها‬
‫في انتظار المعالج ة أ و تخزي ن الملفات بعد‬
‫المعالج ة ف ي انتظار لخراج وبهذا ل ن ينتظر‬
‫الحاس وب عاطل لدخال مدخلت أو عاطل‬
‫لخراج مخرجات ‪.‬‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫وهنا يمكن إدخال مدخلت عمل وإخراج مخرجات‬


‫عمل آخر أو معالجة عمل آخر في نفس الوقت‪.‬‬
‫أم ا ف ي حال ة الترجئ ة فل يت م إرجاء مدخلت أو‬
‫معالج ة برنام ج أ و إرجاء مخرجات إل لنفس‬
‫العمل إذ ل يمكن تجاوز عمل إلي عمل آخر في‬
‫الدخال أو المعالجة أو الخراج ‪.‬‬
‫نظم التشغيل‬
‫‪ /7‬الترجمة (‪)Buffering‬‬

‫كذل ك م ن المميزات الهام ة للمعامل ة النية‬


‫المشترك ة ه و أن ه بإمكان نظام التشغيل إعطاء‬
‫أولوي ة لبع ض العمال عل ى الخرى في الدخال‬
‫أو المعالجة أو الخراج ‪.‬‬
‫نظم التشغيل‬
‫‪ /8‬البرمجة المشتركة‬
‫( ‪) Multi Programming‬‬

‫تعمل البرمجة المشتركة على تقليل الوقت الضائع‬


‫من الحاس وب‪ ،‬فإذا كان الحاس وب يقوم بمعالجة‬
‫برنامج عمل معين‪ ،‬وهناك بيانات طلبها البرنامج‬
‫ول زال ت وحدة الدخال تعم ل عل ى إدخال تلك‬
‫ال بيانات فإ ن الحاس وب س يظل متعطل في انتظار‬
‫تلك البيانات إذا كان بطريقة البرمجة المفردة‪،‬‬
‫نظم التشغيل‬
‫‪ /8‬البرمجة المشتركة‬
‫( ‪) Multi Programming‬‬

‫أما إذا كان يعمل بطريقة البرمجة المشتركة فإن‬


‫هناك عدة برام ج بالذاكرة ف ي انتظار المعالجة‬
‫بالحاسوب‪ .‬ومن ثم لن ينتظر الحاسوب عاطل بل‬
‫سينقل فورا إل ي ال برامج التال ي ويقوم بمعالجته‬
‫أما ذلك البرنامج الذي لم تكتمل مدخلته فسيعود‬
‫إلي آخر الصف بالذاكرة وينتظر دوره ‪،‬‬
‫نظم التشغيل‬
‫‪ /8‬البرمجة المشتركة‬
‫( ‪) Multi Programming‬‬

‫فإذا جاء دوره وقد اكتملت بياناته ستتم معالجته‬


‫وإذا ل م تكتم ل بيانات ه س تتم معالجت ه حت ى لحظة‬
‫الحاجة لمزيد من البيانات وإبقائه عند ذلك الحد‬
‫ثم النتقال للبرنامج التالي ‪.‬‬
‫نظم التشغيل‬
‫‪ /8‬البرمجة المشتركة‬
‫( ‪) Multi Programming‬‬

‫تعت بر البرمج ة المشترك ة م ن أه م ميزات نظم‬


‫التشغي ل الحديث ة وق د ت م تطويره ا لعطاء خدمة‬
‫مريح ة للمس تخدم واس تخدام أمثل لمكانات‬
‫الحاسوب ومن تلك التطورات الخدمة الدورية وهي‬
‫أنه إذا تجاوز أي برنامج زمن معين فإن الحاسوب‬
‫يوق ف معالجت ه ويبدأ ف ي معالج ة ال برنامج التالي‬
‫ويعود ذلك البرنامج إلي آخر الصف ‪.‬‬
‫نظم التشغيل‬
‫‪ /8‬البرمجة المشتركة‬
‫( ‪) Multi Programming‬‬

‫إ ن هذه الطريق ة تضم ن إنهاء العمال القصيرة‬


‫فورا وعدم تعطيله ا بس بب العمال الطويلة‪ .‬كما‬
‫أنها تتجاوز تلقائيا أخطاء البرامج فإذا كان هناك‬
‫برنامجا به خطأ أدي إي دوار غير نهائي فإنه لن‬
‫يؤثر في العمال الخري أو يؤدي إلي تأخرها‪،‬‬
‫نظم التشغيل‬
‫‪ /8‬البرمجة المشتركة‬
‫( ‪) Multi Programming‬‬

‫إذ أنه بعد مضي بعض الوقت سيضطر الحاسوب‬


‫إل ي إيقاف ذل ك العم ل وعم ل رس الة للمبرمج‬
‫مفادها بأن هناك خطأ فادحا في ذلك البرنامج ‪.‬‬
‫التشغيل‬
‫‪ /9‬اشتراك وقت‬
‫نظم‬
‫الحاسوب‬
‫(الستخدام‬
‫الخدمية‬ ‫المعالج ة‬ ‫العمال أ و‬
‫المشترك)‬ ‫لق د أت ت فكرة حزم ة‬
‫لمعالج ة مشكل ة إدخال وإخراج ال برامج المساعدة‬
‫والمترجمات الت ي يس تخدمها الم برمجون‪ ،‬حي ث يتم‬
‫إدخال أعمال المبرمجين التي تستخدم نفس المترجمات‬
‫أو البرامج المساعدة في شكل حزمة مع بعضها حتى‬
‫يت م توفي ر وق ت إنزال وإعادة المترجمات والبرامج‬
‫المساعدة من الشريط مع كل برنامج على حده ‪.‬‬
‫التشغيل‬
‫‪ /9‬اشتراك وقت‬
‫نظم‬
‫الحاسوب‬
‫(الستخدام‬
‫بالمكان‬ ‫المشترك)‬
‫أصبح‬ ‫القراص‬ ‫ولك ن بع د تطور تقني ة‬
‫إنزال وإعادة أي مترجم أو برنامج مساعد يحتاج‬
‫إلي ه المس تخدم عل ى الفور م ن وإل ي القرص‪.‬‬
‫فإنزال ال بيانات م ن القرص أ و إعادته ا إلي‬
‫القرص ل يتم كما يحدث في الشريط بقراءة كل‬
‫بيانات الشريط على التوالي‬
‫التشغيل‬
‫‪ /9‬اشتراك وقت‬
‫نظم‬
‫الحاسوب‬
‫(الستخدام‬
‫ثم‬ ‫المشترك) المطلوب ة‬
‫ال بيانات‬
‫حت ى يت م الحص ول عل ى‬
‫تحوي ل الشري ط م ن حال ة القراء ة إل ي حالة‬
‫التخزي ن ليت م إعادة تل ك ال بيانات إل ي الشريط‬
‫وإنم ا يت م ذل ك مباشرة بواس طة المؤش ر الرأسي‬
‫للقرص الذي يقفز مباشرة إلي موقع البيانات أو‬
‫البرنامج المساعد أو المترجم المطلوب‬
‫التشغيل‬
‫‪ /9‬اشتراك وقت‬
‫نظم‬
‫الحاسوب‬
‫(الستخدام‬
‫المشترك)‬

‫لتتم قراءته بواسطة الحاسوب كما يقفز مباشرة‬


‫إلي المواقع الخالية ليتم تخزين البيانات المطلوب‬
‫تخزينها ‪.‬‬
‫التشغيل‬
‫‪ /9‬اشتراك وقت‬
‫نظم‬
‫الحاسوب‬
‫(الستخدام‬
‫حيث‬ ‫المشترك)الحزمي ة‬
‫للمعالج ة‬
‫بهذا ل م تع د هناك حاج ة‬
‫أصبح كل مستخدم يتعامل مباشرة مع الحاسوب‬
‫مس تخدما لوحة المفاتيح لدخال البرامج وإدخال‬
‫ال بيانات والشاش ة لس تقبال رس ائل الحاسوب‬
‫والمخرجات أو القرص لتخزين البرامج والبيانات‬
‫واستدعاء البرامج المساعدة والترجمات وغيرها‬
‫التشغيل‬
‫‪ /9‬اشتراك وقت‬
‫نظم‬
‫الحاسوب‬
‫(الستخدام‬
‫المشترك)‬
‫كم ا يمك ن للمس تخدم ع ن طري ق لوح ة المفاتيح‬
‫إعطاء الحاسوب أوامر متاحة من نظام التشغيل‬
‫تمكن ه م ن التعام ل مع أجهزة الدخال والخراج‬
‫الخرى كالماس حة والطابع ة والراسمة والنواع‬
‫المختلفة من القراص والشرطة ‪.‬‬
‫التشغيل‬
‫‪ /9‬اشتراك وقت‬
‫نظم‬
‫الحاسوب‬
‫(الستخدام‬
‫المشترك)‬
‫هذه الطريق ة تعرف بنظام التخاط ب المباشر‬
‫(‪[ ) Interactive system‬لك ن تظل هناك‬
‫حاجة للمعالجة الحزمية في حالة العمال الكبيرة‬
‫الت ي تحتاج لزم ن طوي ل لمعالجته ا بواسطة‬
‫الحاسوب ول توجد حاجة للمستخدم على الشاشة‬
‫لمراقبتها او للتخاطب مع الحاسوب بشأنها‬
‫التشغيل‬
‫‪ /9‬اشتراك وقت‬
‫نظم‬
‫الحاسوب‬
‫(الستخدام‬
‫ثم الذهاب‬ ‫المشترك)‬
‫حزمة‬ ‫شكل‬ ‫فبإمكانه إرسال العمل في‬
‫لقضاء أعمال أخري إل ي حي ن إنهاء الحاسوب‬
‫لذلك العمل ‪ ،‬لكن الواقع أنه ل توجد حزمة ‪ ،‬إنما‬
‫هنالك عمل واحد فقط يخص المستخدم كما أنه ل‬
‫توجد ضرورة لوضع العمال في شكل حزمة مع‬
‫وجود القرص كما أوضحنا سابقا] ‪.‬‬
‫التشغيل‬
‫‪ /9‬اشتراك وقت‬
‫نظم‬
‫الحاسوب‬
‫(الستخدام‬
‫المشتركة‬ ‫البرمج ة‬ ‫بي ن‬
‫المشترك)‬ ‫لهذا جاء ت فكرة الجم ع‬
‫والتخاط ب المباش ر م ع الحاس وب حي ث يقوم كل‬
‫مس تخدم بإرس ال عمل ه ويقوم الحاس وب بترتيب‬
‫هذه العمال عل ى التوال ي الول فالول ولكنه ل‬
‫يعط ي أ ي عم ل الزم ن الكاف ي الذي ينهي ه وإنما‬
‫يعطي ه زم ن ثاب ت مثل ‪ 60/1‬ثاني ة فإذا ل م ينتهي‬
‫ذلك العمل يعود وينتظر في آخر الصف وهكذا ‪.‬‬
‫التشغيل‬
‫‪ /9‬اشتراك وقت‬
‫نظم‬
‫الحاسوب‬
‫(الستخدام‬
‫المشترك)‬
‫بهذا يتم إنهاء العمال القصيرة فورا ويتم تأخير‬
‫العمال الك بيرة فالذي ن له م أعمال صغيرة‬
‫ينتظرون عل ى الشاش ة لمتابع ة أعماله م والذين‬
‫له م أعمال ك بيرة يمكنه م بع د إرس الها الذاهب‬
‫لقضاء بعض العمال والعودة مرة أخري ‪.‬‬
‫التشغيل‬
‫‪ /9‬اشتراك وقت‬
‫نظم‬
‫الحاسوب‬
‫(الستخدام‬
‫المشترك)‬

‫هذه الفكرة في نظم التشغيل تعرف باشتراك وقت‬


‫الحاسوب‪ .‬وطريقة الخدمة التي يقدمها الحاسوب‬
‫في نظام اشتراك وق ت الحاس وب تعرف بالخدمة‬
‫الدورية ‪.‬‬
‫نظم التشغيل‬
‫‪ /10‬النظمة اللحظية‬
‫( ‪)Real-time systems‬‬

‫نعن ى بنظام ال بيانات اللحظي ة ه و تحكم نظام‬


‫التشغي ل ف ي وحدة إدخال بيانات خاص ة بتطبيقات‬
‫معين ة مث ل الحس ابات المس تخدمة في الجهزة‬
‫الطبية أو الحساسات المستخدمة في قراءة البيانات‬
‫البيئي ة أ و حس اسات التص نت أ و الحساسات‬
‫المس تخدمة ف ي الص ناعات أ و المس تخدمة في‬
‫التجارب العملية وغيرها ‪.‬‬
‫نظم التشغيل‬
‫‪ /10‬النظمة اللحظية‬
‫( ‪)Real-time systems‬‬

‫ث م يقوم الحاس وب بتحلي ل تل ك ال بيانات ث م قد‬


‫يوج ه بضب ط التحط م وطل ب قراء ة جديدة من‬
‫الحس اسة أ و عم ل المعالجات عل ى تل ك البيانات‬
‫وإعطاء المخرجات المطلوبة على الفور ‪.‬‬
‫نظم التشغيل‬
‫‪ /10‬النظمة اللحظية‬
‫( ‪)Real-time systems‬‬

‫إذن أنظم ة ال بيانات اللحظي ة تختل ف م ن أنظمة‬


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

‫‪ /1‬نظام المعالجة الحزمية‬

‫وحدة المعالجة‬ ‫الطابعة‬


‫المركزية‬
‫نظم التشغيل‬
‫‪ /11‬تطور أنظمة‬
‫التشغيل‬

‫‪ /2‬نظام التخاطب المباشر مع الحاسوب‬

‫الشاشة‬
‫نظم التشغيل‬
‫‪ /11‬تطور أنظمة‬
‫التشغيل‬

‫‪ /3‬نظام اشتراك الزمن‬


‫شاشة‬

‫وحدة المعالجة‬
‫المركزية‬ ‫شاشة‬

‫شاشة‬
‫نظم التشغيل‬
‫‪ /11‬تطور أنظمة‬
‫التشغيل‬

‫‪ /4‬النظام اللحظي‬

‫وحدة المعالجة‬
‫حساسة‬ ‫المركزية‬ ‫تحكم‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫بدلً م ن اس تعمال وحدة معالج ة مركزية واحدة‬


‫جاءت فكرة أن تكون هناك وحدة معالجة مركزية‬
‫رئيس ة ومعالجات أخري مس اعدة له ا تعنى‬
‫بأعمال محددة مثلً أن تكون هناك وحدة معالجة‬
‫مركزي ة مس اعدة متفرغ ة للتعام ل مع وحدات‬
‫الدخال والخراج‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫ووحدة معالج ة مركزي ة أخري متفرغ ة للتعامل‬


‫مع شبكات التص ال وتظ ل وحدة المعالجة‬
‫المركزي ة الرئيس ة متفرغ ة لمعالج ة البرمجيات‬
‫وتنفي ذ العمال‪ .‬هذه الفكرة تحف ظ زم ن المعالج‬
‫الضائع في التنقل بين وحدات الدخال والخراج‬
‫والتصال والمعالجة ‪.‬‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬
‫الخلصة ‪:‬‬
‫نخل ص م ن س رد هذا التطور التاريخ ي في بناء‬
‫نظ م التشغي ل أ ن ذل ك ت م لتحقي ق أهداف نظم‬
‫التشغي ل ف ي الس تفادة القص وى من إمكانات‬
‫الحاس وب وإعطاء الخدم ة الممتازة للمستخدم‬
‫سواء أكان ذل ك في تس هيل عملي ة الس تخدام أم‬
‫في إنهاء الخدمة في أقل وقت ممكن ‪.‬‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫الخلصة ‪:‬‬
‫لق د ت م ذل ك أولً باس تخدام فن ي تشغي ل مدربين‬
‫عل ى إنزال وإخراج الشرط ة الممغنطة ليقوموا‬
‫بهذا العم ل ف ي أق ل وق ت وليحفظوا وقت‬
‫الم برمجين للبرمج ة بدلً من هذه العمال‬
‫اليدوية‪.‬‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫الخلصة ‪:‬‬
‫ثم تل ذلك فكرة حزم العمال حيث يقوم المشغل‬
‫بوض ع العمال المتشابه ة ف ي شكل مجموعات‬
‫ويت م تنفيذه ا مجموع ة تل و الخرى ويقوم فني‬
‫التشغي ل بإدخال أعمال الم برمجين داخل‬
‫المجموعة يدويا ‪.‬‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫الخلصة ‪:‬‬
‫تل ذل ك أ ن يت م إدخال ك ل أعمال الم برمجين في‬
‫المجموع ة الواحدة مرة واحدة‪ ،‬وهناك أوامر‬
‫تقوم بالفص ل بي ن عم ل وآخر وتحدد المترجمات‬
‫المطلوبة لي عمل‪ ،‬ومن ثم يتم تنفيذ كل العمال‬
‫داخ ل المجموع ة تلقائي ا دون الحاج ة لفني‬
‫التشغيل وهذه كانت بداية فكرة نظام التشغيل ‪.‬‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫الخلصة ‪:‬‬
‫وق د س مي ال برنامج المحتوي لهذه الوامر‬
‫بالمراق ب المقي م ‪ .‬ثم طورت هذه الفكرة في‬
‫صناعة الحواسيب حيث صممت ثنائية تصل بين‬
‫أوامر المبرمج أو المستخدم وأوامر المشرف أو‬
‫المراقب‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫الخلصة ‪:‬‬
‫وذل ك لتجاوز أخطاء الم برمجين وتدخله م في‬
‫أعمال المشرف أو ضبطهم في التعامل مع أجهزة‬
‫الدخال والخراج وتجاوز صلحياتهم في التعامل‬
‫مع الذاكرة ووحدة المعالجة المركزية‪.‬‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫الخلصة ‪:‬‬
‫بعد ذلك تمت إضافة ساعة الحاسوب عند صناعة‬
‫الحاس وب لمن ع خط أ الدوار اللنهائي الذي يحدث‬
‫عادة مع المبرمجين‪ .‬ثم تم إضافة حالتي المستخدم‬
‫والمشرف وتحدي د الص لحيات وحماية الذاكرة‪.‬‬
‫وبتص ميم الس اعة بدأ تص ميم نظام التشغيل‬
‫بمفهومه الحديث ‪.‬‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫الخلصة ‪:‬‬
‫فأدخلت فواصل الترجئة لتقليل الزمن الضائع من‬
‫وحدة المعالج ة المركزية ‪ .‬ثم أدخلت فكرة‬
‫المعامل ة غي ر الني ة بإدخال الشرط ة كوسائط‬
‫بي ن وحدات إدخال والخراج وبين المعالجات‬
‫المركزية ‪،‬‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫الخلصة ‪:‬‬
‫وأخيرا بعد تطور تقنية الشراف ثم إدخال فكرة‬
‫المعامل ة الني ة المشترك ة لم ا ف ي الشراف من‬
‫ميزة التعامل المباشر ‪.‬‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫الخلصة ‪:‬‬
‫لقد تم تطوير فكرة المعاملة النية المشتركة إلي‬
‫البرمجة المشتركة حيث أصبح الحاسوب يحتفظ‬
‫بعدة برام ج ف ي الذاكرة ف ي وق ت واح د ويعالج‬
‫على التوالي ‪.‬‬
‫نظم التشغيل‬
‫‪ /12‬أنظمة المعالجات المشتركة‬
‫(‪)Multiprocessing systems‬‬

‫الخلصة ‪:‬‬
‫وأخيرا فكرة البرمج ة المشترك ة إل ي الستخدام‬
‫المشترك الذي يمك ن مئات المس تخدمين من‬
‫التخاط ب م ع الحاس وب ومعالج ة برامجه م في‬
‫وقت واحد‪.‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫لن يونيك س يمث ل الس اس لك ل أنظم ة التشغيل‬


‫الحديث ة فلب د م ن أعطاء بع ض الوام ر الهامة‬
‫المستخدمة في هذا النظام ‪ .‬في البداية يجب أن‬
‫يدخل اسمه وكلمة سره البتدائية للمشرف على‬
‫النظام لنه عندما يريد استخدام النظام بالمر ‪:‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫* أدخل اسمك المعرف لدي المشرف ‪Login :Ali‬‬


‫بع د الضغ ط عل ى مفتاح "أدخ ل " سوف يظه ر لك‬
‫المر ‪:‬‬
‫* أدخل كلمة السر‪Password :Sudani‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫أذا أخطأت في الس م س تظهر لك رس الة توضح‬


‫بأن هذا المستخدم غير معروف ‪ ،‬وعليك إعادة‬
‫كتاب ة الس م أم ا إذا أخطأ ت ف ي كلم ة السر‬
‫فسيظهر لك خطأ ويطلب منك إدخال كلمة السر‬
‫مرة أخري ‪.‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫وإذا كان الس م ص حيحاً وكلم ة الس ر صحيحة‬


‫سوف تظه ر ل ك رس الة ترحي ب ويكون الحاسوب‬
‫في انتظار أوامرك وإذا كتبت أي أمر غير معروف‬
‫مثل "‪ "eat foot‬سيرد عليك الحاسوب ‪:‬‬
‫‪eat : command not found‬‬ ‫هذا المر غير موجود‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫فيما يلي سنسرد بعض الوامر الهامة في يونيكس‪:‬‬


‫المر ‪: pwd‬‬
‫يظه ر الدلي ل الحال ي ويس تفاد من ه ف ي تحديد‬
‫موقعك قبل قيامك بأي عمل في الدليل الحالي‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: pwd‬‬
‫‪$ pwd‬‬
‫‪$ /home/ ali‬‬
‫هذا يعنى أن الدليل الحالي هو ‪home / ali/‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪:passwd‬‬
‫لتغير كلمة السر (يوصي بأن يغير المستخدم كلمة‬
‫السر حتى ل تتسرب) ويتم ذلك بالمر ‪.‬‬
‫‪$ passwd‬‬
‫‪Changing password for ali‬‬
‫‪Old password :‬‬
‫‪New password :‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫س يرد ل ك الحاس وب إدخال كلم ة الس ر القديمة‬


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

‫المر ‪:mkdir‬‬
‫لنشاء الدلة الفرعية في الدليل الحالي بعد أن‬
‫أمنت نفسك يمكنك الن تنظيم بياناتك ويتم ذلك‬
‫بجع ل ك ل الملفات الت ي له ا علق ة م ع بعضها‬
‫البعض تكون في دليل واحد خاص بها ‪.‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪:mkdir‬‬
‫مثل ملفات قس م الحاس وب تكون ف ي دليل‬
‫الحاس وب "‪ "computer‬يت م تكوي ن ذلك‬
‫الدليل على النحو التالي ‪:‬‬
‫‪$mkdir computer‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪:cd‬‬
‫للتنقل بين أدلة النظام‪ ،‬فإذا أردنا النتقال من الدليل‬
‫الحال ي وه و"‪ "ali‬إل ي الدلي ل الحاسوب‬
‫"‪ "computer‬فإن ذلك يتم بالمر ‪:‬‬
‫‪$ cd computer‬‬
‫‪$ pwd‬‬
‫‪$ /home/ali/computer‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪:cd‬‬
‫أ ي أ ن أوامرن ا أص بحت الن ف ي الدلي ل الفرعي‬
‫"‪ "computer‬وإذا أردنا العةدة مرة أخري إلي‬
‫الدليل "‪ "ali‬فإننا نكتب المر‬
‫‪$ cd ..‬‬
‫‪$ pwd‬‬
‫‪$ /home/ali‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫إذا عملنا دليل آخر للرياضيات يسمي "‪"math‬‬

‫‪$mkdir math‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: ls‬‬
‫لمعرف ة ك ل الملفات والدل ة الموجودة ف ي الدليل‬
‫الحالي‪ $‬وهو ‪ ali‬فإن ذلك يتم بالمر‪:‬‬
‫‪ls‬‬
‫‪.‬‬
‫‪..‬‬
‫‪Computer‬‬
‫‪math‬‬
‫‪$‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪:cp‬‬
‫يستخدم لنسخ ملف في ملف آخر أو إلي دليل آخر‪.‬‬
‫إذا كان هناك ملف في الدليل الحالي يسمي ‪file1‬‬
‫ونري د نس خه ف ي المل ف ‪ file2‬فيت م ذل ك بالمر‬
‫التالي‬
‫‪$ cp file1 file2‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪:cp‬‬
‫أم ا إذا أردن ا نس خه ف ي الدلي ل الفرعي‬
‫‪ computer‬فيتم كالتي‪:‬‬

‫‪$ cp file1 computer‬‬


‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪:cp‬‬
‫أما إذا كان الملف غير موجود فإنك ستحصل على‬
‫رسالة خطأ بالشكل‬
‫‪$ cp file3 file2‬‬
‫‪cp: cannot access file3‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: mv‬‬
‫يقوم هذا المر بنقل أو إعادة تسمية الملفات والدلة‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬
‫المر ‪: mv‬‬
‫معلومة ‪:‬‬
‫عملي ة النق ل تختل ف ع ن عملي ة النس خ‪ ،‬لن‬
‫النسخ يبقي الملف الصلي كما هو وينشئ ملفا‬
‫آخ ر مماث ل ل ه بينم ا النق ل ينشئ ملفاً آخرا‬
‫ويلغي الصلي ‪.‬‬
‫نظم التشغيل‬
‫ نظام التشغيل‬/13
‫يونيكس‬

$ ls
file1
file2
$ mv file1 file4
$ ls
file4
file2
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: rm‬‬
‫‪$ ls‬‬ ‫يقوم هذا المر بحذف الملفات‬
‫‪file4‬‬
‫‪file2‬‬
‫‪$ rm file4‬‬
‫‪$ ls‬‬
‫‪file2‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: rmdir‬‬
‫يقوم هذا الم ر بحذف الدل ة بشرط أن تكون هذه‬
‫الدلة فارغة‬
‫نظم التشغيل‬
‫ نظام التشغيل‬/13
‫يونيكس‬

$ rmdir computer
rmdir : computer not empty
$ cd computer
$ rm file1
$ cd ..
$ rmdir computer
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: more‬‬
‫يقوم هذا الم ر بعرض مل ف نص ي عل ى الشاشة‬
‫بشكل صفحات متتالية يتم التوافق فيما بينها وهذ‬
‫الم ر يشب ه الم ر ‪ cat‬مع اختلف ف ي التوقف‬
‫بين الصفحات ‪.‬‬
‫‪$ more file2‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: clear‬‬
‫يقوم هذا الم ر بمس ح الشاش ة وإظهاره ا خالية‬
‫مع وض ع المؤش ر وإشارة النظام ف ي الزاوية‬
‫العليا اليسارية للشاشة ‪.‬‬
‫‪$ clear‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: exit‬‬
‫يستخدم هذا المر إنهاء عمل إجراء ما والخروج‬
‫من مستوي إلي مستوي أعلى منه ‪.‬‬
‫‪$ exit‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: factor‬‬
‫يقوم هذا الم ر بإيجاد العوام ل الولية للعداد‬
‫الصحيحة الموجبة‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫‪$ factor‬‬ ‫‪$ factor‬‬


‫‪72‬‬ ‫‪150‬‬
‫‪2‬‬ ‫‪2‬‬
‫‪2‬‬ ‫‪3‬‬
‫‪3‬‬ ‫‪5‬‬
‫‪3‬‬ ‫‪5‬‬
‫‪3‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: rev‬‬
‫يقوم هذا الم ر بعك س ترتي ب الحروف ف ي كل‬
‫سطر م ن مل ف م ا فمثلً إذا كان الملف ‪file2‬‬
‫يحتوي على العبارة التالية ‪:‬‬
‫”‪”programming in logic‬‬
‫نظم التشغيل‬
‫ نظام التشغيل‬/13
‫يونيكس‬

: rev ‫المر‬
‫يقوم هذا المر بعكس العبارة لتصبح‬
”Cigol ni gnimmargorp”
$ cat file2
programming in logic
$ rev file2
Cigol ni gnimmargorp
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: cal‬‬
‫يستخدم هذا المر لظهار التقويم الميلدي‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: cal‬‬
‫‪$ cal 3 2002‬‬
‫‪March 2002‬‬
‫‪S‬‬ ‫‪M‬‬ ‫‪Tu‬‬ ‫‪W‬‬ ‫‪Th‬‬ ‫‪F‬‬ ‫‪S‬‬
‫‪1‬‬ ‫‪2‬‬
‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬
‫‪10‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬ ‫‪16‬‬
‫‪17‬‬ ‫‪18‬‬ ‫‪19‬‬ ‫‪20‬‬ ‫‪21‬‬ ‫‪22‬‬ ‫‪23‬‬
‫‪24‬‬ ‫‪25‬‬ ‫‪26‬‬ ‫‪27‬‬ ‫‪28‬‬ ‫‪29‬‬ ‫‪30‬‬
‫‪31‬‬
‫‪$‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: cal‬‬
‫عن د اس تخدامه م ن غي ر تحدي د الشهر والعام‬
‫سوف يقوم بإظهار التقوي م الميلدي للشهر‬
‫الحالي فقط ‪.‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪:grep‬‬
‫إذا أردت البح ث ع ن س لسلة م ن الحروف في‬
‫ملف أو أكثر من ملف سوف يتم ذلك بهذا المر‬
‫وس تكون عملي ة البح ث س طراً سطراً‪ .‬فمثل إذا‬
‫كان‪ :‬المل ف ”‪ ”file1‬يحتوي على المعلومات‬
‫التالية‪:‬‬
‫نظم التشغيل‬
‫ نظام التشغيل‬/13
‫يونيكس‬

Mohammed Osman
Shemma Hassan
Rowa Abd Allah

:‫” يحتوي على المعلومات التالية‬file2” ‫الملف‬


Mohammed Osman
Hadeel Mamoon
‫نظم التشغيل‬
‫ نظام التشغيل‬/13
‫يونيكس‬
$ cat file1
Mohammed Osman
Shemma Hassan
Rowa Abd Allah
$ cat file2
Mohammed Osman
Yousif Ali
$ grep "Mohammed Osman" file1
Mohammed Osman
$ grep "Mohammed Osman" file1 file2
file1 : Mohammed Osman
file2 : Mohammed Osman
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: man‬‬
‫إذا أردت المس اعدة م ن يونيكس بتذكيرك‬
‫بالوام ر أ و طريق ة اس تخدامها فإ ن هذا المر‬
‫يمكنك من ذلك فمثلً ‪:‬‬
‫‪man ls $‬‬
‫نظم التشغيل‬
‫‪ /13‬نظام التشغيل‬
‫يونيكس‬

‫المر ‪: man‬‬
‫يت م عرض ك ل المعلومات الخاص ة باستخدام‬
‫الم ر ‪ ls‬ويمك ن تكرار هذا الم ر م ع جميع‬
‫الوامر الخري للتأكد منها ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫بع د تطور أنظم ة الحواس يب الشخص ية والتي‬


‫بدأ ت ف ي اس تخدام المعالجات ذات ال ‪ 32‬ثنائية‬
‫لم يع د نظام التشغي ل دوس مناس با لتشغيلها‬
‫التشغي ل المث ل‪ ،‬فت م اس تبداله بنظام التشغيل‬
‫يونيك س ونظام التشغي ل وندوز إ ن ت ي الشبيه‬
‫بيونيكس ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫ولكن أسعار ووندوز إن تي غير مجدية لكثير من‬


‫مبرمجي ومستخدمي الحواسيب من ثم بدأ هؤلء‬
‫الم برمجون والمس تخدمون يبحثون ع ن بدائل‬
‫أخرى كان أنسبها نظام التشغيل لينوكس ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫لق د ت م تص ميم نظام التشغي ل ليونيك س بواسطة‬


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

‫إذن نظام لينوك ي ه و نظام تشغي ل غير تجاري‬


‫متاح مجان ا للس تخدام ويشارك الجمي ع في‬
‫تطويره من خلل مجموعات عمل عبر النترنت‪.‬‬
‫لقد تم طرح النسخة العملية الولي للينوكس في‬
‫مارس ‪1994‬م ث م النس خة الثاني ة ف ي يونيو‬
‫‪1996‬م ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫يتميز لينوكس ‪:‬‬


‫‪ ‬بإمكاني ة التعام ل م ع ك ل ال برمجيات الت ي تم‬
‫تص ميمها عل ى أنظم ة التشغي ل الخري مثل‬
‫يونيكس ووندوز مايكروسوفت ودوس ومع لغات‬
‫البرمجة المختلفة ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫يتميز لينوكس ‪:‬‬

‫‪ ‬كذل ك التعام ل م ع أكس س وندوز بخواصه‬


‫المتطورة في التخاطب المباشر مع ربط الصور‪.‬‬
‫كما له خاصية توسع الذاكرة ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫يتميز لينوكس ‪:‬‬


‫‪ ‬لقد استفاد لينوكس من النسخة القياسية لنظام‬
‫التشغيل يونيكس مما مكنه من التعامل مع بيئات‬
‫يونيكس المختلفة والحتفاظ بخاصية يونيكس في‬
‫الس تخدام المشترك والبرمج ة المشتركة‬
‫(‪)multiprogramming‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫يتميز لينوكس ‪:‬‬

‫‪ ‬هذا إضاف ة إل ي إمكاني ة التعام ل مع تقنيات‬


‫وبرتوكلت شبكات التصال المختلفة تي سي بي‬
‫‪ /‬آي بي ‪))TCP/IP‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫أولً‪ :‬استخدامات لينوكس ‪:‬‬

‫ثنائي ة بمرون ة ل تقيده عل ى معماري ة بعينه ا فه و الن‬


‫يمكن استخدامه على كل المعماريات المتاحة والمستقبلية‬
‫بسهولة ويسر كما أن له القدرة في التعامل مع المعالجات‬
‫المركب ة(‪)multiprocessing‬والتعام ل اللحظي‬
‫((‪. real time‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫أولً‪ :‬استخدامات لينوكس ‪:‬‬


‫إذن يمك ن القول أ ن نظام لينوك س يمكن‬
‫اس تخدامه ف ي ك ل التقنيات المتاح ة والمستقبلية‬
‫لجهزت الحواس يب بإمكانات عالي ة تفوق كل‬
‫النظمة التشغيل الحالية ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫أولً‪ :‬استخدامات لينوكس ‪:‬‬


‫يمك ن اس تخدام لينوك س م ع المخدمات ومع‬
‫الطرفيات وم ع أجهزة الذكاء الصطناعي‬
‫(الروبوتات) والحس اسات وأجهزة التحك م ومع‬
‫أجهزة الحواسيب الكبري ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫أولً‪ :‬استخدامات لينوكس ‪:‬‬


‫ه ذ إضاف ة إل ي اس تخدامات لينوكس المتطورة‬
‫على برمجيات خدمات النترنت وفي قدرته على‬
‫حماي ة ال بيانات بواس طة م ا يعرف بالحوائط‬
‫النارية (‪.)walls fire‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫أولً‪ :‬استخدامات لينوكس ‪:‬‬


‫إن للينيوك س المرون ة الكافي ة ف ي التعام ل مع‬
‫حاسوب ضعيف المكانات مثل معالج انتل ‪386‬‬
‫وذاكرة ‪ 4‬م ب فق ط وإذا أردن ا التعام ل مع‬
‫الرس وم الت ي تحتاج لمكانات ذاكرة أك بر فإننا‬
‫نحتاج كحد أدني إلي ‪ 8‬م ب‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫أولً‪ :‬استخدامات لينوكس ‪:‬‬


‫وتزي د الحاج ة إل ي ذاكرة أك بر ومعالج أقوي إذا‬
‫أردنا تعامل أدق مع الرسوم وقد يطلب لينوكس‬
‫حسب متطلبات الرسومات والبرمجة ‪ 64‬م ب أو‬
‫‪ 128‬م ب هذا بالطب ع مع معالجات بنتيوم ‪3‬‬
‫كحد أدني في هذه الحالت ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫ثانيا ‪ :‬تشغيل لينوكس ‪:‬‬


‫يمكن الحصول على لينوكس مجانا على أقراص‬
‫مرنة أو أقراص مضغوطة وحجمه حوال ‪ 40‬م ب‬
‫في نس خته الص غري (أي لي س بها إمكانات‬
‫الرس ومات) وحوال ي ‪ 120‬م ب ف ي النسخة‬
‫الكبري ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫ثانيا ‪ :‬تشغيل لينوكس ‪:‬‬


‫لذا يتض ح أن ه لي س عملي ا نس خه في أقراص‬
‫مرن ة؛ لن ذل ك يتطل ب كح د أدن ي حوالي ‪100‬‬
‫قرص مرن‪ ،‬لذا م ن العمل ي والجدي أ ن يتم‬
‫اقتناء لينوكس على قرص مضغوط ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫ثانيا ‪ :‬تشغيل لينوكس ‪:‬‬


‫عند إنزال لينوكس من القرص إلي الجهاز هناك‬
‫أس ئلة س وف يطل ب من ك لينوك س الجابة عليها‬
‫تخص التقنية المستخدمة في ذلك الجهاز ‪.‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬
‫ثانيا ‪ :‬تشغيل لينوكس ‪:‬‬
‫أولً سوف يسألك لينوكس عن متحكمات القراص‬
‫الص لبة المس تخدمة وه ي عادة المتحك م الول به‬
‫قرص أس اسي ‪ C‬وقرص يس مي ‪ D‬والمتحكم‬
‫الثان ي وب ه قرص رئي س يس مي ‪ E‬وقرص تابع‬
‫يسمي ‪ .F‬ةهذه المتحكمات هي في الغالب من نوع‬
‫‪. IDE‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫ثانيا ‪ :‬تشغيل لينوكس ‪:‬‬


‫هنالك متحكمات من نوع آخر يعرف ب ‪ SCSI‬لكنها‬
‫غي ر منتشرة م ع الحواس يب الشخص ية‪ .‬بع د ذلك‬
‫سوف يس أل لينوك س ه ل تري د وض ع نظام التشغيل‬
‫في قرص منفصل أم مع النظمة الخري والفضل‬
‫أن يكون في قرص منفصل وفي القرص ‪. C‬‬
‫نظم التشغيل‬
‫‪ /14‬نظام التشغيل‬
‫لينوكس‬

‫ثانيا ‪ :‬تشغيل لينوكس ‪:‬‬


‫وربم ا يس أل كذل ك لينوك س أثناء النزال عن عدد‬
‫المسارات في القرص وعدد السطح وعدد المقاطع‬
‫في المس ار الواحد وهذه المعلومات تكون عادة‬
‫مطبوعة علة القرص من الخارج ‪.‬‬
:DOS , UNIX ‫ بعض أوامر لينوكس الهامة وما يقابلها في‬:ً‫ثالثا‬
DOS UNIX LUNIX
Dir Is Ls/ die
Cls Clear Velar
Del Rm Rm
Copy Cp Cp
Move / rename Mv Mv
Type Cat Vat
Cd Cd Cd
More > file More file More file
Md Mkdir Mkdir
Rd Emdir rmdir
‫الذكاء الصطناعي ولغة برولوق‬
‫‪/1‬‬
‫مدخل‬

‫الذي يعني بالمعالجات الرياضية والمنطقية التي‬


‫تجعل من الحاسوب آلة ذكية ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪/1‬‬
‫مدخل‬

‫ويعن ى بالذكاء القدرة عل ى اس تيعاب الحقائق‬


‫وعلقاته ا م ع بعضه ا واس تخدام تل ك الحقائق‬
‫والعلقات للتوص ل إل ي نتائ ج ص حيحة ومنطقية‬
‫لقصى حد ممكن ‪،‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪/1‬‬
‫مدخل‬

‫فعلي سبيل المثال إذا غذينا الحاسوب بصورة أي‬


‫طال ب ع ن طري ق الكاميرا الرقمي ة وم ع صورة‬
‫الطالب نداء صوتي لسم الطالب فإننا نستطيع أن‬
‫نجع ل الحاس وب ينادي اس م الطال ب كلم ا وقف‬
‫الطالب أمامه ويتم ذلك على النحو التالي ‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪/1‬‬
‫مدخل‬

‫عند وقوف الطالب أمام الحاسوب يقوم الحاسوب‬


‫بأخذ صورة رقمية لذلك الطالب ثم مضاهاة تلك‬
‫الص ورة م ع الص ورة الت ي تغذيت ه بها وينادي‬
‫الحاسوب الطالب متى ما تطابقت تلك الصورة مع‬
‫صورة الطالب والتي سبق أن تم تخزين نداء اسم‬
‫الطالب معها ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪/1‬‬
‫مدخل‬

‫الشطرن ج والتحرك الص حيح مقاب ل حرك ة من‬


‫اللع ب المناف س‪ ،‬وبهذا ل يمك ن أن ينهزم‬
‫الحاس وب أمام اللع ب المنافس وإذا كان‬
‫المنافس ماهراً فإن اللعبة لن تنتهي أبدا ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪/1‬‬
‫مدخل‬

‫ومثال آخر يمكن أن ينصح الحاسوب بعدم السفر‬


‫بالسيارة بناء علي بيانات مناخية يتم تغذيته بها‬
‫وتمكنه من تحليل المناخ والتنبؤ بحدوث أمطار‬
‫غزيرة أو رياحا كثيفة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪/1‬‬
‫مدخل‬

‫مثال آخ ر ه و أ ن يت م تص نيع آل ة تشب ه النسان‬


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

‫كما يمكن تعقيد هذه اللة بحيث رأت صورة أحد‬


‫الطلب الذي ن س بق أ ن غذي ت بص ورهم فإنها‬
‫تنادي الطال ب باس مه ان افس ح الطري ق‪ ،‬كما‬
‫يمك ن لهذه الل ة بأ ن تس تخدم في العمليات‬
‫الخطيرة‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪/1‬‬
‫مدخل‬

‫مثل القصف الجوي أو معالجة التسرب النووي‬


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

‫يهدف علم الذكاء الصطناعي إلي ‪:‬‬


‫‪ ‬تصميم وبرمجة آلت ذكية تقوم بتنفيذ العمال‬
‫المطلوب ة منه ا بك ل دق ة مثل قيادة الطائرات‬
‫ووصول الصواريخ للهداف المقصودة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /2‬أهداف علم الذكاء‬
‫الصطناعي وأمثلة‬
‫لتطبيقاته‬
‫ورة تؤدي إلي‬ ‫إلي ‪:‬‬
‫الصطناعيبص‬
‫الذكاءق وعلقته ا‬
‫علمالحقائ‬ ‫‪‬يهدف‬
‫ترجم ة‬
‫نتائ ج منطقي ة إل ي تحقي ق أهداف ص حيحة مثل‬
‫تحلي ل وتخزي ن كلمات وتركي ب اللغات لجل‬
‫الترجم ة الفوري ة والتحلي ل وتخزين بيانات‬
‫المجرمي ن لمعرف ة المتهمي ن ف ي جريم ة معين ة أو‬
‫في التخطيط الدقي ق بناء عل ى تحليل لحج م ضخم‬
‫من المعرفة والمعلومات ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /2‬أهداف علم الذكاء‬
‫الصطناعي وأمثلة‬
‫لتطبيقاته‬

‫يهدف علم الذكاء الصطناعي إلي ‪:‬‬


‫‪ ‬يمكن للحاسوب أن يلعب دور الخبير البشري‬
‫في الفتوى ف ي مجال الخ برة فيقوم بتشخيص‬
‫العطاب أ و المراض أ و الرشاد والنص ح أو‬
‫التنبؤ أو التخطيط ‪ ....‬الخ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /2‬أهداف علم الذكاء‬
‫الصطناعي وأمثلة‬
‫لتطبيقاته‬

‫يهدف علم الذكاء الصطناعي إلي ‪:‬‬

‫‪ ‬اس تخدام النماذج المحوس بة لدراس ة سلوكيات‬


‫النسان أو الحيوان أو الحياء عموما‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /2‬أهداف علم الذكاء‬
‫الصطناعي وأمثلة‬
‫لتطبيقاته‬
‫النس ان الواعي‬
‫مث لإلي ‪:‬‬ ‫الذكاءوب مثل ه‬
‫الصطناعي‬ ‫علم الحاس‬
‫يهدفتخدام‬
‫‪ ‬اس‬
‫المتعاون – مث ل معرف ة الداخلي ن ف ي الماكن‬
‫الحس اسة م ن خلل تحلي ل الص ورة أ و الصوت‬
‫والس ماح للمأذون له م بالدخول أ و استخدام‬
‫النسان اللي في إطفاء الحريق أو أعمال يدوية‬
‫دقيقة (روبوت)‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /2‬أهداف علم الذكاء‬
‫الصطناعي وأمثلة‬
‫لتطبيقاته‬

‫يهدف علم الذكاء الصطناعي إلي ‪:‬‬


‫‪ ‬استخدام الحاسوب في مساعدة النسان المعاق‬
‫باس تخدامه ف ي التحك م ف ي ي د ص ناعية أ و رجل‬
‫صناعية أو مساعدة قلب ضعيف الحركة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /3‬أسس علم الذكاء‬
‫الصطناعي‬

‫لتحقي ق أهداف عل م الذكاء الص طناعي التي‬


‫ذكرناه ا ف ي الفقرة الس ابقة هناك مجموع ة من‬
‫المعارف الضروري ة الت ي يج ب أ ن يل م بها‬
‫مهندس برمجيات الذكاء الص طناعي أول تلك‬
‫المعارف بالطبع هي نظم الحاسوب (تقنية أجهزة‬
‫وتقنية برمجيات)‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /3‬أسس علم الذكاء‬
‫الصطناعي‬

‫وعلم المنطق والنظريات الرياضية في الحوسبة‬


‫وعلم النفس أو تركيب النفس البشرية ونظريات‬
‫التحك م اللكترون ي والنظريات الرياضي ة ف ي حل‬
‫المشكلت إضافة إلي المعرفة بالقتصاد ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /3‬أسس علم الذكاء‬
‫الصطناعي‬

‫في الغالب ل نجد شخصا يلم بكل تلك المعارف‬


‫لذا كان تص ميم وبرمج ة أ ي نظام يقوم على‬
‫الذكاء الص طناعي ه و عم ل مجموع ة خبراء‬
‫وليس عمل فرد حتى نضمن نجاح التصميم الذي‬
‫يتمكن فعل من التحكم في حرك ة النس ان اللي‬
‫(روبرت)‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /3‬أسس علم الذكاء‬
‫الصطناعي‬

‫بناءً على خطة دقيقة وقدرة على الحساس بالنظر‬


‫أو اللم س أ و بالش م أ و غيره ا من المؤثرات‬
‫اللكترونية تمكنه من ‪:‬‬
‫‪ ‬تفسير اللغات النسانية المكتوبة أو المسموعة‪.‬‬
‫‪ ‬ويت م ذل ك بأق ل تكلف ة ولتحقي ق أكبر فائدة‬
‫اقتصادية ممكنة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /4‬لغات الذكاء‬
‫الصطناعي‬

‫إن المدخل إلي الذكاء الصطناعي ل يتم إل بنوع‬


‫خاص م ن اللغات الحاس وب العليا تعرف بلغات‬
‫برمج ة المنط ق الت ي تس اعد ف ي جع ل الحاسوب‬
‫يتعامل بطريقة منطقية أو كأنه آلة مدركة‪ ،‬وبهذا‬
‫تكون لغات برمج ة المنطق هي اللغات المناسبة‬
‫في تطبيقات الذكاء الصطناعي ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /4‬لغات الذكاء‬
‫الصطناعي‬

‫إن كانت اللغات العالية الن تطورت لتلئم هندسة‬


‫ال برمجيات بالتوج ه نح و الشيئيات مثل ‪++C‬‬
‫وغيره ا فإ ن لغات برمج ة المنط ق أص لً صممت‬
‫لتلئ م هندس ة ال برمجيات بالتوج ه نحو المطلوب‬
‫أو نحو الهداف‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /4‬لغات الذكاء‬
‫الصطناعي‬

‫وهذا ه و النوع م ن ال برمجيات الذي يحقق‬


‫أغراض الذكاء الص طناعي إ ذ أ ن غاية الذكاء‬
‫الصطناعي أن يدرك الحاسوب ما المطلوب منه‬
‫أو م ا الهداف الت ي يج ب أ ن يحققه ا بناء على‬
‫معلومات معينة أدخلت عليه ؟‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /4‬لغات الذكاء‬
‫الصطناعي‬

‫إن أهم لغات الذكاء الصطناعي لغتان لغة لسب‬


‫(‪ ) Lisp‬ولغ ة برولوق (‪ . )Prolog‬لق د تم‬
‫تص ميم لغ ة لس ب عام ‪1984‬م بمعهد‬
‫ماس اشيوتس المشهور ب (‪ ). M .I .T‬بمدينة‬
‫بوس طن بالوليات المتحدة المريكي ة خصيصاً‬
‫لتحقيق الغراض البرمجية للذكاء الصطناعي ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /4‬لغات الذكاء‬
‫الصطناعي‬

‫أم ا برولوق فق د ت م تص ميمها ف ي عام ‪1970‬م‬


‫بجامعة مرسيليا بفرنسا بغرض برمجة المسائل‬
‫المنطقي ة قب ل ظهور الذكاء الص طناعي بصورة‬
‫واضح ة ‪ ،‬وم ن ث م أص بحت له ا قدرة عالي ة في‬
‫برمج ة تط بيقات الذكاء الص طناعي تفوق تلك‬
‫التي في لسب‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /4‬لغات الذكاء‬
‫الصطناعي‬

‫إل أ ن لس ب ظل ت الكث ر اس تخداما لتطوره ا في‬


‫أمريم ا أكث ر بلدان العال م اس تخداما للحاسوب ‪.‬‬
‫إننا لسنا في حاجة لمقارنة اللغتين ولكن لغرض‬
‫هذا المنه ج س وف نكتف ي بوص ف مبادئ لغة‬
‫برولوق وطريقة استخدامها مع أمثلة بسيطة من‬
‫أمثلة الذكاء الصطناعي ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /5‬لغة‬
‫برولوق‬

‫لق د ت م تص ميم لغ ة برولوق(‪ )PROLOG‬في‬


‫جامعة مارسيليا بفرنسا في عام ‪1970‬م بواسطة‬
‫عال م الحاس وب الفرنس ي آلن كولمراور‪ .‬وكلمة‬
‫برولوق مشتقة من الحروف الثلث الولي لكلمة‬
‫والحروف‬ ‫برمجة (‪)PROgramming‬‬
‫الثلث الولي لكلمة منطق (‪. )LOGic‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /5‬لغة‬
‫برولوق‬

‫إذن كلم ة برولوق ه ي اختص ار لكلمت ي البرمجة‬


‫بالمنط ق أ و برمج ة المنط ق وهذه الخاص ية للغة‬
‫برولوق – أي برمجة المنطق – تمكن من تحويل‬
‫الحاسوب للة ذكية بمعنى له القدرة في تخزين‬
‫مجموع ة حقائ ق ث م اس تخدام تل ك الحقائ ق في‬
‫الوصول إلي نتائج وقرارات ذكية ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /5‬لغة‬
‫برولوق‬

‫مثل أ ن يت م تخزي ن ك ل المعلومات المتاح ة عن‬


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

‫مثال آخ ر بأ ن يت م تخزي ن معلومات شرطي ة عن‬


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

‫ثم تكمل الشرطة تحرياتها لتحديد النشال‪ ،‬ونفس‬


‫الطريق ة يمك ن أ ن تس تخدم ف ي تحدي د سارقي‬
‫المتاجر والقتلة وغيرهم ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /5‬لغة‬
‫برولوق‬

‫العل م الذي يس اعد ف ي تحوي ل الحاس وب إل ي آلة‬


‫ذكاء يعرف ف ي علوم الحاسوب بالذكاء‬
‫الصطناعي (‪)Artificial Intelligence‬‬
‫تس مي اللغات الت ي ت برمج الحاس وب ليكون آلة‬
‫ذكي ة بلغات الذكاء الص طناعي وأه م لغ ة في‬
‫الذكاء الصطناعي اليوم هي لغة برولوق ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /5‬لغة‬
‫برولوق‬

‫تعتبر لغات الذكاء الصطناعي عموما أكثر كفاءة‬


‫من اللغات التقليدي ة مث ل بيزك وباس كال ونعني‬
‫بالكفاء ة تقلي ل تنفي ذ ال برنامج وتقلي ل حجم‬
‫التخزين في الذاكرة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /5‬لغة‬
‫برولوق‬

‫لك ن ف ي المقاب ل يحتاج برنام ج لغة الذكاء‬


‫الص طناعي إل ي مجهود ذهن ي أك بر م ن البرامج‬
‫في تحدي د ك ل الحقائ ق وال بيانات الواقعية‬
‫(‪ )Facts‬ثم تنظيم تلك الحقائق وربطها ببعضها‬
‫(‪ ) Rules‬وتوجيهه ا لس تخلص النتائج‬
‫والهداف المطلوبة (‪. )goals‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /5‬لغة‬
‫برولوق‬

‫أم ا اللغات التقليدي ة فتقوم بتوجي ه الحاس ب إلي‬


‫تنفي ذ المطلوب ف ي شك ل خطواط تس لسلية أو‬
‫دوائ ر تكراري ة كم ا شرحن ا ف ي ذل ك في كتاب‬
‫السنة الثانية عند وصف طرق البرمجة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫تعت بر لغات الذكاء الص طناعي عموم ا أكث ر بنلئية‬


‫من اللغات التقليدة لعدم اس تخدامها الدوائر‬
‫اللكترونية وهذا يجعلها أكثر وضوحا وأقل عرضة‬
‫للخطأ لكنها في المقابل كما ذكرنا تحتاج لحجم كبير‬
‫من الحقائ ق والعلقات الت ي ل ب د أ ن يغذي بها‬
‫الحاسوب قبل البدء في التنفيذ أو المعالجة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫تتكون بنائية لغة برولوق من الجزاء التالية ‪:‬‬


‫أولً ‪ :‬تعري ف أس ماء وأشكال وأوصاف الشياء‬
‫المتعلقة أو ذات الصلة بالموضوع‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫مثال (‪: )1‬‬


‫إذا كان الموضوع هو المدرسة فإن الشياء التي‬
‫يمكن أن تكون ذات العلقة بالمدرسة ؟ وهي ‪:‬‬
‫• اسم المدرسة ‪.‬‬
‫• المحلية التي تتبع لها ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫مثال (‪: )1‬‬


‫• المرحلة التعليمية ‪.‬‬
‫• عدد الفصول ‪.‬‬
‫• عدد الطلب ‪.‬‬
‫• عدد الساتذة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫ثانياً ‪ :‬تعري ف ووص ف العلقات الت ي ترب ط بين‬


‫تل ك الشياء الت ي ت م تعريفه ا ف ي المثال السابق‬
‫يتم تعريف العلقة التالية ‪:‬‬
‫المدرسة (اسم المدرسة ‪ ،‬المحلية ‪ ،‬المرحلة ‪ ،‬عدد‬
‫الفصول‪ ،‬عدد الطلب‪ ،‬عدد الساتذة ) ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫ثالثاً‪ :‬وصف الحقائق والقوانين التي أسست عليه‬


‫هذه العلقات ‪ ،‬مثل من الحقائق يمكن أن تكون ‪:‬‬
‫المدرسة ( أبو حشيش ‪ ،‬البر الشرقي اساس ‪، 8‬‬
‫‪. )10 ، 300‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫أي أن ‪  :‬اسم المدرسة هي أبو حشيش ‪.‬‬


‫‪ ‬اسم المحلية هي البر الشرقي ‪.‬‬
‫‪ ‬عدد الفصول = ‪. 8‬‬
‫‪ ‬عدد الطلب = ‪. 300‬‬
‫‪ ‬عدد الساتذة = ‪. 10‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫رابعاً ‪ :‬اس تخدام هذه الحقائ ق والقواني ن في‬


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

‫إذا قارن ا لغ ة برولوق بلغ ة باس كال نلح ظ أن‬


‫الجزء الول والجزء الثاني في لغة برولوق هما‬
‫جزئي ن تعريفيي ن يقابلن جزء إعلن السماء‬
‫والمتغيرات والدوال والجراءات في لغة باسكال‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫أما الجزء الثالث والجزء الرابع واللذان يقابلن‬


‫الجسم الرئيس في لغة باسكال فيختلفان اختلفا‬
‫جزرئي ا ف ي البنائي ة المنطقي ة كم ا في المثال‬
‫التالي‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬
‫مثال (‪: )2‬‬
‫أدرس العبارات التالية جيدا‬
‫الحقائق ‪:‬يحب محمد الفول‬
‫يحب علي العدس‬
‫القانون ‪:‬يحب محمد س إذا كان يحب علي س‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫إذا أعطين ا برولوق هدف (‪ ) goal‬أن يستخدم‬


‫قوت ه الس تنتاجية ليجاد ك ل الحلول الممكنة‬
‫لستخراج كل اللذين يحبون العدس ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫بناء عل ى الحقيق ة أ ن عل ي يحب العدس وبناء‬


‫على القانون أن محمد يحب كل ما يحبه علي فإن‬
‫برنام ج برولوق س وف تس تنتج أ ن محم د يحب‬
‫العدس وعليه فإن المخرجات ستكون‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫علي "مخرج أصيل من الحقيقة يحب علي العدس"‬


‫محمد "مخرج استنتاجي من القانون يحب محمد س‬
‫إذا كان يحب علي س" ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /6‬بنائية لغة‬
‫برولوق‬

‫هذا المثال يبدو بس يطا جدا ولكن إذا كان هناك‬


‫آلف الحقائ ق فإ ن النتيج ة أ و الهدف سيكون‬
‫معقدا جدا أ و يص عب الوص ول إلي ه بالطريقة‬
‫اليدوية أو الذهنية كما أنه سيحتاج إلي برنامج‬
‫معقد جدا إذا تم استخدام اللغات التقليدية ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬
‫أ‪ /‬التحكم التلقائي ‪:‬‬
‫يتم التحكم في برنامج برولوق تلقائيا فعند تشغيل‬
‫ال برنامج يقوم النظام بالبح ث ع ن ك ل القي م التي‬
‫تحق ق الهدف أثناء ذل ك ربم ا يطل ب الحاسوب‬
‫إدخال بع ض ال بيانات أ و يعرض بعض المخرجات‬
‫على الشاشة ‪ .‬هذه الخاصية تشترك فيها كل لغات‬
‫البرمجة تقريبا ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫ب‪ /‬الخاصية الستنتاجية ‪:‬‬


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

‫ب‪ /‬الخاصية السترجاعية ‪:‬‬


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

‫ب‪ /‬الخاصية السترجاعية ‪:‬‬


‫أ و كأ ن ال برنامج يقوم بإعادة التنفيذ مرة أخري‬
‫مستخدما الحل الذي توصل إليه كمدخل جديد في‬
‫البرنامج ‪ .‬مثال ذلك إذا أضفنا في المثال السابق‬
‫العلقة أو القانون يحب عثمان ص إذا كان يحب‬
‫محمد ص‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫ب‪ /‬الخاصية السترجاعية ‪:‬‬


‫من قبل القانون يحب محمد س إذا كان يحب علي‬
‫س فإنه عند تشغيل البرنامج إذا سألنا ماذا يحب‬
‫عثمان فإ ن ال برنامج س يجيب الفول مستخدما‬
‫حقيق ة أ ن محم د يح ب الفول ولك ن عندم ا يصل‬
‫إلي القانون يحب محمد س إذا كان يحب علي س‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫ب‪ /‬الخاصية السترجاعية ‪:‬‬


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

‫د‪ /‬السلوب التخاطبي ‪:‬‬


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

‫ه ‪ /‬بنائية المعاودة ‪:‬‬


‫تتميز لغة برولوق ببنائية المعاودة ونعنى ببنائية‬
‫المعاودة بأن ينادي ك ل قوس القوس الذي دونه‬
‫أو بداخله‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫مثال (‪: )3‬‬


‫محمد ( يدرس ( الجامعة (العلوم (الحاسوب ))))‬
‫تعنى أن محمداً يدرس بالجامعة كلية العلوم بقسم‬
‫الحاسوب ‪ .‬فإذا اضفنا‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫‪ ‬علي يدرس ( الجامعة ( الداب ( الجغرافيا )))‬


‫‪ ‬عثمان ( يدرس (الجامعة (العلوم (الفيزياء))))‬
‫‪ ‬أحمد ( يدرس ( الثانوية ))‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫ثم سألنا من يدرس بالجامعة ستكون الجابة‬


‫محمد‬
‫علي‬
‫عثمان‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫وإذا سألنا من يدرس بالعلوم ستكون الجابة‬


‫محمد‬
‫عثمان‬
‫وإذا سألنا من يدرس جغرافيا ستكون الجابة‬
‫علي‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫و‪ /‬بساطة السلوب ‪:‬‬


‫تتميز البرمجة بلغة برولوق بسهولة فهمها وقلة‬
‫سطورها لنه ا تس تخدم لغ ة عادي ة غي ر اللغة‬
‫الخوارزمية التي لحظناها في لغو بيسك كما أن‬
‫برنامج بروبوق أق عشرة مرات في عدد السطر‬
‫من اللغات التقليدية تقريبا ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫مثال (‪: )4‬‬


‫ذكرن ا أ ن برنام ج برولوق يتكون م ن أربع أجزاء‪.‬‬
‫الجزء الول ويعرف بالمجال(‪ )domain‬ويتم فيه‬
‫تعريف الشياء التي يتعامل معها البرنامج والجزء‬
‫الثان ي ويعرف بالتحقيقات (‪ )predicates‬ويتم‬
‫فيه تعريف العلقات التي تربط بين هذه الشياء‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫مثال (‪: )4‬‬


‫أم ا الجزء الثالث ويعرف بالعبارة (‪)clauses‬‬
‫يت م في ه وص ف الحقائ ق أ و الواق ع الحقيق ي أما‬
‫الجزء الراب ع فيت م إعطاء التس اؤلت الت ي يجيب‬
‫عليه ا ال برنامج ‪ .‬أو ما يعرف بالهداف‬
‫(‪.)Goals‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫مثال (‪: )4‬‬


‫في هذا المثال نريد أن نعرف الرغبات الرياضية‬
‫للطلب حت ى نس تطيع أ ن ننظ م النشاط الرياضي‬
‫للطلب بناء عل ى ذل ك يبدأ ال برنامج بتعريف‬
‫الشياء الت ي يتعام ل معه ا ال برنامج وه ي طالب‬
‫ونشاط رياضي ‪،‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫مثال (‪: )4‬‬


‫ثم تعريف العلقة وهي رغبة الطالب في النشاط‬
‫الرياضي المعني وهو كرة القدم أو كرة السلة أو‬
‫كرة اليد أو كرة الطاولة ثم بعد ذلك يبدأ البرنامج‬
‫في الجابة من يرغب كرة القدم ومن يرغب كرة‬
‫السلة وهكذا ‪.‬‬
*/program/* ‫البرنامج‬
domains ‫المجال‬
student, activity = symbol ‫ نشاط = رمزي‬، ‫طالب‬
‫التحققات‬
predicates
) ‫ نشاط‬، ‫يرغب ( طالب‬
likes )student, activity( ‫العبارات‬
Clauses ) “‫ ”كرة القدم‬، ‫يرغب ( علي‬
like ) ali , ”foot ball”( ) “‫ ”كرة السلة‬، ‫يرغب ( عمر‬
like ) ali , ”basket ball”( ) “‫ ”كرة اليد‬، ‫يرغب ( عثمان‬
like ) ali , ”volley ball”( ) “‫ ”كرة الطاولة‬، ‫يرغب ( أحمد‬
like ) ali , ”ping ball”( ‫ س ) إذا كان‬، ‫يرغب ( أحمد‬
like ) ali , ”foot ball”( . )‫س‬،‫يرغب (عمر‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫هذه العبارة تص ف حقائ ق وهي رغبات مباشرة‬


‫لهول الطلب وقوانين ( قانون واحد هنا ) وهو‬
‫أن أحمد يحب كل ما يحبه عمر‬
‫* الجزء الرابع وهو جزء التس اولت يبدأ بكلمة‬
‫هدف (‪ )goal‬على النحو التالي ‪:‬‬
Goal ‫هدف‬
Likes ) omer,”basket ball”( )"‫ "كرة السلة‬، ‫يرغب (عمر‬
Yes ‫نعم‬
Goal ‫هدف‬
Likes ) omer, ”ping ball”( ) "‫ "كرة الطاولة‬، ‫يرغب (عمر‬
No ‫ل‬
Goal
‫هدف‬
Likes)ahmed,”basket ball”(
) "‫ "كرة السلة‬، ‫يرغب ( أحمد‬
Yes
‫نعم‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫نلحظ في هذا البرنامج أول أن عبارات الحقائق‬


‫والتس اؤلت ع ن الحقائ ق تنته ي بنفط ة ف ي آخر‬
‫العبارة أما التحققات فل تنتهي بنقطة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫عندم ا س ألنا ال برنامج ه ل يرغ ب عم ر لعبة كرة‬


‫الس لة كان ت الجابة ب "نع م" لن ذل ك ثاب ت في‬
‫عبارات الحقائ ق ‪ ،‬وكذل ك عندم ا س ألنا البرنامج‬
‫هل يرغ ب أحم د كرة الس لة ؟ أجاب ب "نعم"‬
‫مستنتجا ذلك من حقيقة أن أحمد يرغب في كل ما‬
‫يرغب فيه عمر من نشاط ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /7‬بعض مميزات لغة‬
‫برولوق‬

‫أم ا عندم ا س ألنا ال برنامج ه ل يح ب عمر كرة‬


‫الطاول ة أجاب ه ب "ل" لن ه ل توج د عبارة تفيد‬
‫بذلك أو علقة يمكن أن يستنتج منها ذلك ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /8‬المتغيرات في لغة‬
‫برولوق‬

‫المتغيرات ‪ X‬في ال برنامج الس ابق والذي يقابله‬


‫س في الترجمة العربية هو رمز لمتغير في لغة‬
‫برولوق ونعنى بالمتغيرات الرمز الذي يأخذ قيما‬
‫مختلفة فإذا كتبنا في المثال السابق ‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /8‬المتغيرات في لغة‬
‫برولوق‬

‫‪Goal‬‬ ‫هدف‬
‫(‪Likes )ahmed , x‬‬ ‫يرغب ( أحمد ‪ ،‬س )‬
‫‪X = ping pong‬‬ ‫س = كرة الطاولة‬
‫‪X = basket ball‬‬ ‫س = كرة السلة‬
‫‪2 solutions‬‬
‫حلين‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /8‬المتغيرات في لغة‬
‫برولوق‬

‫أي أن س أو ‪ X‬تحقق القيم كرة الطاولة وكرة‬


‫السلة ‪ .‬القيمة الولي من الحقيقة أن أحمد يرغب‬
‫كرة الطاول ة والقيم ة الثاني ة مس تنتجة بأ ن أحمد‬
‫يحب كل نشاط يحبه عمر ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /8‬المتغيرات في لغة‬
‫برولوق‬

‫تشترط برولوق ف ي المتغيرات أن تبدأ بحرف‬


‫كبير (‪ )capital‬يليه ا أ ي عدد من الحروف‬
‫والرقام وعلمة ( _ ) مثل ‪My_name_is‬‬
‫تقب ل كرم ز لمتغي ر ف ي لغ ة برولوق أم ا الرمز‬
‫‪ 1st-boy‬فل تقب ل لنه ا بدأ ت برق م بدل من‬
‫حرف كبير ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /8‬المتغيرات في لغة‬
‫برولوق‬

‫يفضل في لغات البرمجة عموما أن تكون أسماء‬


‫أو رموز المتغيرات ذات دللة ومعنى بدلً من س‬
‫و ص و ع و غيرها مثل ‪:‬‬
‫‪ -‬يفضل (‪ ahmed, sport ( likes‬على ‪)likes)ahmed,x‬‬

‫‪ -‬يفضل (‪ student,”foot ball”( likes‬على ‪)”likes )y,”foot ball‬‬


‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /8‬المتغيرات في لغة‬
‫برولوق‬

‫إذا وضعنا هذه العبارة كهدف فإن البرنامج سيرد‬


‫أن المتغير الذي يحقق الرغبة لكرة القدم هو فقط‬
‫الطال ب عل ي و يمك ن ص ياغة هذا الهدف بلغة‬
‫برولوق على النحو التالي ‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /8‬المتغيرات في لغة‬
‫برولوق‬

‫‪Goal‬‬ ‫هدف‬
‫‪)Likes )student, foot ball‬‬ ‫يحب (الطالب ‪ ،‬كرة القدم)‬
‫الطالب = علي‬
‫‪Student = ali‬‬
‫حل واحد‬
‫‪solution 1‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /9‬الشياء‬
‫والعلقات في‬
‫لغة برولوق‬

‫ذكرن ا أ ن جزء العبارات ف ي لغة برولوق يتكون‬


‫من حقائ ق (‪ )facts‬والحقيق ة يع بر عنه ا في‬
‫شكل علقة تربط بين أشياء ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /9‬الشياء‬
‫والعلقات في‬
‫لغة برولوق‬

‫مثل ف ي المثال الس ابق عل ي وعمر و عثمان و‬


‫أحمد وكرة قدم وكرة سلة وكرة طاولة وكرة يد‬
‫كلها شيئيات أما يرغب (‪ )likes‬فهي علقة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /9‬الشياء‬
‫والعلقات في‬
‫لغة برولوق‬

‫كم ا كان هناك شرط ف ي أسماء المتغيرات هناك‬


‫شرط ا لس ماء الشيئيات والعلق ة وه و أن يبدأ‬
‫السم بحرف صغير (‪ ) small‬ثم أي تركيب من‬
‫الحروف والرقام وعلمة ( _ ) ‪ ،‬وأن ل يحتوي‬
‫هذا التركيب مسافة فارقة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /9‬الشياء‬
‫والعلقات في‬
‫لغة برولوق‬

‫معلومة ‪:‬‬
‫يمك ن اس تخدام الحروف الك بيرة أ و المسافات‬
‫الفارغة بين الحروف عندما ينحصر التركيب‬
‫”‪.‬‬ ‫بين علمتي اقتباس ”‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /9‬الشياء‬
‫والعلقات في‬
‫لغة برولوق‬

‫مثال (‪: )5‬‬


‫بين أي من العبارات أو الحقائق التالية صحيح أو‬
‫خطأ ‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /9‬الشياء‬
‫والعلقات في‬
‫لغة برولوق‬
‫‪) valuable ) flat‬‬ ‫فارهة (شقة)‬
‫‪) valuable ) car‬‬ ‫فارهة (عربة)‬
‫‪)owns ) mohamed, house‬‬ ‫يمتلك (محمد ‪ ،‬منزل)‬
‫‪) eats ) cat , meat‬‬ ‫يأكل (القط ‪ ،‬اللحم )‬
‫‪) eats ) cow , grass‬‬ ‫يأكل ( البقر ‪ ،‬النجيلة )‬
‫عربة ( كرونا ‪ ،‬زرقاء ‪،‬‬
‫‪)car )corona , blue, M 86‬‬
‫موديل ‪) 86‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /9‬الشياء‬
‫والعلقات في‬
‫لغة برولوق‬

‫ك ل هذه المثل ة عبارات أ و حقائ ق ص حيحة في‬


‫لغة برولوق ماعدا العبارة الخيرة لن ‪ M‬حرف‬
‫كبير والشياء يجب أن تبدأ بحرف صغير ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /9‬الشياء‬
‫والعلقات في‬
‫لغة برولوق‬

‫يلحظ هنا أن عدد الشياء داخل العلقات مفتوح‬


‫ونجد أن في ‪:‬‬
‫‪ ‬المثال الول والثاني هناك شيء واحد يوصف‬
‫بأنه فارهة ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /9‬الشياء‬
‫والعلقات في‬
‫لغة برولوق‬

‫‪ ‬المثال الثال ث هناك علق ة بي ن شيئي ن هما‪:‬‬


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

‫‪ ‬المثال الس ادس فه و وص ف لعرب ة يتكون من‬


‫نوع العرب ة ‪ ،‬ولون العرب ة ‪ ،‬ومودي ل العربة ‪،‬‬
‫وبالطب ع يمك ن أ ن يزي د الوص ف ليشم ل سعر‬
‫العربة ‪ ،‬ورقم العربة ‪ ،‬وعدد الميال التي تقطعها‬
‫وهكذا ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /10‬المجالت‬
‫والتحقيقات‬

‫ذكرن ا أ ن المجالت والتحقيقات ف ي لغة برولوق‬


‫يقابلن جزء التعريفات لغ ة باس كال لت بيان ذلك‬
‫نقدم المثلة التالية ‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /10‬المجالت‬
‫والتحقيقات‬

‫‪domains‬‬ ‫المجالت‬
‫‪Person , activity = symbol‬‬ ‫شخص ‪ ،‬نشاط = رمزي‬
‫‪predicates‬‬ ‫التحققات‬
‫‪)Likes ) person , activity‬‬ ‫يحب ( شخص ‪ ،‬نشاطاً )‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /10‬المجالت‬
‫والتحقيقات‬

‫هذا يعن ي أ ن هناك علق ة بي ن شيئي ن هما الفرد‬


‫والنشاط والعلقة هي الحب أو الرغبة وهما من‬
‫النوع رمز وليس من العدد أو الرقم ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /10‬المجالت‬
‫والتحقيقات‬

‫مثال (‪: )6‬‬


‫بين مصدر الخطأ إذا كتبنا الحقيقة (‪ )fact‬التالية‬
‫في جزء العبارات‬
‫‪Likes ) )10, x‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /10‬المجالت‬
‫والتحقيقات‬

‫لن تقبل لن الشيء الول في العلقة معرف بأنه‬


‫رمز وفي هذا المثال = ‪ 10‬وهي رقم لذا سيعطى‬
‫الحاسوب على الشاشة رسالة (‪) type error‬‬
‫أي هناك خط ا أ و عدم طاب ق بين الشياء‬
‫ومواصفاتها ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /10‬المجالت‬
‫والتحقيقات‬

‫مثال (‪: )7‬‬


‫بي ن الخط أ إذا كتبن ا الحقيق ة (‪ )fact‬التالي ة في‬
‫جزء العبارات‬
‫‪Likes)" )ali, "foot ball ", "basket ball‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /10‬المجالت‬
‫والتحقيقات‬

‫فإن البرنامج يعطي خطأ لن العلقة صممت بين‬


‫شيئين اثنين فقط وهذه علقة بين ثلث أشياء ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫مثال (‪: )8‬‬


‫شراء العربة المناسبة ‪:‬‬
domains
brand , colour = symbol
age , price = integer
millage = real
predicates
car )brand, millage, age, colour, price(
clauses
car ) toyota , 45000 , 5 , white , 800000(
car ) ford , 30000 , 4 , blue , 500000(
car ) datsun , 20000 , 3 , red , 300000(
‫المجالت‬
‫الموديل ‪ ،‬اللون = رمزي‬
‫العمر ‪ ،‬السعر = رقمي‬
‫المسافة = عددي‬
‫التحققات‬
‫عربة ( موديل ‪ ،‬المسافة ‪ ،‬العمر ‪ ،‬اللون ‪ ،‬السعر )‬
‫العبارات‬
‫عربة ( تويوتا ‪ ، 5 ، 45000 ،‬أبيض ‪) 800000 ،‬‬
‫عربة ( فورد ‪ ، 4 ، 30000 ،‬أزرق ‪) 500000 ،‬‬
‫عربة ( داتسون ‪ ، 3 ، 20000 ،‬أحمر ‪) 300000 ،‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫هدف‬
‫عربة ( موديل ‪ ،‬المسافة ‪ ،‬العمر ‪ ،‬اللون ‪) 500000 ،‬‬

‫‪Goal‬‬
‫( ‪Car ) Brand, Millage, Age, colour, 500000‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫الهدف الن أ ن يبح ث الحاس وب أ و برنامج‬


‫برولوق عن أي عربة سعرها ‪ 500000‬وبغض‬
‫النظ ر ع ن موديله ا أ و المس افة الت ي قطعته ا أو‬
‫عمرها أو لونها‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫سيجيب الحاسوب أن العربة التي تحقق ذلك هي‬


‫العربة الفورد ومواصفتها أن مسافاتها ‪30000‬‬
‫ميل وعمرها ‪ 4‬سنوات ولونها أزرق ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫ الهداف‬/11
‫المركبة‬

Brand = ford millage = 30000 , age = 4m


colour = blue
1 solution
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫لكن عادة ل يبحث شخص عن عربة بسعر معين‬


‫ولكن يبحث عن عربة بسعر ل يزيد عن مبلغ‬
‫معين ‪ .‬لهذا سيعدل الهدف للتي ‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫هدف‬
‫عرب ة (أي مودي ل‪ ،‬أ ي مس افة‪ ،‬أ ي عم ر‪ ،‬أي‬
‫لون‪ ،‬أي سعر ) والسعر أقل من ‪35000‬‬
‫‪Goal‬‬
‫(‪Car ) brand , millage , age , coluor , price‬‬
‫‪And price > 35000‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫س تكون الجاب ة عل ى هذا الهدف ه ي عربة‬


‫الداتسون لنها العربة الوحيدة التي تحقق شرط‬
‫الس عر أق ل م ن ‪ 350000‬وس يخرج البرنامج‬
‫البيانات التالية ‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫ الهداف‬/11
‫المركبة‬

Brand = datsun millage = 20000, age = 3,


colour = red , price = 300000
1 solution
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫إذا كنا لنرغ ب في ك ل هذه ال بيانات عند إخراج‬


‫الحل بل فقط نريد على سبيل المثال عمر العربة‬
‫إضافة للسعر يمكن ذلك بتعديل الهدف على النحو‬
‫التالي ‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫‪Goal‬‬
‫‪Car ) _ , _ , age, _ , price( and price> 35000‬‬
‫‪age = 3 , price = 200000‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫من هذا نلحظ أننا إذا وضعنا علمة ( _ ) في‬


‫مكان متغي ر يعن ى هذا أ ن ذل ك المتغير مطلوب ‪.‬‬
‫وهذه العلمة إذا أستخدمت في الحقائق تعنى أن‬
‫الشيء الذي وضعت في مكانه شيء عام مثل ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬
‫مثال (‪: )9‬‬
‫ماذا تعني الحقائق التالية ‪:‬‬
‫(‪likes ) _ , foot ball‬‬ ‫يرغب ( _ ‪ ،‬كرة القدم )‬ ‫‪1‬‬
‫(‪Eats ) _ , bread‬‬ ‫يأكل ( _ ‪ ،‬خبزا )‬ ‫‪2‬‬
‫( _ ) ‪Washes‬‬ ‫يغسل ( _ )‬ ‫‪3‬‬
‫(‪Owns ) _ , clothes‬‬ ‫يمتلك ( _ ‪ ،‬ملبسا )‬ ‫‪4‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫‪ .1‬يعنى ذلك أن كل الطلب يحبون كرة القدم ‪.‬‬


‫‪ .2‬يعنى أن كل الناس يأكلون الخبر ‪.‬‬
‫‪ .3‬يعنى أن كل الناس يغسلون ملبسهم ‪.‬‬
‫‪ .4‬يعنى أن كل شخص يمتلك ملبسا وهكذا ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫مثال (‪: )10‬‬


‫إختيار زوج المباراة ‪:‬‬
domains ‫المجالت‬
pupil = symbol ‫تلميذ = رمزي‬
age = integer ‫عمر = رقمي‬
‫التحققات‬
predicates
) ‫ عمر‬، ‫اللعب ( تلميذ‬
player ) pupil , age ( ‫العبارات‬
clauses ) 9 ، ‫اللعب ( سامي‬
player ) sami , 9 ( ) 10 ، ‫اللعب ( عصام‬
player ) isam , 10 ( ) 9 ، ‫اللعب ( عمر‬
player ) ali , 9 ( ) 9 ، ‫اللعب (علي‬
) 10 ، ‫اللعب ( أحمد‬
player ) omer , 9 (
player ) ahmed , 10 (
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫فإذا أردن ا م ن ال برنامج إخراج ك ل تلميذي ن في‬


‫عمر واحد ليتبارا في لعبة معينة فإن ذلك متاح‬
‫في لغة برولوق على النحو التالي ‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫(‪player ) pupil1 , 9( and ) pupil2 , 9‬‬


‫‪and pupil2 >< pupil1‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫اللعب (التلميذ‪ )9 ،‬واللعب (التلميذ الثاني‪)9 ،‬‬


‫بحي ث ل يكون التلمي ذ الول ه و نف س التلميذ‬
‫الثاني ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫س يقوم ال برنامج بالبح ث ع ن التلميذ الول الذي‬


‫عمره تمسع سنوات وسيجد أول من يحقق ذلك‬
‫التلمي ذ س امي ث م يبح ث ع ن التلمي ذ الثاني الذي‬
‫عمره تسع سنوات وسيجد أول من يحقق ذلك‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫كذل ك التلمي ذ س امي ولك ن س يجد أ ن سامي ل‬


‫يحقق الشرط الثالث وهو أل يكون التلميذ الول‬
‫هو نف س التلمي ذ الثان ي لذا س يقوم البرنامج‬
‫بالبح ث ع ن تلمي ذ آخ ر غي ر س امي وسيجد أول‬
‫من يحقق شرط العمر لتسع سنوات ويختلف عن‬
‫سامي هو التلميذ علي‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫بهذا يكون علي هو أحد الحلول ثم يواصل البرنامج‬


‫للبح ث ع ن تلمي ذ آخ ر يحق ق شرط العم ر تسع‬
‫سنوات ويختلف عن سامي وسيجد أن عمر يحقق‬
‫هذي ن الشرطي ن بع د ذل ك يبدأ البرنامج بتكرار‬
‫الختبارات التي عمله ا م ع س امي مع عل ي ثم مع‬
‫عمر وستكون النتيجة النهائية على النحو التالي‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫ الهداف‬/11
‫المركبة‬

pupil1 = sami , pupil2 = ali


pupil1 = sami , pupil2 = omer
pupil1 = ali , pupil2 = sami
pupil1 = ali , pupil2 = omer
pupil1 = omer , pupil2 = sami
pupil1 = omer , pupil2 = ali
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫وإذا عملنا اختبارا آخرا وهو أن يلعب عمر ‪ 9‬مع‬


‫عمر ‪10‬‬
‫(‪player ) pupil1 , 9( and ) pupil2 , 10‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫ الهداف‬/11
‫المركبة‬

‫ستكون الجابة‬
pupil1 = sami , pupil2 = ahmed
pupil1 = ali , pupil2 = ahmed
pupil1 = omer , pupil2 = ahmed
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬
‫مثال (‪: )11‬‬
‫برنامج الشجرة العائلية وصلة القرابة ‪:‬‬

‫مباشرة ه ي الب والم والج د والجدة والعم‬


‫والعم ة والخال والخال ة والخ والخ ت والقرابة‬
‫دائما بين شخصين‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬
‫مثال (‪: )11‬‬
‫برنامج الشجرة العائلية وصلة القرابة ‪:‬‬
‫فقرابة البوة بين الب وولده وقرابة الخالة بين‬
‫الخالة وأبن أختها أو بنت اختها وهكذا ‪ .‬يمكن‬
‫تفص يل هذه العلقات لوص ف الشجرة العائلية‬
‫بلغة برولوق على النحو التالي ‪:‬‬
/* family program */
domains
person = symbol
predicates
male ) person(
female ) person(
female ) person(
mother ) person , person(
father ) person , person(
brother ) person , person(
sister ) person , person(
uncle ) person , person(
aunt ) person , person(
uncle1 ) person , person(
aunt1 ) person , person(
grand_father ) person , person(
grand_mother ) person , person(
parent ) person , person(
Clauses
male ) ali (
male ) gafer (
male ) bakri (
male ) eisa (
female ) batol (
female ) fatma (
female ) maria (
female ) samia (
mother ) samia , batol (
mother ) ali , samia (
father ) ali , bakri (
father ) batol , gafer (
father ) maria , ali (
father ) fatma , bakri (
‫‪ */‬برنامج شجرة العائلية *‪/‬‬
‫المجالت‬
‫شخص = رمزي‬
‫التحققات‬
‫ذكر (شخص)‬
‫أنثى (شخص)‬
‫أم (شخص و شخصين )‬
‫أب (شخص و شخصين )‬
‫أخ (شخص و شخصين )‬
‫أخت (شخص و شخصين )‬
‫عم (شخص و شخصين )‬
‫عمة (شخص و شخصين )‬
‫خال (شخص و شخصين )‬
‫خالة (شخص و شخصين )‬
‫جد (شخص و شخصين )‬
‫جدة (شخص و شخصين )‬
‫والد (شخص و شخصين )‬
‫العبارات‬
‫ذكر (علي )‬
‫ذكر ( جعفر )‬
‫ذكر (بكري )‬
‫ذكر ( عيسي )‬
‫أنثي ( بتول )‬
‫أنثي ( فاطمة )‬
‫أنثي ( ماريا )‬
‫أنثي ( سامية )‬
‫أم ( سامية ‪ ،‬بتول )‬
‫أم ( علي ‪ ،‬سامية )‬
‫أب ( علي ‪ ،‬بكري )‬
‫أب ( بتول جعفر )‬
‫أب ( ماريا ‪ ،‬علي )‬
‫أب ( فاطمة ‪ ،‬بكري )‬
)parent ) X , Y( if mother )X , Y( or father )X,Y
brother ) X , Y( if male )Y( and parent )X,P(
and parent )Y , P( and X >< Y
sister ) X , Y( if female )Y( and parent )X,P(
and parent )Y , P( and X >< Y
uncle ) X , Y( if male )Y( and father )X,P( and
brother )Y , P(
aunt ) X , Y( if female )Y( and father )X,P(
and brother )Y , P(
uncle1 )X , Y( if male )Y( and mother )X,P(
and sister )Y , P(
aunt1 )X , Y( if female )Y( and mother )X,P(
and sister )Y , P(
grand_father )X , Y( if parent )X , P( and
father )P , Y(

grand_mother )X , Y( if parent )X , P( and


father )P , Y(
‫والد (س ‪ ،‬ص ) إذا كان أم ( س ‪ ،‬ص ) أو أب ( س ‪ ،‬ص )‬
‫أخ ( س ‪ ،‬ص ) إذا كان ذكر (ص) ووالد ( س ‪ ،‬ع ) ووالد‬
‫(ص‪،‬ع) و س تختلف عن ص‬

‫أخت ( س ‪ ،‬ص ) إذا كانت انثي (ص) ووالد ( س ‪ ،‬ع ) ووالد‬


‫(ص ‪ ،‬ع) و س تختلف عن ص ‪.‬‬
‫عم (س ‪ ،‬ص ) إذ كان ذكر (ص) وأب (س ‪ ،‬ع ) وأخ (ص ‪ ،‬ع)‪.‬‬
‫عمة (س ‪ ،‬ص) إذا كانت أخت (ص) وأب (س‪،‬ع) وأخ ( ص‪،‬ع)‪.‬‬
‫خال (س ‪ ،‬ص ) إذا كان ذكر (ص) وأم (س‪،‬ع) وأخت (ص ‪،‬ع) ‪.‬‬
‫خالة (س ‪،‬ص) إذا كانت أخت (ص) وأم (س‪،‬ع) وأخت (ص ‪،‬ع)‪.‬‬
‫جد (س ‪،‬ص) إذا كان والد (س ‪ ،‬ع ) وأب (ص ‪ ،‬ع ) ‪.‬‬
‫جدة (س ‪ ،‬ص ) إذا كان والد (س ‪ ،‬ع ) أم ( ص ‪ ،‬ع ) ‪.‬‬

‫إذا بدأنا في الستفسار عن لعض العلقات سيرد‬


‫ال برنامج حس ب م ا ه و متاح ل ه م ن معلومات ثم‬
‫تعريفها له في جزء العبارات مثل‬
‫الذكاء الصطناعي ولغة برولوق‬
‫ الهداف‬/11
‫المركبة‬

Goal
Grand_father) maria , Gf (
Gf = bakri
1 solution
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬
‫هدف‬
‫جد ( ماريا ‪ ،‬جد )‬
‫الجد = بكري‬
‫حل واحد‬
‫أجاب البرنامج بأن جد ماريا هو بكري ول يوجد‬
‫جد آخر حسب المعلومات المتاحة لدى البرنامج ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬
‫‪Goal‬‬ ‫هدف‬
‫اخت (علي ‪ ،‬الخت) ( ‪Sister ) ali , Sis‬‬
‫‪Sis = fatima‬‬ ‫الخت = فاطمة‬
‫‪1 solution‬‬ ‫حل واحد‬
‫أجاب البرنامج بأن أخت علي هي فاطمة ول‬
‫توجد أخت أخرى لعلي حسب ما هو متاح من‬
‫معلومات للبرنامج ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬
‫معلومة ‪:‬‬
‫‪ .1‬تتيح لغة البرولوق إمكانية كتابة الملحظات‬
‫أو التعليقات إذا ‪:‬‬
‫‪ ‬وضعت بين علمتي ‪. /* */‬‬
‫‪ ‬وضعت علمة ‪ %‬عند بداية السطر وتنتهي‬
‫الملحظة أو التعليق بنهاية السطر ‪.‬‬
‫‪ .2‬يتبع الهدف ( ‪ ) Goal‬علمة (‪):‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫مثال (‪: )12‬‬


‫برنامج التوصل إلي القاتل ‪:‬‬
‫لق د ت م اغتي ل س هام ف ي مطع م بالس وق‪ ،‬وقد‬
‫شاه د بع ض الفراد بع د عملي ة القتل مباشرة‪،‬‬
‫وبدأت الشرطة في التحري لمعرفة القاتل ‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫التوصل إلي القاتل ‪:‬‬


‫برنامج(‪: )12‬‬
‫مثال‬
‫فجمع ت معلومات ع ن الوس يلة الت ي يمك ن أن‬
‫تكون قد أستخدمت في تنفيذ عملية القتل‪ ،‬وهل‬
‫هذه الوس يلة يمك ن أ ن تكون ف ي ي د أ ي من‬
‫المشبوهي ن م ن جان ب آخ ر تحري الشرط ة عن‬
‫علقات سهام بالمشبوهين‪،‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬
‫القاتل ‪:‬المشبوهين لقتل سهام‬
‫لي من‬ ‫دوافعإلي‬ ‫هناك‬
‫التوصل‬
‫(‪: )12‬‬ ‫وهل‬
‫برنامج‬
‫مثال‬
‫وحي ث أ ن هذه المعلومات يمك ن أ ن تكون شائكة‬
‫ومعقدة ‪ .‬تم اس تخدام الحاس وب للمس اعدة في‬
‫الوصول للقاتل وكانت اللغة المناسبة التي يمكن‬
‫التخاطب بها مع الحاسوب هي لغة برولوق ولهذا‬
‫الغرض قام الضاب ط الشرط ي بكتاب ة البرنامج‬
‫التالي ‪:‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬
‫أخراج ال برنامج بأ ن المته م الرئي س هو عمار‬
‫للسباب التالية ‪:‬‬
‫أول ‪ :‬أن سهام قتلت بضربة عصا غليظة وهذه‬
‫يشبه أن تكون قد ضربت بحائط الكافتريا أو‬
‫بالبوت ولما كان علي يمتلك بوت ويمتلك عمار‬
‫رجل خشبية من هذا كانا أكثر شبهة من الخرين‪.‬‬
‫الذكاء الصطناعي ولغة برولوق‬
‫‪ /11‬الهداف‬
‫المركبة‬

‫ثانيا ‪ :‬يمكن أن يكون الفاتح متهما بالقتل بضرب‬


‫سهام مع حائط الكافتريا بغرض سرقة مالها ‪.‬‬
‫ثالثا ‪ :‬بما أن هنالك إشكال بين عمار وسهام وأن‬
‫سهام قد قتلت بعصا غليظة يكون أقرب المتهمين‬
‫هو عمار ‪.‬‬
‫‪ */‬برنامج شجرة العائلية *‪/‬‬
‫المجالت‬
‫السم = رمزي‬
‫العمر = رقمي‬
‫النوع = رمزي‬
‫الدافع = رمزي‬
‫العلمة = رمزي‬
‫السلح = رمزي‬
‫النشاط = رمزي‬
‫التحققات‬
‫شخص ( السم‪ ،‬العمر‪ ،‬النوع‪ ،‬النشاط)‬
‫إشكال ( السم ‪ ،‬السم )‬
‫قتل ( السم ‪ ،‬السلح )‬
‫علمة ( اسم ‪ ،‬علمة )‬
‫دافع ( الدافع )‬
‫يمتلك ( السم ‪ ،‬السلح )‬
‫يحتمل أن يملك ( السم ‪ ،‬السلح )‬
‫يؤثر مثل الخر ( السلح ‪ ،‬السلح )‬
‫المتهم ( السم )‬
‫العبارات‬
‫شخص ( علي ‪ ، 25 ،‬ذكر ‪ ،‬لعب كرة )‬
‫شخص ( علي ‪ ، 25 ،‬ذكر ‪ ،‬جزار )‬
‫شخص ( فاطمة ‪ ، 20 ،‬أنثي ‪ ،‬كوفير )‬
‫شخص ( عمار ‪ ، 25 ،‬ذكر ‪ ،‬نجار )‬
‫شخص ( فاتح ‪ ، 25 ،‬ذكر نشال )‬
‫إشكال ( فاطمة ‪ ،‬فاتح )‬
‫إشكال ( فاطمة ‪ ،‬عمار )‬
‫إشكال ( سهام ‪ ،‬عمار )‬
‫العبارات‬
‫قتل ( سهام ‪ ،‬عصا غليظة )‬
‫الدافع ( المال )‬
‫الدافع ( المشاكل )‬
‫علمة ( سامية ‪ ،‬دم )‬
‫علمة ( علي ‪ ،‬طين )‬
‫يمتلك ( عمار ‪ ،‬رجل خشبية )‬
‫يمتلك ( الفاتح ‪ ،‬مسدس )‬
‫*‪ /‬معلومات خلفية *‪/‬‬
‫له نفس الثر ( رجل خشبية ‪ ،‬كافتريا )‬
‫له نفس الثر ( كافتريا ‪ ،‬قهوة )‬
‫له نفس الثر ( المقص ‪ ،‬المطوة )‬
‫له نفس الثر ( البوت ‪ ،‬الكافتريا )‬
‫يمتلك ( س ‪ ،‬بوت ) إذا كان شخص (س ‪، - ، - ،‬‬
‫لعب كرة )‬
‫يمتلك (س‪ ،‬مقص) إذا كان شخص (س‪ ،- ،- ،‬كوافير )‬
‫يمتلك ( س ‪ ،‬شيئاً ) إذا كان يحتمل أن يمتلك (س‪،‬شيئاً)‬
‫هدف‬
‫‪ */‬إتهم من يملك سلحاً يمكن أن تكون قد قتلت‬
‫به سهام * ‪/‬‬
‫إتهم (س) إذا كان قتل (سهام ‪ ،‬السلح ) وله‬
‫نفس الثر (ص ‪ ،‬السلح)‬
‫س = عمار‬
‫حل واحد‬
‫‪ */‬إتهم أولئك الشخاص الذين لديهم مشاكل مع‬
‫سهام * ‪/‬‬
‫هدف‬
‫إتهم (س) إذا كان دافع (المشاكل) وشخص‬
‫(س‪ ) - ، - ، - ،‬واشكال ( سهام ‪ ،‬س )‬
‫س = عمار‬
‫حل واحد‬
‫الملح‬
‫ق‬
‫الملحق ‪:‬‬
‫‪Do‬‬ ‫حلقة ‪...For‬‬
‫نستخدم هذا النمط من الحلقات التكرارية إذا‬
‫كان معلوماً لدينا مسبقاً عدد المرات التي نريد‬
‫فيها تكرار العمل ‪.‬‬
‫الملح‬
‫ق‬

‫الصيغة العامة‬
‫> ‪[For‬‬
‫>=‪ <:‬متغير‬‫‪ < to [Downto‬القيمة البتدائية للمتغير‬

‫للمتغير‪do‬‬
‫القيمة النهائية >‬ ‫<‬
‫< عبارات بسيطة او مركبة >‬
‫الملح‬
‫ق‬

‫العبارة المركبة هي التي تتألف من عدد من‬


‫العبارات البسيطة وينبغي ان تنحصر بين‬
‫‪;Begin‬‬ ‫‪….‬‬ ‫‪End‬‬
‫الملح‬
‫ق‬

‫‪Until‬‬ ‫حلقة ‪...Repeat‬‬

‫نستخدم هذا النمط من الحلقات التكرارية إذا‬


‫كان تكرار العمل يتوقف علي شرط معين ‪.‬‬
‫الملح‬
‫ق‬

‫الصيغة العامة‬
‫‪Repeat‬‬
‫>‬ ‫<‬ ‫أي تتابع‬

‫>‬ ‫‪Until‬او<‬
‫مركبة‬ ‫عبارات بسيطة‬