You are on page 1of 36

‫خطة الفصل ‪2‬‬

‫‪.............................................................................................................................................1‬خطة الفصل ‪2‬‬


‫‪..............................................................................................................3‬الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‪.‬‬
‫‪2.1.‬‬ ‫‪..........................................................................................................................3‬مفهوم الخوارزمية‬
‫‪2.2.‬‬ ‫‪........................................................................................................................3‬نهج وتحليل المشكلة‬
‫‪2.3.‬‬ ‫‪...............................................................................................................................4‬هياكل البيانات‬
‫‪2.3.1.‬‬ ‫‪.......................................................................................................................4‬مفهوم المعرف‬
‫‪.............................................................................................................................................4‬امثله‪:‬‬
‫‪2.3.2.‬‬ ‫‪.................................................................................................................4‬الثوابت والمتغيرات‬
‫‪2.3.3.‬‬ ‫‪........................................................................................................................5‬أنواع البيانات‬
‫‪........................................................................................................................................6‬مالحظات‬
‫‪2.4.‬‬ ‫‪.................................................................................................................6‬هيكل خوارزمية ‪ /‬برنامج‬
‫‪2.4.1.‬‬ ‫‪................................................................................................................................6‬البيانات‬
‫‪......................................................................................................................................6‬الثوابت —‬
‫‪.............................................................................................................................................6‬امثله‪:‬‬
‫‪.......................................................................................................................................6‬المتغيرات‪-‬‬
‫‪.............................................................................................................................................7‬امثله‪:‬‬
‫‪........................................................................................................................................7‬جسم ‪2.4.2.‬‬
‫‪........................................................................................................7‬هيكل اختبار بديل واحد ‪ /‬مزدوج ‪-‬‬
‫‪2.5.‬‬ ‫‪..............................................................................................................................7‬أنواع التعليمات‬
‫‪2.5.1.‬‬ ‫‪.....................................................................................8‬تعليمات اإلدخال ‪ /‬اإلخراج (قراءة ‪ /‬كتابة)‬
‫‪2.5.1.1.‬‬ ‫‪..............................................................................................................8‬المدخالت (اقرأ)‬
‫‪.............................................................................................................................................8‬امثله‪:‬‬
‫‪2.5.1.2.‬‬ ‫‪.........................................................................................................8‬المخرجات (الكتابة)‬
‫‪.............................................................................................................................................8‬امثله‪:‬‬
‫‪2.5.2.‬‬ ‫‪.....................................................................................................................9‬تعليمات التكليف‬
‫‪...........................................................................................................................................10‬امثله‪:‬‬
‫‪2.5.3.‬‬ ‫‪.......................................................................................................................10‬هياكل التحكم‬
‫‪2.5.3.1.‬‬ ‫‪................................................................................................10‬هياكل المراقبة المشروطة‬
‫‪.............................................................................................................................................10‬مثل‪:‬‬
‫‪.............................................................................................................................................11‬مثل‪:‬‬
‫‪.....................................................................................................................................11‬مالحظات‪:‬‬
‫‪...........................................................................................................................................11‬امثله‪:‬‬
‫‪2.5.3.2.‬‬ ‫‪....................................................................................................11‬هياكل التحكم المتكررة‬
‫‪2.5.3.3.‬‬ ‫‪ Goto)...................................................................13‬تعليمات( هيكل التحكم في الفرع ‪ /‬القفزة‬
‫‪2.6.‬‬ ‫‪.........................................................................................................15‬تطابق خوارزمية باسكال < >‬
‫‪...............................................................................................................................16‬مالحظات هامة‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫‪2.7.‬‬ ‫‪...................................................................................................................17‬تمثيل الهيكل التنظيمي‬


‫‪2.7.1.‬‬ ‫‪...........................................................................................................17‬رموز المخطط الهيكلي‬
‫‪2.7.2.‬‬ ‫‪......................................................................................................18‬تمثيل األوليات الخوارزمية‬
‫‪2.7.2.1.‬‬ ‫‪......................................................................................................................18‬التسلسل‬
‫‪......................................................................................................18‬التمثيل الخوارزمي إذا <الشرط> ثم‬
‫‪...........................................................................................................................................19‬امثله‪:‬‬
‫‪............................................................................................................................................20‬كالم‪:‬‬
‫‪2.7.2.5.‬‬ ‫‪..................................................................................................20‬الهيكل التكراري كمسألة‬
‫‪2.8.‬‬ ‫‪...................................................................................................................................21‬المشغلون‬
‫‪2.8.1.‬‬ ‫‪.........................................................................................................21‬عوامل التشغيل الحسابية‬
‫‪...............................................................................................22‬عدد صحيح * عدد صحيح = عدد صحيح‬
‫‪2.8.2.‬‬ ‫‪...................................................................................................................23‬العوامل العالئقية‬
‫‪2.8.3.‬‬ ‫‪...................................................................................................................23‬العوامل المنطقية‬
‫‪.............................................................................................................................................23‬مثل‪:‬‬
‫‪2.8.4.‬‬ ‫‪..............................................................................................................................23‬وظائف‬
‫‪2.8.5.‬‬ ‫‪........................................................................................24‬حساب التعبير‪ :‬األولويات في المشغلين‬
‫‪....................................................................................................................24‬التعبيرات الحسابية )‪a‬‬
‫‪.............................................................................................................................................24‬مثل‪:‬‬
‫‪...........................................................................................................................................25‬امثله‪:‬‬
‫‪...........................................................................................................................25‬أمثلة على التكوين‪:‬‬
‫‪......................................................................................................25‬التعبيرات المنطقية (المنطقية) )‪b‬‬
‫)‪c‬‬ ‫‪.................................................................................................................25‬قواعد أولوية المشغل‬
‫‪2.9.‬‬ ‫‪...............................................................................................................................26‬أمثلة التطبيق‬
‫‪.....................................................................................................................26‬مثال ‪ :١‬تبديل قيم متغيرين‪j‬‬
‫‪..............................................................................................................................................26‬حل‬
‫‪.......................................................................................................................28‬مثال ‪ :٢‬مجموع متغيرين‪j‬‬
‫‪..............................................................................................................................................28‬حل‬
‫‪..................................................................................................................29‬مثال ‪ :٣‬عدد زوجي أو فردي‬
‫‪..............................................................................................................................................29‬حل‬
‫‪ n.....................................................................................30‬مثال ‪ :٤‬إظهار جميع األرقام التي تقبل القسمة على‬
‫‪..............................................................................................................................................31‬حل‬
‫‪ n..........................................................................................................33‬مثال ‪ :5‬أوجد المقسومات على عدد‬
‫‪..............................................................................................................................................33‬حل‬

‫‪2‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‪.‬‬

‫مفهوم الخوارزمية‬ ‫‪.2.1‬‬


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

‫نهج وتحليل المشكلة‬ ‫‪.2.2‬‬


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

‫الدقةإلى برنامج‬ ‫ترجمةد‪ j‬نموذج‬


‫الخوارزمية‬ ‫تحدي‬

‫بتنفيذ‪ j‬البرنامج‪.‬‬ ‫كتابةالكمبيوتر‬


‫الخوارزمية‬ ‫يقوم‬

‫‪3‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫هياكل البيانات‬ ‫‪.2.3‬‬


‫تتيح الخوارزمية إجراء المعالجة على مجموعة من بيانات اإلدخال إلنتاج بيانات المخرجات‪ .‬تمثل بيانات اإلخراج الحل للمشكلة‬
‫التي تعالجها الخوارزمية‪.‬‬
‫يمكن تخطيط الخوارزمية على النحو التالي‪:‬‬

‫بيانات اإلخراج (النتائج)‬

‫جميع البيانات في البرنامج هي كائنات في ذاكرة الوصول العشوائي (هذا عنصر نائب في ذاكرة الوصول العشوائي)‪ .‬يتم تع‪jj‬يين‪j‬‬
‫كل كائن (مساحة الذاكرة) بواسطة ما يسمى االسم‪ :‬المعرف‪.‬‬

‫مفهوم المعرف‬ ‫‪.2.3.1‬‬


‫المعرف عبارة عن سلسلة تحتوي فقط على أحرف أبجدية رقمية(أبجدية من [‪ ]a-z‬و [‪ ]A-Z‬ورقمية [‪ )]9-0‬ومرس‪jj‬ومة ‪'_' 8‬‬
‫(خط تحته خط) ‪ ،‬والتي يجب أن تبدأ إما بحرف أبجدي أو _‪.‬‬
‫يستخدم المعرف لتحديد خوارزمية (أو برنامج) أو متغير أو ثابت أو إجراء أو وظيفة بشكل فريد‪.‬‬
‫في لغة برمجة معينة‪ ، j‬ال يسمح للمرء باستخدام الكلمات المحجوزة للغة (الكلمات الرئيسية) كمعرفات‪ .‬من بين الكلمات الرئيسية‬
‫للغة ‪:PASCAL‬‬
‫برنامج‪ ,‬تبدأ‪ ,‬نهاية‪ ,‬إذا‪ ,‬آخر‪ ,‬ثم‪ ,‬بينما‪ ,‬ل‪ ,‬افعل‪ ,‬إلى‪ ,‬أسفل‪ ,‬كرر‪ ,‬حتى‪ ,goto ,‬إجراء‪ ,‬وظيف ة‪ ,‬تس مية‪,var, const ,‬‬
‫نوع‪ ,‬استخدامات‪ ,‬صفيف‪ ,‬من‪ ,‬حقيقي‪ ,‬عدد صحيح‪ ,‬منطقي‪ ,‬شار‪ ,‬سلسلة‪... ,‬‬

‫امثله‪:‬‬
‫‪ :al‬هو معرف صالح‪ :a_l .‬هو معرف صالح‪A_1 .‬‬ ‫‪ :XL - Y‬هو معرف غير صالح‬
‫معرف صالح‪:.‬‬ ‫(بسبب ‪.)sign-‬‬
‫‪ :X12y‬هو معرف صالح ‪ :xl y ،‬هو معرف غير‬ ‫‪ :xl_y‬هو معرف صالح‪.‬‬
‫صالح (بسبب الفراغ أو المسافة)‪.‬‬ ‫‪ :lxy‬هو معرف غير صالح (يبدأ حرفا رقميا)‪.‬‬

‫الثوابت والمتغيرات‬ ‫‪.2.3.2‬‬


‫البيانات التي يتم التالعب بها بواسطة خوارزمية (أو برنامج) هي إما ثوابت أو متغيرات‪:‬‬
‫الثوابت‪ :‬الثابت هو كائن يحتوي على قيمة ال يمكن تغييرها أبدا‪ .‬الغرض منه هو تجنب استخدام القيمة بطريقة مباشرة‪.‬‬ ‫‪-‬‬
‫تخيل أن خوارزمية تستخدم القيمة ‪ 3.14‬عشرات المرات (عدد تكرارات القيمة ‪ 3.14‬هو على سبيل المث‪jj‬ال ‪ )15‬وأنن‪jj‬ا نري‪jj‬د تع‪jj‬ديل‬
‫هذه القيمة بقيمة أخرى أك‪j‬ثر دق‪j‬ة‪ .3.14159 :‬في ه‪j‬ذه الحال‪j‬ة ‪ ،‬يتعين علين‪j‬ا تع‪j‬ديل جمي‪j‬ع تك‪j‬رارات ‪ .3.14‬من ناحي‪j‬ة أخ‪j‬رى ‪ ،‬إذا‬

‫‪4‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫استخدمنا ثابت ‪ ، PI = 3.14‬فإننا نعدل هذا الثابت مرة واحدة فقط‪.‬‬


‫المتغيرات‪ :‬المتغير هو كائن يحتوي على قيمة يمكن تعديلها‪.‬‬ ‫‪-‬‬
‫تحتوي جميع البيانات (متغير أو ثابت) في خوارزمية على نوع بيانات (مجال القيم المحتملة)‪.‬‬

‫أنواع البيانات‬ ‫‪.2.3.3‬‬


‫في الخوارزميات ‪ ،‬لدينا خمسة أنواع أساسية‪:‬‬
‫األعداد الصحيحة‪ :‬تمثل المجموعة {‪}...,3.4 ,2 ,0.1 ,1- ,2- ,3- ,4- ,...‬‬ ‫—‬
‫حقيقي‪ :‬يمثل القيم الرقمية الكسرية وذات النقاط الثابتة (أو العائمة)‬ ‫—‬
‫األحرف‪ :‬تمثل جميع األحرف القابلة للطباعة‪.‬‬ ‫—‬
‫سالسل األحرف‪ :‬سلسلة من حرف واحد أو أكثر‬ ‫—‬
‫منطقي (منطقي)‪ :‬يمثل كال من ‪ TRUE‬و ‪.FALSE‬‬ ‫—‬
‫يوضح الجدول التالي المراسالت بين أنواع الخوارزميات وأنواع لغة برمجة ‪.PASCAL‬‬

‫الفصح‬ ‫خوارزمية‬
‫العدد الصحيح‬ ‫كامل‬
‫حقيقي‬ ‫حقيقي‬
‫منطقيه‬ ‫منطقيه‬
‫سيارة‬ ‫حرف‬
‫ثونغ‬ ‫صفد‬

‫أمثلة على إعالنات الثوابت والمتغيرات‪:‬‬


‫{ثابت حقيقي}‬ ‫كونست ‪ PI = 3.14‬؛‬
‫{شحنة اإللكترون}‬ ‫تهمة كونست = ‪ 1.6E-19‬؛‬
‫{كتلة اإللكترون}‬ ‫كتلة كونست = ‪ 0.9E-27‬؛‬

‫‪5‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬
‫رسالة ‪" = CONST‬مرحبا بالجميع" ؛ {ثابت سلسلة}‬

‫مالحظات‬

‫للتعليق على برنامج ‪ ، PASCAL‬نكتب التعليقات بين األقواس { }‪ .‬على سبيل المثال‪{ :‬هذا تعليق}‪.‬‬ ‫—‬
‫في برنامج ‪ ، PASCAL‬يتم اإلعالن عن الثوابت في حقل يبدأ بالكلمة األساسية ‪.const‬‬ ‫—‬
‫في برنامج ‪ ، PASCAL‬يتم اإلعالن عن المتغيرات في حقل يبدأ بالكلمة األساسية ‪.var‬‬ ‫—‬

‫هيكل خوارزمية ‪ /‬برنامج‬ ‫‪.2.4‬‬


‫تتعامل الخوارزمية مع البيانات ‪ ،‬ويجب تحديد البيانات قبل استخدامها واإلعالن عنها باستخدام المعرفات‪ .‬تتكون الخوارزمية من ثالث‪jj‬ة‬
‫أجزاء‪:‬‬
‫الرأس‪ :‬في هذا الجزء نعلن اسم الخوارزمية من خالل معرف‪.‬‬ ‫‪-‬‬
‫اإلعالنات‪ :‬في هذا الجزء نعلن جميع البيانات المستخدمة بواسطة الخوارزمية‪.‬‬ ‫‪-‬‬
‫الجسم‪ :‬يمثل تسلسل اإلجراءات (التعليمات)‬ ‫‪-‬‬
‫لكتابة خوارزمية ‪ ،‬يجب عليك اتباع البنية التالية‪:‬‬
‫برنامج البرنامج ؛‬ ‫الخوارزمية <‪>identificateur_algo‬‬
‫يستخدم ينكرت‪.‬‬ ‫<بيانات>‬
‫<اإلعالنات>؛‬ ‫بدء‬
‫بدأ‬
‫<التعليمات>;‬ ‫<الجسم>‬
‫انتهاء‪.‬‬ ‫انتهاء‪.‬‬

‫البيانات‬ ‫‪.2.4.1‬‬
‫في قسم التقارير ‪ ،‬يتم اإلبالغ عن جميع بيانات المدخالت والمخرجات كثوابت ومتغيرات‪.‬‬
‫— الثوابت‬

‫الثوابت هي كائنات تحتوي على قيم غير قابلة للتعديل‪ .‬يتم اإلعالن عن الثوابت على النحو التالي‪:‬‬
‫<المعرف> = <القيمة>;‬
‫امثله‪:‬‬

‫ثابت الفعلي‪.‬‬ ‫‪ PI = 3.14‬؛‬


‫ثابت عدد صحيح‪.‬‬ ‫ماكس = ‪ 10‬؛‬
‫شخصية ثابتة‪.‬‬ ‫سم ' أ ';‬
‫مكعب‬
‫‪" = SS‬الخوارزميات" ؛ ثابت سلسلة‪.‬‬
‫ثابت منطقي‪.‬‬ ‫صحيح;‬ ‫‪= BL‬‬

‫‪ = B2‬خطأ ؛ ثابت منطقي‪.‬‬


‫‪-‬المتغيرات‬

‫المتغيرات هي كائنات تحتوي على قيم يمكن تعديلها‪ .‬يتم اإلبالغ عن المتغيرات على النحو التالي‪:‬‬

‫‪6‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬
‫<المعرف>‪< :‬النوع>;‬
‫ينتمي المتغير إلى نوع بيانات‪ .‬هناك خمسة أنواع أساسية من البيانات‪:‬‬
‫كامل‬ ‫—‬
‫حقيقي‬ ‫—‬
‫االحرف‬ ‫—‬
‫سلسلة األحرف‬ ‫—‬
‫القيم المنطقية ‪ ،‬التي تحتوي على قيمتين‪ j:‬صواب أو خطأ ؛‬ ‫—‬
‫امثله‪:‬‬

‫المتغير الفعلي‪.‬‬ ‫‪ :x‬حقيقي‪.‬‬ ‫‪ :X‬حقيقي‬

‫متغيران صحيحان‪.‬‬ ‫ن ‪ ،‬م‪ :‬عدد صحيح ؛‬ ‫ن ‪ ،‬م‪ :‬عدد صحيح‬


‫متغيرات السلسلة‪.‬‬ ‫ق‪ :‬حلقة الشارع‪.‬‬ ‫ق ‪ :‬سلسلة‬
‫‪ :BL ، B2 ، B3‬منطقي ؛ ‪ 3‬المتغيرات المنطقية‪.‬‬ ‫‪ :BL ، B2 ، B3‬منطقي‬
‫متغير الحرف‪.‬‬ ‫‪ :cl‬دبابة‪.‬‬ ‫‪ : CL‬حرف‬
‫مالحظ‪jj‬ة‪ :‬باإلض‪jj‬افة إلى الث‪jj‬وابت والمتغ‪jj‬يرات‪ ،‬يمكن اإلعالن عن أن‪jj‬واع جدي‪jj‬دة من التس‪jj‬ميات ووظ‪jj‬ائف وإج‪jj‬راءات (في برن‪jj‬امج‬
‫‪.)PASCAL‬‬

‫‪ .2.4.2‬جسم‬
‫يتكون نص الخوارزمية من مجموعة من اإلجراءات ‪ /‬التعليمات المرتبة بالتتابع والمنطقي‪ .‬التعليمات من خمسة أنواع ‪ ،‬وهي‪:‬‬
‫قراءة ‪ :‬عملية إدخال البيانات إلى الخوارزمية‪ .‬تتكون القراءة من إعطاء قيمة تعسفية لمتغير‪.‬‬ ‫—‬

‫الكتابة ‪ :‬عملية عرض البيانات‪ .‬يتم استخدامه لعرض النتائج أو الرسائل‪.‬‬ ‫—‬

‫التعيين ‪ :‬يستخدم هذا لتعديل قيم المتغيرات‪.‬‬ ‫—‬


‫هيكل التحكم ‪ :‬يسمح بتعديل تسلسل الخوارزمية ‪ ،‬الختيار مسار تنفيذ أو تكرار عملية‪.‬‬ ‫—‬

‫‪ -‬هيكل اختبار بديل واحد ‪ /‬مزدوج‬

‫‪ -‬هيكل متكرر (تكراري)‬


‫للحلقة‬ ‫ال‬ ‫—‬
‫حلقه‬ ‫ال‬ ‫—‬
‫تكرار الحلقة‬ ‫ال‬ ‫—‬
‫في ‪ ، PASCAL‬تنتهي كل عبارة بفاصلة منقوطة‪ .‬ما لم يكن في نهاية البرنامج ‪ ،‬نضع فترة‪.‬‬

‫أنواع التعليمات‬ ‫‪.2.5‬‬


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

‫‪7‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫تعليمات اإلدخال ‪ /‬اإلخراج (قراءة ‪ /‬كتابة)‬ ‫‪.2.5.1‬‬

‫المدخالت (اقرأ)‬ ‫‪.2.5.1.1‬‬


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

‫معنى‬ ‫الفصح‬ ‫خوارزمية‬


‫أعط أي قيمة للمتغير الذي <‪ >id_var‬معرفه ‪.‬‬ ‫اقرأ (<‪ )>id_var‬؛‬ ‫قراءة(<‪)>id_var‬‬
‫)>‪;readln(<id_var‬‬
‫أعط قيما للمتغيرات <‪ ، >ivl> ، <iv2‬إلخ‪.‬‬ ‫اقرأ (‪;)... ,>siv1>, <iv2‬‬ ‫اقرأ (<‪;)... ,>ivl>, <iv2‬‬

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

‫امثله‪:‬‬

‫قراءة (ارتفاع) قراءة (ارتفاع) ؛‬ ‫يستعاض عن عبارة (أ‪ ،‬ب‪ ،‬ج) بعبارة (أ‪ ،‬ب‪ ،‬ج)؛‬

‫المخرجات (الكتابة)‬ ‫‪.2.5.1.2‬‬


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

‫معنى‬ ‫الفصح‬ ‫خوارزمية‬


‫| كتابة (<‪< | >id_var> | <id_const‬القيمة> ‪ ،‬عرض قيمة قيمة متغيرة أو ثابتة أو فورية أو قيم‪jj‬ة محس‪jj‬وبة‬ ‫قراءة(<‪>id_var‬‬
‫من خالل تعبير‪.‬‬ ‫<التعبير>) ؛‬ ‫<‪>id_const‬‬
‫<القيمة>‪< ،‬التعبير>) ‪| >Writeln(<id_var> | <id_const‬‬
‫<القيمة> ‪،‬‬
‫<التعبير>) ؛‬

‫تجدر اإلشارة إلى أن تعليمات الكتابة ال تتعلق فقط بالمتغيرات ‪ ،‬بل يمكننا كتابة الثوابت أو القيم أو التعبيرات (الحسابية أو المنطقية)‪.‬‬
‫يمكنك عرض قيمة وتخطي السطر مباشرة بعد العبارة‪.writeln :‬‬
‫امثله‪:‬‬

‫{إظهار رسالة مرحبا}‬ ‫اكتب ("مرحبا") ؛‬ ‫اكتب ('مرحبا')‬


‫اكتب (أ ‪ ،‬ب ‪ ،‬ج) ؛‬ ‫الكتابة (أ ‪ ،‬ب ‪ ،‬ج)‬
‫{إظهار قيم المتغيرات ‪ A‬و ‪ B‬و ‪}C‬‬
‫كتابة (‪ )2 + 5‬؛‬ ‫الكتابة(‪)2+5‬‬
‫{إظهار نتيجة مجموع ‪ 5‬و ‪ :2‬إظهار ‪}7‬‬
‫الكتابة (أ ‪ +‬ب ‪ -‬ج) ؛‬ ‫الكتابة (أ ‪ +‬ب ‪ -‬ج)‬
‫{إظهار نتيجة التعبير الحسابي‪}A + B-C :‬‬

‫‪8‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬
‫يكتب(‪;)2<5‬‬ ‫الكتابة(‪)2<5‬‬

‫{عرض نتيجة المقارنة ‪ ، 2 < 5‬النتيجة هي خطأ منطقي}‬


‫‪ )x‬اكتب ("قيمة ‪ )x x‬؛‬ ‫اكتب ('قيمة ‪x:‬‬

‫تعليمات التكليف‬ ‫‪.2.5.2‬‬


‫يتكون التعيين‪ j‬من إعطاء قيمة (فورية أو ثابتة أو متغيرة أو محسوبة من خالل تعبير) لمتغير‪ .‬بناء جملة المهمة هو‪:‬‬
‫<‪< id_varialbe> 4‬تعبير>|<‪<|>id_variable‬قيمة> <‪< =: >id_varialbe‬قيمة>|<‪<|>id_variable‬تعبير>‬

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

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

‫{تعيين‪ j‬القيمة ‪ 5‬في المتغير ‪}A‬‬ ‫أ‪;5 =:‬‬ ‫أ ‪45‬‬


‫{ضع قيمة التعبير ‪ A+5‬في المتغير ‪}B‬‬ ‫ب‪=:‬أ‪;5 +‬‬ ‫ب ‪-4‬أ ‪5 +‬‬
‫سوب ‪ 4‬أ>ب سوب‪=:‬أ>ب; { ‪ a>b‬يعطي نتيجة منطقية ‪ ،‬لذا فإن ‪ sup‬هو متغير منطقي}‬

‫هياكل التحكم‬ ‫‪.2.5.3‬‬


‫بشكل عام ‪ ،‬يتم تنفيذ تعليمات البرنامج بالتتابع‪ :‬التعليمات األولى ‪ ،‬ثم الثانية ‪ ،‬بعد الثالثة وهكذا‪ .‬ومع ذل‪jj‬ك ‪ ،‬في كث‪jj‬ير من الح‪jj‬االت ‪ ،‬يتم‬
‫توجيهنا إما إلى االختيار بين مسارين أو أكثر من مسارات التنفيذ (االختيار بين خيارين أو أكثر) ‪ ،‬أو لتكرار تنفيذ مجموعة من التعليمات ‪،‬‬
‫لذلك نحتاج إلى هياكل تحكم للتحكم في مسارات التنفيذ واختيارها أو إعادة العالج عدة مرات‪ .‬هياك‪jj‬ل التحكم هي من ن‪jj‬وعين‪ :‬هياك‪jj‬ل التحكم‬
‫المشروطة وهياكل التحكم المتكررة (التكرارية)‪.‬‬

‫هياكل المراقبة المشروطة‬ ‫‪.2.5.3.1‬‬


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

‫اختبار بديل بسيط‬ ‫‪.a‬‬


‫يحتوي االختبار البسيط على مجموعة واحدة من التعليمات‪ .‬وفقا لشرط (تعبير منطقي) ‪ ،‬يتم تحديد‪ j‬ما إذا كان يتم تنفيذ كتلة التعليمات أم‬
‫ال‪ .‬إذا كان الشرط صحيحا‪ ،‬فإن‬

‫إذا <الحالة> إذن‬


‫< التعليم‪jj‬ات (التعليم‪jj‬ات)‬
‫> ‪ finsi‬؛‬

‫كتلة ‪ ،‬وإال لم يتم تنفيذها‪ .‬بناء الجملة الختبار بديل بسيط هو كما يلي‪:‬‬
‫إذا <الشرط> إذن‬
‫بدأ‬
‫< التعليم‪jjj‬ات (التعليم‪jjj‬ات)‬
‫> ؛ انتهاء;‬
‫مثل‪:‬‬
‫اقرأ (‪ )x‬إذا كان ‪x > 2‬‬
‫ثم‬
‫×‪3+×4‬‬
‫فينسي‬
‫اكتب (س)‬
‫قراءة (‪ )x‬؛‬
‫إذا كان ‪ x > 2‬ثم ابدأ‬
‫س‪ = :‬س ‪ 3 +‬؛‬
‫انتهاء;‬
‫الكتابة (‪ )x‬؛‬

‫‪1‬‬
‫‪0‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬
‫كالم‪ :‬في ‪ ، PASCAL‬يتم تحديد‪ j‬الكتلة بواسطة الكلمتين الرئيسيتين‪ j‬البداية والنهاية‪.‬‬
‫إذا كانت الكتلة تحتوي على عبارة واحدة فقط ‪ ،‬فإن البداية والنهاية اختيارية (يمكن إزالتها)‪.‬‬

‫اختبار بديل مزدوج‬ ‫‪.b‬‬


‫يحتوي االختبار المزدوج على مجموعتين من التعليمات‪ :‬عليك أن تقرر بين الكتلة األولى أو الثاني‪jj‬ة‪ .‬يتم اتخ‪jj‬اذ ه‪jj‬ذا الق‪jj‬رار وفق‪jj‬ا لش‪jj‬رط‬
‫(تعبير منطقي أو منطقي) يمكن أن يكون صحيحا أو خاطئا‪ .‬إذا كان الشرط صحيحا ‪ ،‬فإننا ننفذ الكتلة األولى ‪ ،‬وإال فإننا ننفذ الثانية‪.‬‬
‫بناء الجملة الختبار بديل بسيط هو‪:‬‬
‫إذا <الشرط> إذن‬ ‫إذا <الحالة> إذن‬
‫بدأ‬ ‫< التعليمات (التعليمات)‪>1‬‬
‫< التعليمات (التعليمات)‪;>1‬‬ ‫خالف ذلك‬
‫انتهاء‬ ‫< التعليمات (التعليمات)‪>2‬‬
‫اخر‬ ‫فينسي‬
‫بدأ‬
‫< التعليمات (التعليمات)‪;>2‬‬
‫انتهاء;‬
‫مثل‪:‬‬
‫قراءة (‪ )x‬؛‬ ‫اقرأ (‪ )x‬إذا كان ‪ x > 2‬ثم‬
‫إذا كان ‪ x > 2‬ثم ابدأ‬ ‫×‪3+×4‬‬
‫س‪ = :‬س ‪+‬‬ ‫خالف ذلك‬
‫‪ 3‬؛ انتهاء‬ ‫×‪2-×4‬‬
‫اخر‬ ‫فينسي‬
‫بدأ‬ ‫اكتب (س)‬
‫س‪ = :‬س ‪ 2 -‬؛‬
‫انتهاء;‬
‫الكتابة (‪ )x‬؛‬
‫مالحظات‪:‬‬

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

‫اكتب خوارزمية (وبرنامج ‪ )PASCAL‬تسمح لك باإلشارة إلى ما إذا كان العدد الصحيح متساويا أم ال‪.‬‬ ‫‪.c‬‬

‫هياكل التحكم المتكررة‬ ‫‪.2.5.3.2‬‬


‫تسمح لنا الهياكل المتكررة بتكرار العالج لعدد محدود من المرات‪ .‬على سبيل المثال ‪ ،‬نريد عرض جميع األعداد األولي‪jj‬ة بين ‪ 1‬و ‪( N‬‬
‫‪ N‬معطى عددا صحيحا موجبا)‪ .‬لدينا ثالثة أنواع من الهياكل التكرارية (الحلقات)‪:‬‬

‫‪1‬‬
‫‪1‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬
‫حلقة ل‬ ‫‪.a‬‬
‫تستخدم بنية التحكم المتكررة ل ( ‪ )for in PASCAL‬عددا صحيحا منخفضا يختلف (مع زيادة = ‪ )1‬من قيمة أولية إلى قيمة نهائية‪.‬‬
‫في نهاية كل تكرار ‪ ،‬يتم زيادة الفهرس بمقدار ‪ 1‬تلقائيا (ضمنيا)‪.‬‬
‫بناء جملة الحلقة هو كما يلي‪:‬‬
‫بالنسبة لفهرس < >‪ > t <vi‬في <‪ > vf‬القيام به‬ ‫بالنسبة إلى <‪ >indice>: = <vi‬إلى <‪> vf‬‬
‫< التعليمات (التعليمات)>‬ ‫ابدأ‬
‫زعنفة‪.‬‬ ‫< التعليمات (التعليمات) > ؛‬
‫انتهاء;‬
‫<‪ :>index‬متغير عدد صحيح‬
‫<‪ :>vi‬القيمة األولية‬ ‫<‪ :>vf‬القيمة النهائية‬
‫تحتوي الحلقة على كتلة من التعليمات (التعليمات المراد تكرارها)‪ .‬إذا ك‪jj‬انت الكتل‪jj‬ة تحت‪jj‬وي على عب‪jj‬ارة واح‪jj‬دة ‪ ،‬ف‪jj‬إن البداي‪TT‬ة والنهاي‪TT‬ة‬
‫اختيارية‪.‬‬
‫سيتم تكرار الكتلة عدة مرات = (<‪ )vf> - <vi> + 1‬إذا كانت القيمة النهائية أكبر من أو تس‪j‬اوي القيم‪jj‬ة األولي‪jj‬ة‪ .‬س‪jj‬يتم تنفي‪j‬ذ الكتل‪j‬ة‬
‫لفهرس <> = <‪ ، >vi‬لمؤشر < > = <‪ ، vi> + l‬لمؤشر < > = <‪ ,...,vi> + 2‬لفهرس < > = <‪.>vf‬‬
‫ال تضع أبدا فاصلة منقوطة بعد الكلمة الرئيسية ‪( .‬خطأ منطقي)‬

‫بينما حلقة‬ ‫‪.c‬‬


‫بينم‪jj‬ا تس‪jj‬تخدم بني‪jj‬ة التحكم تعب‪jj‬يرا منطقي‪jj‬ا أو منطقي‪jj‬ا كش‪jj‬رط للوص‪jj‬ول إلى الحلق‪jj‬ة‪ :‬إذا تم التحق‪jj‬ق من الش‪jj‬رط (يعطي نتيج‪jj‬ة حقيقي‪jj‬ة‪:‬‬
‫‪ ، )TRUE‬فإننا ندخل الحلقة ‪ ،‬وإال نتركها‪.‬‬
‫بناء جملة حلقة ‪ tant-que‬هو كما يلي‪:‬‬
‫بينما <الشرط> تفعل‬ ‫طالما <الشرط> تفعل ذلك‬
‫بدأ‬ ‫< التعليمات (التعليمات)>‬
‫< التعليمات (التعليمات) > ؛‬ ‫‪;EndTant-que‬‬
‫انتهاء;‬
‫<الشرط>‪ :‬تعبير منطقي يمكن أن يكون صحيحا أو خاطئا‪.‬‬
‫يتم تنفيذ كتلة التعليمات طالما أن الشرط صحيح‪ .‬بمجرد أن يكون الشرط خاطئا ‪ ،‬نوقف الحلقة ‪ ،‬ونواصل تنفي‪jj‬ذ العب‪jj‬ارة ال‪jj‬تي ت‪jj‬أتي بع‪jj‬د‬
‫النهاية طالما (بعد النهاية)‪.‬‬
‫مثل حلقة ‪ ، for‬يجب أال تضع فاصلة منقوطة بعد القيام بذلك‪.‬‬
‫يمكن استبدال أي حلقة بحلقة طالما أن العكس غير ممكن دائما‪.‬‬
‫تكرار الحلقة‬ ‫‪.d‬‬
‫تستخدم بنية التحكم المتكررة تعبيرا منطقيا أو منطقيا كشرط خروج الحلق‪jj‬ة‪ :‬إذا تم التحق‪j‬ق من الش‪jj‬رط (يعطي نتيج‪jj‬ة حقيقي‪jj‬ة‪)TRUE :‬‬
‫نخرج من الحلقة ‪ ،‬وإال فإننا نصل إليه (نكرر تنفيذ الكتلة)‪.‬‬
‫بناء جملة حلقة التكرار كما يلي‪:‬‬
‫كرر‬ ‫كرر‬
‫< التعليمات (التعليمات) > ؛‬ ‫< التعليمات (التعليمات)>‬
‫حتى <الشرط> ؛‬ ‫حتى <الحالة> ؛‬

‫<الشرط>‪ :‬تعبير منطقي يمكن أن يكون صحيحا أو خاطئا‪.‬‬


‫يتم تنفيذ كتلة التعليمات حتى يكون لديك الشرط الصحيح‪ .‬بمجرد التحقق من الشرط ‪ ،‬نوقف الحلقة ‪ ،‬ونواصل تنفيذ التعليمات التي ت‪jj‬أتي‬

‫‪1‬‬
‫‪2‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬
‫بعد (بعد حتى)‪ .‬في حلقة التكرار ‪ ،‬نستخدم ال نبدأ وننتهي لتحديد كتلة التعليمات (الكتلة محددة بالفعل بالتكرار وحتى)‪.‬‬
‫الفرق بين حلقة التكرار وحلقة ‪ tant‬هو‪:‬‬
‫شرط التكرار ودائما عكس الشرط طالما‪ :‬تكراره هو شرط الخروج من الحلقة ‪ ،‬وطالما أنه شرط الدخول ‪.‬‬ ‫‪-‬‬
‫اختبار الشرط في نهاية الحلقة (نهاية التكرار) للتكرار‪ .‬من ناحية أخرى ‪ ،‬يكون في بداية التك‪jj‬رار للحلق‪jj‬ة بنفس الق‪TT‬در‪ .‬أي طالم‪TT‬ا‬ ‫‪-‬‬
‫أننا نختبر الشرط قبل الدخول في التكرار ‪ ،‬وفي التكرار نكرر بعد اختبار الشرط‪.‬‬

‫هيكل التحكم في الفرع ‪ /‬القفزة (تعليمات ‪)Goto‬‬ ‫‪.2.5.3.3‬‬


‫تسمح لنا التعليمات المتفرعة بالقفز إلى مكان في البرنامج ومواصلة الج‪j‬ري من هن‪j‬اك‪ .‬إلج‪j‬راء اتص‪j‬ال ‪ ،‬يجب علي‪j‬ك أوال اإلش‪j‬ارة إلى‬
‫هدف االتصال عبر تسمية <‪ . :>num_etiq‬ثم ننتقل إلى ه‪jj‬ذا المك‪jj‬ان من خالل التعليم‪jj‬ات ال‪jj‬تي ت‪jj‬ذهب إلى <‪( >num_etiq‬في باس‪jj‬كال‪:‬‬
‫‪.)>goto <num_etiq‬‬
‫بناء جملة الفرع كما يلي‪:‬‬
‫اذهب إلى <‪;>num_etiq‬‬ ‫اذهب إلى <‪>num_etiq‬‬

‫‪. :><num_etiq‬‬ ‫<‪num_etiq>: .‬‬

‫‪1‬‬
‫‪3‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬
‫مالحظة‪:‬‬
‫‪ -‬تمثل التسمية رقما (عددا صحيحا) ‪ ،‬مثال‪ ، 3 ، 2 ، 1 :‬إلخ‪.‬‬
‫‪ -‬في برنامج ‪ ، PASCAL‬يجب علي‪jj‬ك اإلعالن عن التس‪jj‬ميات في ج‪jj‬زء اإلعالن باس‪jj‬تخدام الكلم‪jj‬ة األساس‪jj‬ية للتس‪jj‬مية ‪( ،‬رأين‪jj‬ا ‪const‬‬
‫لثوابت ‪ var‬للمتغيرات)‬
‫‪ -‬تحدد التسمية مكانا واحدا في البرنامج ‪ ،‬وال يمكننا أبدا اإلشارة إلى مكانين بنفس التسمية‪.‬‬
‫‪ -‬من ناحية أخرى ‪ ،‬يمكنك إجراء عدة اتصاالت لنفس الملصق‪.‬‬
‫‪ -‬يمكن أن تكون القفزة أو الفرع إلى تعليمات سابقة أو الحقة (قبل أو بعد القفزة)‪.‬‬
‫مثل‪:‬‬
‫خوارزمية المتغيرات المتفرعة‬ ‫فرع البرنامج ؛‬
‫أ ‪ ،‬ب ‪ ،‬ج‪ :‬عدد صحيح ؛‬ ‫يستخدم ينكرت‪.‬‬
‫بدء‬ ‫فار‬
‫يستعاض عن عبارة (أ‪ ،‬ب)؛‬ ‫أ ‪ ،‬ب ‪ ،‬ج‪ :‬عدد صحيح ؛‬
‫ج‪4‬أ؛‬ ‫‪:2‬‬ ‫التسمية ‪ 2 ، 1‬؛‬
‫بدأ‬
‫إذا (أ > ب) فانتقل إلى ‪ 1‬؛‬ ‫يستعاض عن الفقرة (أ‪،‬‬
‫فينسي‬ ‫ب)؛‬
‫أ‪4‬أ‪5+‬؛‬ ‫‪ :2‬ج‪=:‬أ;‬
‫انتقل إلى ‪ 2‬؛‬
‫إذا كانت (أ>ب) ثم انتقل‬
‫اكتب (ج) ؛‬ ‫‪:1‬‬ ‫إلى ‪ 1‬؛‬
‫انتهاء‬ ‫‪ =:‬أ ‪;5 +‬‬ ‫‪:3‬‬
‫اذهب إلى ‪ 2‬؛‬
‫‪ :1‬الكتابة (ج) ؛‬
‫انتهاء‪.‬‬
‫عالمتان‪ 1 :‬و ‪ .2‬تش‪jj‬ير التس‪jj‬مية ‪ 1‬إلى التعليم‪jj‬ات األخ‪jj‬يرة للخوارزمي‪jj‬ة ‪ /‬البرن‪jj‬امج ()‪،));write(c)/write(c‬‬ ‫في المثال أعاله ‪ ،‬هناك‬
‫وتشير التسمية ‪ 2‬إلى التعليمات الثالثة للخوارزمية‪/‬البرنامج ( ‪c 4 a‬؛ ‪ .) ; c:=a/‬بالنسبة لعملية الخوارزمية ‪ ،‬يتم استخدام الجدول التالي (‬
‫‪ a = 2‬و ‪:)b = 5‬‬

‫‪c‬‬ ‫‪b‬‬ ‫قد‬ ‫بيانات‪ j‬المتغيرات‪j‬‬

‫يستعاض عن عبارة (أ‪،‬‬


‫ب) أعط أي قيمتين ل ‪a‬‬
‫?‬ ‫‪5‬‬ ‫‪2‬‬ ‫و‪b‬‬

‫‪1‬‬
‫‪4‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫‪2‬‬ ‫‪5‬‬ ‫‪2‬‬ ‫ج‪4‬أ؛‬

‫أ > ب ‪ -‬خطأ بما أن أ‬


‫‪2‬‬ ‫‪5‬‬ ‫‪7‬‬ ‫= ‪2‬وب= ‪5‬‬
‫نحن ال ندخل‬
‫كتلة ‪SI‬‬
‫أ‪4‬أ‪5 +‬؛‬

‫‪7‬‬ ‫‪5‬‬ ‫‪7‬‬


‫انتقل إلى ‪ 2‬ج ‪ 4‬أ ؛‬

‫‪7‬‬ ‫أ > ب ‪ -‬صحيح بما أن‬


‫‪5‬‬ ‫‪7‬‬ ‫أ=‪7‬وب= ‪5‬‬
‫(النتيجة المعروضة)‬
‫ندخل كتلة ‪SI‬‬
‫انتقل إلى ‪ >= 1‬اكتب‬
‫( ج)‬

‫هناك نوعان من االتصاالت‪:‬‬


‫التفرع غير المشروط‪ :‬إنه اتصال غير مشروط ‪ ،‬وال ينتمي إلى كتلة من ‪ si‬أو كتلة أخرى‪ .‬في المثال السابق ‪ ،‬عبارة‬ ‫‪.a‬‬
‫‪ goto 2‬هي قفزة غير مشروطة‪.‬‬
‫التفرع الشرطي‪ :‬من ناحية أخرى ‪ ،‬فإن التفرع الشرطي هو قفزة تنتمي إلى كتلة إذا كانت أو كتلة بخالف ذلك‪ .‬العبارة ‪go‬‬ ‫‪.b‬‬
‫)‪ ، to 1 (goto 1‬في المثال السابق هي قفزة شرطية ألنها تنتمي إلى الكتلة ‪.si‬‬

‫تطابق خوارزمية باسكال < >‬ ‫‪.2.6‬‬


‫لترجمة خوارزمية إلى برنامج ‪ ، PASCAL‬يتم استخدام جدول الملخص التالي لترجمة كل بنية نحوية لخوارزمية إلى بنية‬
‫‪ PASCAL‬النحوية‪.‬‬

‫باسكال المفردات ‪ /‬بناء الجملة‬ ‫المفردات ‪ /‬بناء الجملة الخوارزمي‬


‫برنامج‬ ‫خوارزمية‬
‫كونست‬ ‫ثابت‬
‫نوع‬ ‫نوع‬
‫فار‬ ‫فارابلز‬
‫تسميه‬ ‫تسميه‬
‫العدد‪ j‬الصحيح‬ ‫كامل‬
‫حقيقي‬ ‫حقيقي‬
‫سيارة‬ ‫حرف‬
‫منطقيه‬ ‫منطقيه‬
‫ثونغ‬ ‫االحرف‬ ‫سلسلة من‬

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

‫مالحظات هامة‬

‫لغة باسكال غير حساسة لحالة األحرف ‪ ،‬أي إذا كتبنا ابدأ أو ابدأ أو ابدأ فهو نفس الشيء‪.‬‬ ‫‪.1‬‬
‫عندما يكون اإلجراء بعد ‪ THEN‬أو ‪ ELSE‬أو ‪ DO‬يحت‪jj‬وي على ع‪jj‬دة عب‪jj‬ارات ‪ ،‬يجب ت‪jj‬أطير ه‪jj‬ذه العب‪jj‬ارات بين ‪ BEGIN‬و‬ ‫‪.2‬‬
‫‪ .END‬بمعنى آخ‪j‬ر ‪ ،‬يتم تعريفه‪j‬ا على أنه‪j‬ا كتل‪jj‬ة‪ .‬بالنس‪j‬بة لتعليم‪j‬ات واح‪jj‬دة ‪ ،‬ليس من الض‪j‬روري (أو إل‪jj‬زامي) تأطيره‪j‬ا بين ‪ BEGIN‬و‬
‫‪( END‬انظر العمل العملي)‪ .‬مجموعة من العبارات الم‪jj‬ؤطرة بين ‪ BEGIN‬و ‪ ، END‬تس‪jj‬مى ‪ BLOCK‬أو اإلج‪jj‬راء الم‪jj‬ركب‪ .‬يق‪jj‬ال أن‬
‫برنامج ‪ PASCAL‬منظم في كتل‪.‬‬
‫يحظر ركوب هيكلين من الحلقات أو الكتل‪ .‬مثل ماذا‪:‬‬ ‫‪.3‬‬
‫من أجل ‪ .....................‬فعل‬
‫—ابدأ‬

‫بينما ‪ ..........................‬فعل‬
‫—ابدأ‬

‫‪-‬انتهاء;‬

‫انتهاء;‬
‫كان لدينا النموذج التالي‪:‬‬

‫حلقة أو كتلة ‪1‬‬


‫(الكرة من أجل)‬
‫حلقة أو كتلة ‪2‬‬
‫(بينما الكرة)‬

‫ما هو محظور‪.‬‬
‫يجب أال تتداخل الحلقات والكتل تحت أي ظرف من الظروف ‪ ،‬ويجب أن تكون متداخلة‪.‬‬
‫أمثلة على الهياكل المعتمدة‪:‬‬

‫مثال على كتلتين‬

‫‪1‬‬
‫‪6‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬
‫مثال على ست كتل‬

‫تمثيل الهيكل التنظيمي‬ ‫‪.2.7‬‬


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

‫رموز المخطط الهيكلي‬ ‫‪.2.7.1‬‬


‫الرموز المستخدمة في المخططات االنسيابية‪:‬‬

‫‪C‬‬ ‫يمثل بداية ونهاية المخطط الهيكلي‬

‫‪1‬‬
‫‪7‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫‪.LMP / S.T‬‬

‫المدخالت ‪ /‬المخرجات‪ :‬قراءة البيانات وكتابة النتائج‪.‬‬ ‫____‪/‬‬


‫الحسابات والعالجات‬

‫االختبارات والقرار‪ :‬االختبار مكتوب داخل الماس‬


‫<‬
‫ترتيب تنفيذ العمليات (التسلسل)‬
‫‪•---‬‬
‫موصل‬
‫()‬
‫تمثيل األوليات الخوارزمية‬ ‫‪.2.7.2‬‬

‫التسلسل‬ ‫‪.2.7.2.1‬‬
‫من اإلجراءات ‪ ،‬يتم تمثيل‬ ‫سلسلة‬ ‫يتيح التسلسل تنفيذ سلسلة من اإلجراءات بالترتيب الذي تظهر به‪ .‬دع ‪Ai ، A 2 ، ... ، An‬‬
‫تسلسلها على النحو التالي‪:‬‬
‫لي;‬

‫أ‪2‬؛‬

‫سنة;‬

‫‪ :Al, A2, ...,An‬يمكن أن تكون إجراءات أولية أو معقدة‪.‬‬

‫الهيكل البديل البسيط‬ ‫‪.2.7.2.2‬‬


‫التمثيل في شكل مخطط تنظيمي‬ ‫التمثيل الخوارزمي إذا <الشرط> ثم‬
‫<اإلجراء (اإلجراءات)> ؛‬
‫فينسي‪.‬‬

‫إذا كان الشرط صحيحا ‪ ،‬تنفيذ الكتلة < اإلجراء‬


‫(اإلجراءات) > ‪ ،‬وإال فلن يتم تنفيذ أي شيء ‪ ،‬ويستمر‬
‫تنفيذ البيان بعد االنتهاء إذا‪.‬‬

‫الشروط المستخدمة الختبارها (مفردة أو مزدوج‪jj‬ة)‬


‫هي تعبيرات منطقية أو منطقية ‪ ،‬أي التعبيرات التي يعطي تقييمها إما ‪ TRUE‬أو‬

‫‪1‬‬
‫‪8‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫‪.LMP / S.T‬‬

‫‪ .FALSE‬أي مقارنة بين رقمين تمثل تعبيرا منطقي‪jj‬ا‪ .‬يمكن تك‪jj‬وين التعب‪jj‬يرات المنطقي‪jj‬ة من التعب‪jj‬يرات المنطقي‪jj‬ة األخ‪jj‬رى باس‪jj‬تخدام‬
‫عوامل التشغيل التالية‪. Not, Or, and and and :‬‬
‫امثله‪:‬‬

‫(‪ :)x > = 5‬هو تعبير منطقي ‪ ،‬يكون صحيحا إذا كانت قيمة ‪ x‬أكبر من أو تساوي ‪ .5‬من الخطأ خالف ذلك‪.‬‬
‫ليس (‪ .E.L :)x > = 5‬وهو صحيح فقط إذا كانت قيمة ‪ x‬أقل من ‪.5‬‬
‫(س > = ‪ )5‬و (‪ .E.L :)y< = 0‬وهو صحيح إذا كانت ‪ x‬أكبر من أو تساوي ‪ 5‬و ‪ y‬أقل من أو تساوي ‪.0‬‬

‫الهيكل البديل المزدوج‬ ‫‪.2.7.2.3‬‬


‫التمثيل في شكل مخطط تنظيمي‬ ‫التمثيل الخوارزمي إذا كان <الشرط> ثم‬
‫<اإلجراء (اإلجراءات)> ؛ خالف ذلك‬
‫<اإلجراء ‪( 2‬ق)> ؛‬
‫فينسي‪.‬‬

‫إذا ك‪jj‬ان الش‪jj‬رط ص‪jj‬حيحا ‪ ،‬تنفي‪jj‬ذ الكتل‪jj‬ة < ‪actionl‬‬


‫)‪ ، >(s‬وإال (إذا ك‪jjjj‬انت خاطئ‪jjjj‬ة) نق‪jjjj‬وم بتنفي‪jjjj‬ذ‪< j‬‬
‫)‪.>action2 (s‬‬

‫‪ .2.7.2A‬الهيكل التكراري ل (حلقة ‪)FOR‬‬


‫التمثيل في شكل مخطط تنظيمي‬ ‫التمثيل الخوارزمي‬
‫بالنسبة إلى <‪ >CPT> 4 <vi‬إلى <‪ >vf‬قم بإجراء‬
‫(إجراءات) < > ؛‬
‫نعم أ‬ ‫فينفور‪.‬‬
‫<'<‪CPT> < = <VI‬‬

‫اإلجراء (اإلجراءات)‬
‫‪v‬‬ ‫ال‬

‫<‪;CPT> 4 <CPT> + 1‬‬

‫استمرار الهيكل التنظيمي‬

‫في حلقة ‪ ، FOR‬نقوم بتنفيذ الكتلة < )‪ acidons > (<vf> - <vi> + 1‬مرات‪ .‬هذا في حالة أن‬
‫< ‪ >vf‬أكبر من أو يساوي < ‪ .>vi‬خالف ذلك ‪ ،‬لن يتم تنفيذ كتلة اإلجراءات‪ .‬يتم التعبير عن تسلسل حلقة ‪ FOR‬على النحو التالي‪:‬‬
‫‪ -‬المتغير الصحيح < ‪( > CPT‬العداد) يأخذ القيمة األولية < ‪ >vi‬؛‬ ‫‪1‬‬
‫‪ -‬نقارن قيمة <‪ >CPT‬بقيمة <‪ ، - >vf‬إذا كانت < ‪ >CPT‬أكبر من < ‪ ، >vf‬فإننا نترك الحلقة ؛‬ ‫‪2‬‬
‫‪ -‬إذا كان < ‪ > CPT‬أقل من أو يساوي < ‪ > vf‬فإننا ننفذ الكتلة < إجراء (إجراءات) > ؛‬ ‫‪3‬‬
‫‪ -‬تزيد حلقة ‪ FOR‬تلقائيا العداد <‪ ، >cpt‬أي أنها تضيف (<‪ )cpt> 4 <cpt> + 1‬؛‬ ‫‪4‬‬
‫‪ -‬نعود إلى ‪( 2‬إلعادة االختبار < ‪ >cpt> <= <vi‬لهذا السبب نقول الحلقة) ؛‬ ‫‪5‬‬

‫‪1‬‬
‫‪9‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫‪.LMP / S.T‬‬

‫كالم‪:‬‬

‫غالبا ما تستخدم حلقة ‪ FOR‬لهياكل البيانات التكرارية (الجداول والمصفوفات ‪ -‬متغيرات المؤشر)‪.‬‬
‫الهيكل التكراري كمسألة‬ ‫‪.2.7.2.5‬‬

‫يتم تنفيذ كتلة البيانات < اإلجراءات > طالما تم التحقق من <الشرط> (أي أنه صحيح)‪ .‬مسار الحلقة هو كما يلي‪:‬‬
‫‪ -‬نقوم بتقييم الحالة‪ :‬إذا كانت الحالة خاطئة ‪ ،‬فإننا نخرج من الحلقة ؛‬ ‫‪1‬‬
‫‪ -‬إذا كان الشرط صحيحا ‪ ،‬فإننا ننفذ إجراءات الكتلة < > ؛ خالف ذلك يذهب إلى ‪.4‬‬ ‫‪2‬‬
‫‪ -‬نعود إلى ‪ 1‬؛‬ ‫‪3‬‬
‫‪ -‬نواصل بقية الخوارزمية‬ ‫‪4‬‬
‫‪ .2.7.2.6‬تكرار البنية التكرارية (تكرار الحلقة)‬

‫نكرر تنفيذ الكتلة < إجراء (إجراءات) > حتى نحصل على الحالة الصحيحة‪ .‬اإلجراء كالتالي‪:‬‬
‫‪ -‬نقوم بتنفيذ الكتلة < إجراء (إجراءات) > ؛‬ ‫‪1‬‬
‫‪ -‬نقوم بتقييم الشرط‪ :‬إذا تم التحقق من الشرط (هذا صحيح) نترك الحلقة (نواصل بقية الخوارزمية) ؛‬ ‫‪2‬‬
‫‪ -‬إذا لم يتم التحقق من الحالة (خاطئة) نعود إلى ‪.1‬‬ ‫‪3‬‬
‫مالحظات‪:‬‬
‫يمكن استبدال أي حلق‪jj‬ة ‪ FOR‬بحلق‪jj‬ة ‪ ، Tant-Que‬ولكن العكس ليس ص‪jj‬حيحا دائم‪jj‬ا ‪ ،‬أي أن هن‪jj‬اك ح‪jj‬االت ال يمكن فيه‪jj‬ا‬ ‫✓‬

‫‪2‬‬
‫‪0‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫‪.LMP / S.T‬‬

‫استبدال حلقة ‪ Tant-Que‬بحلقة ‪.FOR‬‬


‫نقوم بتحويل حلقة ل إلى حلقة ‪ Tant-Que‬على النحو التالي‪:‬‬ ‫✓‬

‫تحتوي حلقة التكرار على شرط إخراج (أي إذا كان صحيحا ‪ ،‬فإننا نخرج من الحلقة) ‪ ،‬بينما تحتوي حلقة ‪ Tant-que‬على‬ ‫✓‬
‫شرط إدخال (أي إذا كان صحيحا ‪ ،‬فإننا ندخل الحلقة)‪.‬‬
‫تقوم حلقة التكرار بتنفيذ‪ j‬الكتلة < إجراء (إجراءات) > مرة واحدة على األقل ‪ ،‬يأتي االختبار بعد تنفيذ الكتلة‪.‬‬ ‫✓‬
‫قد ال تقوم حلقة ‪ Tant-Que‬بتنفيذ الكتل‪j‬ة < إج‪j‬راء (إج‪j‬راءات) > (في حال‪j‬ة ك‪j‬ون الش‪j‬رط خاطئ‪j‬ا من البداي‪j‬ة) ‪ ،‬نظ‪j‬را ألن‬ ‫✓‬
‫االختبار يكون قبل تشغيل الكتلة‪.‬‬

‫المشغلون‬ ‫‪.2.8‬‬
‫يسمح لنا المشغلون في الخوارزميات (أو البرمجة) بكتابة التعبيرات التي سيتم تقييمها بواسطة الكمبيوتر‪ .‬يتم تع‪j‬يين‪ j‬قيم‪j‬ة التعب‪j‬ير‬
‫إلى متغير أو عرضها أو استخدامها في اختبار‪ .‬هناك ثالثة أنواع من المشغلين‪ :‬العوامل الحسابية ‪ ،‬والعوام‪jj‬ل العالئقي‪jj‬ة (المقارن‪jj‬ة) ‪،‬‬
‫والعوامل المنطقية‪.‬‬

‫عوامل التشغيل الحسابية‬ ‫‪.2.8.1‬‬


‫نحن نميز العوامل الحسابية التالية‪:‬‬
‫(إضافة)‬ ‫‪+‬‬
‫(طرح) ‪( -‬أحادي)‬
‫(الضرب)‬ ‫*‬
‫(الشعبة)‬ ‫‪/‬‬
‫يوفر الجزء الصحيح من القسمة)‬ ‫(التقسيم بأكمله ‪،‬‬ ‫شعبه‬
‫شعبة)‬ ‫(مودولو أو بقية‬ ‫وزاره الدفاع‬
‫يمكن تطبيق عوامل التشغيل (‪ )* ، - ، +‬على عدد صحيح أو معامالت حقيقية‪.‬‬
‫إذا كان كال المعاملين من النوع الصحيح ‪ ،‬فإن النتيجة هي من النوع الصحيح‪ .‬اما‪:‬‬
‫عدد صحيح ‪ +‬عدد صحيح = عدد صحيح‬
‫عدد صحيح ‪ -‬عدد صحيح = عدد صحيح‬

‫‪2‬‬
‫‪1‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫‪.LMP / S.T‬‬

‫عدد صحيح * عدد صحيح = عدد صحيح‬

‫ينطبق أقل أحادي على معامل واحد‪ .‬على سبيل المثال ‪ ،‬الرقم السالب‪5 - :‬‬
‫في حالة المشغل ‪ /‬تكون النتيجة حقيقية مهما كان نوع المعاملين‪ .‬دع‪ :‬عدد صحيح ‪ /‬عدد صحيح = حقيقي‪.‬‬
‫في حالة مشغلي ‪ DIV‬و ‪ ، MOD‬يجب أن تكون العوامل أعدادا صحيحة والنتيجة هي عدد صحيح‪.‬‬
‫عدد صحيح ‪ = DIV‬عدد صحيح‬
‫عدد صحيح ‪ MOD‬عدد صحيح = عدد صحيح‬

‫‪2‬‬
‫‪2‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫‪ !LMP‬س‪ .‬ت‪.‬‬

‫العوامل العالئقية‬ ‫‪.2.8.2‬‬


‫يتم تمييز مشغلي العالقات التاليين‪:‬‬
‫= (يساوي) ‪( >< ،‬مختلف) ‪( < ،‬أقل) ‪( > ،‬أعلى) ‪( = < ،‬أقل أو يساوي) ‪،‬‬
‫>= (أكبر من أو يساوي)‬
‫عند تطبيقها على المعامالت ‪ ،‬فإنها توفر نتيجة منطقية‪ .‬اما‪:‬‬
‫‪ 5 = 12‬يوفر النتيجة (خطأ) أو (خطأ) باللغة اإلنجليزية‬
‫يوفر النتيجة (صواب) أو (صواب) باللغة اإلنجليزية‬ ‫‪12 = 12‬‬
‫يوفر النتيجة (صواب)‬ ‫‪49 < 45‬‬
‫الخ‪.‬‬
‫بشكل عام ‪ ،‬يتم استخدام العوامل العالئقية في اختبارات حالة الحلقات على حد سواء وتكرار‪.‬‬

‫العوامل المنطقية‬ ‫‪.2.8.3‬‬


‫يتم تمييز العوامل المنطقية التالية‪ AND :‬و ‪ OR‬و ‪.NOT‬‬
‫ينطبق على المعامالت المنطقية ‪ ،‬وي‪jj‬وفر قيم‪jj‬ة منطقي‪jj‬ة (منطقي‪jj‬ة)‪ .‬عوام‪jj‬ل التش‪jj‬غيل ‪ AND‬و ‪ OR‬هي عوام‪jj‬ل ثنائي‪jj‬ة ‪ ،‬أي أنه‪jj‬ا‬
‫تنطبق على معاملين‪.‬‬
‫على سبيل المثال ‪ ،‬نكتب‪ :‬المعامل ‪ 1‬والمعامل ‪2‬‬
‫عامل التشغيل ‪ NOT‬هو عامل أحادي ‪ ،‬أي أنه ينطبق على معامل واحد‪ .‬أو‪ :‬ليس معامال‪.‬‬
‫مثل‪:‬‬

‫(‪ )59 > 45‬و (‪ - )15 = 15‬خطأ وصحيح ‪ -‬النتيجة‪ :‬خطأ (خطأ)‬
‫(‪ - OR (47 < 50) )45 > 25‬خطأ أو صواب ‪ -‬النتيجة‪ :‬صحيح‬
‫‪( NOT (25 > 45) - NOT‬خطأ) ‪ -‬النتيجة‪TRUE :‬‬

‫أوبل و ‪Op2‬‬ ‫معامل ‪2‬‬ ‫‪Operandel‬‬


‫صحيح‬ ‫صحيح‬ ‫صحيح‬

‫خطأ‬ ‫خطأ‬ ‫صحيح‬


‫خطأ‬ ‫صحيح‬ ‫خطأ‬
‫خطأ‬ ‫خطأ‬ ‫خطأ‬

‫تلخص الجداول التالية استخدام هذه المشغالت‪:‬‬


‫أوبل أو أوب ‪2‬‬ ‫معامل ‪2‬‬ ‫‪Operandel‬‬ ‫ليس المعامل‬ ‫المعامل‬
‫صحيح‬ ‫صحيح‬ ‫صحيح‬ ‫خطأ‬ ‫صحيح‬

‫صحيح‬ ‫خطأ‬ ‫صحيح‬ ‫صحيح‬ ‫خطأ‬


‫صحيح‬ ‫صحيح‬ ‫خطأ‬
‫خطأ‬ ‫خطأ‬ ‫خطأ‬
‫صحيح ‪ :‬فراي‬

‫‪2‬‬
‫‪3‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫ل‪.‬م‪.‬ب‪/‬س‪T .‬‬

‫خطأ‪ :‬خطأ‬
‫وظائف‬ ‫‪.2.8.4‬‬
‫في الوقت الحالي ‪ ،‬سنقتصر على الوظائف القياسية (أو المحددة مسبقا)‪.‬‬
‫الدوال القياسية المطبقة على األعداد الصحيحة أو الحقيقية‬

‫عادت النتيجة‬ ‫المكالمة مع المعلمة‬ ‫دالة‬


‫إرجاع القيمة المطلقة لرقم ‪x‬‬ ‫‪( ABS‬س)‬ ‫القيمه المطلقه‬

‫إرجاع األس لرقم ‪x‬‬ ‫إكسب(س)‬ ‫اكسب‬


‫إرجاع اللوغاريتم الطبيعي لعدد ‪x‬‬ ‫)‪LN(s‬‬ ‫‪LN‬‬
‫إرجاع لوغاريتم األساس ‪ 10‬لرقم ‪x‬‬ ‫السجل (السجالت)‬ ‫‪LOG ..‬‬
‫إرجاع الجذر التربيعي لرقم ‪x‬‬ ‫متر مربع (س)‬ ‫سقرت‬
‫إرجاع مربع الرقم ‪x‬‬ ‫)‪SQR (x‬‬ ‫سقر‬
‫يقلب ظل القوس لعدد ‪x‬‬ ‫أركتان (ق)‬ ‫أركتان‬
‫إرجاع جيب تمام عدد ‪x‬‬ ‫كوس (س)‬ ‫كوس‬

‫إرجاع جيب الزاوية لعدد‪x j‬‬ ‫الخطيئة (الخطايا)‬ ‫جرم‬


‫إرجاع القيمة المقربة لرقم ‪x‬‬ ‫جولة (ق)‬ ‫مستدير‬
‫إرجاع الجزء الصحيح من الرقم ‪x‬‬ ‫اقتطاع (س)‬ ‫ترانك‬
‫الخ‪.‬‬

‫هناك أيضا وظائف قياسية مطبقة على األحرف والسالسل والمجموعات التي ال تحتاج إلى التعامل معها‪.‬‬

‫حساب التعبير‪ :‬األولويات في المشغلين‬ ‫‪.2.8.5‬‬


‫يتم التمييز بين التعبيرات الحسابية والتعبيرات المنطقية (أو المنطقية)‪:‬‬

‫التعبيرات الحسابية‬ ‫‪)a‬‬


‫يتكون التعبير الحسابي من معامالت عددية متصلة بواسطة عوامل حسابية‪.‬‬
‫مثل‪:‬‬

‫‪ 6/3 + 5‬يعطي ‪ 7‬ألنه يتم تقييم ‪ 6/3‬أوال ‪ ،‬ألن ‪ /‬أولوية أعلى من ‪.+‬‬
‫( ‪ 3 / )6 + 5‬يعطي ‪ 3.66‬ألنه يتم تقييم محتوى األقواس أوال‪.‬‬
‫قواعد لتقييم التعبيرات الحسابية‬

‫القاعدة ‪ :1‬يتم تقييم محتوى األقواس أوال ‪ ،‬بدءا من األقواس األعمق‪.‬‬


‫المادة ‪ :2‬لقد بدأنا في تنفيذ المشغلين ذوي األولوية القصوى‪ .‬في حالة المشغلين من نفس األولوية ‪ ،‬نبدأ بأقصى اليسار‪.‬‬

‫‪2‬‬
‫‪4‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫‪2 * 10 -9/3+ 7‬‬ ‫‪)a‬‬


‫(‪3)1‬‬

‫‪2 * 10 - 3 + 7‬‬
‫(‪20)2‬‬

‫(‪))2 7-47*2 + 8( + 6*5‬‬ ‫‪)b‬‬


‫(‪))2 / 4 - 7*2 + 8( + 6 * 5‬‬
‫(‪)1‬‬
‫(‪))4/2 - 8+14( + 6 * 5‬‬
‫(‪)2‬‬
‫(‪))2 - 8+14( + 6*5‬‬
‫‪20 —7+3‬‬ ‫(‪)3‬‬
‫(‪10)3‬‬ ‫(‪))2 - 22( + 6*5‬‬
‫(‪)4‬‬
‫‪20—10‬‬
‫(‪10-)4‬‬ ‫(‪)20 + 6*5‬‬
‫(‪)5‬‬
‫‪20 + 30‬‬
‫(‪)6‬‬
‫امثله‪:‬‬

‫أمثلة على التكوين‪:‬‬


‫نبدأ بأقصى اليسار من نفس العمق‪.‬‬ ‫((__________)‪))(+‬‬
‫_____‪______)2(___________)0‬‬
‫(‪)3‬‬
‫( () ‪ ) ) )( ( -‬نبدأ باألعمق‪.‬‬

‫بين قوسين ‪ ،‬يتم احترام أولويات المشغلين‬


‫‪.‬‬

‫‪2‬‬
‫‪5‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫ل‪.‬م‪.‬ب‪/‬س‪T .‬‬

‫التعبيرات المنطقية (المنطقية)‬ ‫‪)b‬‬


‫التعبير المنطقي (أو التعبير المنطقي) هو تعبير تكون نتيجته من الن‪jj‬وع منطقي‪ .‬يمكن أن تحت‪jj‬وي على عوام‪jj‬ل حس‪jj‬ابية ومش‪jj‬غلي‬
‫عالقات وعوامل تشغيل منطقية‪.‬‬
‫امثله‪:‬‬

‫(‪ )8-6 > 5+2‬و (‪)9 < 7‬‬


‫_ (‪)2‬‬ ‫(‪)1‬‬
‫(‪)4(________________)3‬‬
‫(‪)5‬‬
‫= (‪ )2 > 7‬و (‪)9 < 7‬‬
‫= صحيح وصحيح‬
‫= صحيح‬
‫قواعد أولوية المشغل‬ ‫‪)c‬‬
‫تكون أولوية العوامل الحسابية والمنطقية بالترتيب التالي‪:‬‬
‫) األقواس‬ ‫‪)1‬‬
‫وظائف‬ ‫‪)2‬‬
‫األقل أحاديا ‪ ،‬وليس‬ ‫‪)3‬‬
‫* ‪ ، DIV ، /‬وزارة الدفاع ‪ ،‬و‬ ‫‪)4‬‬
‫‪ ،- ،+‬أو‬ ‫‪)5‬‬
‫=‪=> ,=< ,> ,< ,>< ,‬‬ ‫‪)6‬‬

‫أمثلة التطبيق‬ ‫‪.2.9‬‬

‫مثال ‪ :١‬تبديل قيم متغيرين‬


‫اكتب خوارزمية تسمح لك بتبديل قيم متغيرين حقيقيين‪ .‬على سبيل المثال ‪ x = 18‬و ‪ y = -20‬في بداية الخوارزمية ‪ ،‬في النهاية‬
‫نحصل على ‪ x = -20‬و ‪.y = 18‬‬
‫ترجمة الخوارزمية إلى برنامج ‪ ، PASCAL‬وإدراك تكشف هذه الخوارزمية‪.‬‬
‫حل‬

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

‫‪2‬‬
‫‪6‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫سنكتب في الخوارزمية‪:‬‬

‫سذ‬
‫سنكتب في الخوارزمية‪[ :‬اكتب ( ‪)x ، y‬‬

‫بعد تحديد متغيرات المدخالت والمخرجات ‪ ،‬ال يزال يتعين علينا التوص‪jj‬ل إلى فك‪jj‬رة العالج‪ .‬الح‪jj‬ل ال‪jj‬ذي يتب‪jj‬ادر إلى ال‪jj‬ذهن على‬
‫الفور هو‪ x + y :‬و ‪( .y + x‬نقوم بتعيين‪ y j‬إلى ‪ ، x‬المغلفة نعين ‪ x‬إلى ‪ .)y‬المشكلة في هذا الحل هي أننا سنفقد القيمة األولية ل ‪.x‬‬

‫‪2‬‬
‫‪7‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫(التفسير‪ .)... :‬يجب علينا أوال االحتفاظ بقيمة ‪ x‬في متغير آخر ‪ ،‬على سبيل المثال ‪ ، t‬بالتسلسل ‪ ،‬نقوم بتعيين‪ t + x(.tày j‬و ‪ x '-y‬أخيرا ‪y +‬‬
‫‪.)t‬‬
‫لذا فإن الخوارزمية (وترجمتها إلى برنامج ‪ )PASCAL‬ستكون كما يلي‪:‬‬

‫مثال على البرنامج ؛‬ ‫مثال على الخوارزمية‪;1‬‬


‫يستخدم ينكرت‪.‬‬ ‫المتغيرات‬
‫فار‬ ‫س ‪ ،‬ص ‪ ،‬ر ‪ :‬بكرة‬
‫س ‪ ،‬ص ‪ ،‬ر‪ :‬حقيقي ؛‬ ‫البداية‬
‫بدأ‬ ‫قراءة (س ‪ ،‬ص) ر ‪ +‬س س ‪-‬‬
‫اكتب ("أعط قيمة ‪ x‬و ‪ )":y‬؛‬ ‫ص ‪ -‬ر اكتب (س ‪ ،‬ص)‬
‫يستعاض عن عبارة (س‪ ،‬ص)؛‬ ‫انتهاء‬
‫ر‪=:‬س;‬
‫‪;x:=y‬‬
‫‪;y:=t‬‬
‫اكتب ('‪ x = x ، 1‬و ‪ )y = '، y‬؛‬
‫انتهاء‪.‬‬

‫‪ -‬في المخطط االنسيابي ‪ ،‬نخطط مسار التنفيذ ‪ ،‬ونشير إلى تسلسل‬


‫اإلجراءات التي يتعين تنفيذها‪ .‬نالحظ في المخطط االنسيابي على اليسار ‪،‬‬
‫أن هناك مسار تنفيذ واحد فقط (اتجاه واحد لألسهم)‪ .‬في هذه الحالة يكون‬
‫التنفيذ حتميا (نحن نعرف مسبقا جميع اإلجراءات التي سيتم تنفيذها)‪.‬‬
‫‪ -‬في األمثلة التالية ‪ ،‬يمكننا العثور على العديد من مسارات التنفيذ‪.‬‬

‫مالحظة‪ :‬يمكننا تعميم المشكلة ‪ ،‬عن طريق تبديل قيم ثالثة متغيرات ‪ x‬و ‪ y‬و ‪z‬‬
‫بطريقة دائرية‪( .‬أيضا ل ‪ 4‬و ‪ 5‬وما إلى ذلك من المتغيرات)‪.‬‬
‫العملية‪ :‬نفتح الخوارزمية ل ‪ x = 6.5‬و ‪y = 17‬‬
‫—المتغيرات‬
‫‪t‬‬ ‫‪y‬‬ ‫‪X‬‬
‫تعليمات‬
‫‪/‬‬ ‫‪17‬‬ ‫‪6.5‬‬ ‫قراءة (س‪ ،‬ص)‬
‫‪6.5‬‬ ‫هاء‬ ‫هاء‬
‫ر‪+‬س‬
‫قدم‬ ‫‪17‬‬ ‫س —ص‬
‫قدم‬ ‫‪6.5‬‬ ‫‪17‬‬ ‫ذ ‪-‬ر‬

‫‪2‬‬
‫‪8‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫مثال ‪ :٢‬مجموع متغيرين‬


‫اكتب خوارزمية تجعل من الممكن تحقيق مجموع متغيرين‪ j‬صحيحين‪.‬‬
‫ترجمة الخوارزمية إلى برنامج ‪ ، PASCAL‬وإدراك تكشف هذه الخوارزمية‪.‬‬
‫حل‬

‫التحليل والمناقشة ‪ :‬نريد تحقيق مجموع متغيرين صحيحين ‪ a‬و ‪ ، b‬يجب علينا أوال إعطاء قيمتين‪ j‬للمتغيرين (سنحتاج إلى قراءتين)‪ .‬في‬
‫النهاية ‪ ،‬يجب أن نحسب مجموعهم في متغير ثالث ‪ s‬ثم نعرض قيمة ‪.s‬‬
‫لذلك تحتوي الخوارزمية على متغيرين لإلدخال { ‪ a‬و ‪ )b‬ومتغير إخراج واحد ‪ .5‬يمكن تخطيط الخوارزمية على النحو التالي‪:‬‬
‫سنكتب في الخوارزمية‪:‬‬
‫\‬ ‫قراءة (س‪ ،‬ص)‬
‫أب‬

‫‪s‬‬
‫سنكتب في الخوارزمية‪ :‬اكتب (ق)‬

‫بعد تحديد متغيرات المدخالت والمخرجات ‪ ،‬ال يزال يتعين علينا التوصل إلى فكرة العالج‪ .‬المعالجة بسيطة ‪ ،‬ما عليك سوى تنفيذ المهمة‬
‫التالية‪.a + b + 5 :‬‬
‫لذا فإن الخوارزمية (وترجمتها إلى برنامج ‪ )PASCAL‬ستكون كما يلي‪:‬‬

‫مجموع البرنامج؛‬
‫يستخدم ينكرت‪.‬‬
‫فار‬
‫أ ‪ ،‬ب ‪ ،‬س‪ :‬حقيقي ؛‬
‫بدأ‬
‫اكتب ("أعط قيمة ‪ a‬و ‪ )":b‬؛‬ ‫خوارزمية المجموع‬
‫يستعاض عن عبارة (أ‪ ،‬ب)؛‬ ‫المتغيرات‬
‫ق‪ = :‬أ ‪ +‬ب ؛‬ ‫أ ‪ ،‬ب ‪ ،‬ق‪ :‬عدد صحيح‬
‫اكتب ('مجموع ‪;)s =', s‬‬ ‫بداية‬
‫انتهاء‪.‬‬ ‫قراءة (أ ‪ ،‬ب) ق ‪ +‬أ ‪ +‬ب كتابة‬
‫(ق) نهاية‬

‫( أعلى )‬

‫يستعاض عن‬
‫عبارة (أ‪ ،‬ب)‬

‫‪2‬‬
‫‪9‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫العملية‪ :‬نفتح الخوارزمية ل ‪ a = 5‬و ‪y = -16‬‬

‫‪s‬‬ ‫‪b‬‬ ‫قد‬ ‫‪ -‬متغيرات التعليمات‬

‫‪/‬‬ ‫‪16 -‬‬ ‫‪5‬‬ ‫يستعاض عن عبارة (أ‪ ،‬ب)‬


‫‪11 -‬‬ ‫‪îf‬‬ ‫‪H‬‬ ‫ق‪+‬أ‪+‬ب‬

‫مثال ‪ :٣‬عدد زوجي أو فردي‬


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

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

‫العالج‬

‫رسالة‬
‫عرض الرسالة إما‪ a :‬زوجي أو ‪ a‬فردي‪.‬‬

‫لمعرفة ما إذا كان الرقم زوجيا أم ال ‪ ،‬يكفي حساب ما تبقى من القسمة على ‪ .2‬يمكننا استخدام وظيفة ‪ mod‬المكتوبة مباشرة‪= n mod b :‬‬
‫باقي قسمة ‪ n‬على ‪.b‬‬
‫لذا فإن الخوارزمية (وترجمتها إلى برنامج ‪ )PASCAL‬ستكون كما يلي‪:‬‬

‫‪ pair_impair‬البرنامج ؛‬ ‫خوارزمية ‪pair_impair‬‬


‫يستخدم ينكرت‪ .‬فار‬ ‫المتغيرات أ ‪ ،‬ص‪ :‬عدد صحيح بداية‬
‫أ ‪ ،‬ص‪ :‬عدد صحيح ؛‬ ‫اقرأ (أ) ‪ r + a mod 2‬إذا كان (‪)r = 0‬‬
‫بدأ‬ ‫ثم اكتب ('‪a‬حتى ‪ )1‬وإال‬
‫اكتب ("أعط قيمة ‪ )":a‬؛‬ ‫اكتب ('‪ A‬غريب') ‪finsi‬‬
‫‪ = :r‬وزارة الدفاع ‪ 2‬؛‬ ‫يستعاض عن عبارة (أ)؛‬ ‫انتهاء‬
‫إذا كان (‪ )r = 0‬ثم‬
‫اكتب ('‪ a‬زوجي')‬
‫اخر‬
‫اكتب ("أ غريب") ؛‬
‫انتهاء‪.‬‬

‫‪3‬‬
‫‪0‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫في هذا المثال‪ ،‬نالحظ في المخطط االنسيابي أن لدينا‬ ‫‪-‬‬


‫مسارين للتنفيذ‪ .‬لهذا ‪ ،‬يمكن أن يكون لدينا سيناريوهان لتقدم‬
‫الخوارزمية‪ :‬األول إذا كان ‪ a‬زوجيا والثاني إذا كان ‪a‬‬
‫فرديا‪.‬‬

‫العملية‪ :‬نقوم بفك الخوارزمية ل = ‪7‬‬

‫المتغيرات‬
‫‪r‬‬ ‫قد‬
‫تعليمات‬
‫‪/‬‬ ‫‪7‬‬ ‫قرأ‬
‫‪ 7 =( 1‬وزارة الدفاع ‪)2‬‬ ‫تي تي‬
‫‪ R + A‬وزارة الدفاع ‪2‬‬

‫‪ A‬غريب‬ ‫‪ - R = 0‬خطأ نتبع الفرع ال ‪ -‬اكتب ("‬


‫‪ a‬هو فردي")‬

‫نقوم بفك الخوارزمية ل = ‪16‬‬


‫^^^^^المتغيرات‬
‫‪r‬‬ ‫قد‬ ‫تعليمات‬
‫‪/‬‬ ‫‪16‬‬ ‫قرأ‬
‫‪ 16 =( 0‬وزارة الدفاع ‪)2‬‬ ‫تي تي‬
‫‪ R + A‬وزارة الدفاع ‪2‬‬

‫أ هو حتى‬ ‫‪ R = 0‬صحيح‬
‫نتبع الفرع نعم ‪ -‬اكتب ("أ زوجي")‬

‫مثال ‪ :٤‬إظهار جميع األرقام التي تقبل القسمة على ‪n‬‬


‫اكتب خوارزمية تعرض جميع األعداد الصحيحة األكبر من أو تساوي ‪ J‬وأقل من ‪( m‬عدد صحيح موجب) والتي تقبل القسمة على عدد‬
‫صحيح ‪.n‬‬
‫ترجمة الخوارزمية إلى برنامج ‪ ، PASCAL‬وإدراك تكشف هذه الخوارزمية‪.‬‬

‫‪3‬‬
‫‪1‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫حل‬

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

‫نم‬

‫‪ a‬هي قيمة عدد صحيح بحيث‪:‬‬


‫‪ = < 1‬أ < = م و ‪mod n = 0‬‬
‫للمعالجة ‪ ،‬نراجع جميع األرقام ‪ a‬بين ‪ 1‬و ‪ m‬وفي كل‬ ‫قد‬
‫تكرار (حلقة) نختبر ما إذا كانت ‪ a‬قابلة للقسمة على ‪ n‬أم ال‪ .‬في الحالة التي يكون فيها ‪ a‬قابال للقسمة ‪ ،‬يتم عرضه وإال فلن يتم فعل أي شيء‪.‬‬
‫لذا فإن الخوارزمية (وترجمتها إلى برنامج ‪ )PASCAL‬ستكون كما يلي‪:‬‬

‫‪ exemple_4‬البرنامج ؛‬ ‫خوارزمية ‪exemple_4‬‬


‫يستخدم ينكرت‪.‬‬ ‫المتغيرات ‪ :n,m,a‬بداية صحيحة‬
‫فار‬ ‫يستعاض عن عبارة "ن‪ ،‬م")‬
‫ن ‪ ،‬م ‪ ،‬أ ‪ :‬عدد صحيح ؛‬ ‫ل ‪ 1 +‬إلى م تفعل‬
‫بدأ‬ ‫إذا كان (‪ )mod n = 0‬فاكتب (‪)a‬‬
‫اكتب ("أعط قيمة ‪ n‬و ‪ )":m‬؛‬ ‫نهاية فينسيللنهاية‬
‫يستعاض عن عبارة (ن ‪ ،‬م) ؛‬
‫ل ‪ a: = l‬إلى ‪m do‬‬
‫بدأ‬
‫إذا كان (‪ )mod n = 0‬ثم )‪ writeln (a‬؛‬
‫انتهاء;‬
‫انتهاء‪.‬‬

‫تقوم حلقة تهيئة العداد ( ‪ ، )a ^ l‬بإجراء االختبار ( ‪a‬‬ ‫‪-‬‬


‫‪ ) = m‬وزيادة عدد‪ )a ^ a + 1 ( 1 j‬في نهاية كل تكرار‪.‬‬ ‫<‬
‫يوضح المخطط االنسيابي مسار حلقات ‪ Id‬كدائرة‬ ‫‪-‬‬
‫حلقية‪.‬‬
‫إذا كان االختبار ‪ a<-m‬خاطئا ‪ ،‬فإننا نخرج من الحلقة‬ ‫‪-‬‬
‫ل (وفي هذا المثال ‪ ،‬نترك ‪.)algorithm ' 1‬‬

‫‪3‬‬
‫‪2‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫العملية‪ :‬نقوم بإلغاء تثبيت الخوارزمية ل ‪ n = 3‬و ‪m = 7‬‬


‫المتغيرات‬
‫قد‬ ‫‪m‬‬ ‫‪n‬‬
‫تعليمات‬
‫‪/‬‬ ‫‪7‬‬ ‫‪3‬‬ ‫يستعاض عن عبارة "ن‪ ،‬م")‬
‫ل= ‪1‬‬
‫وزارة الدفاع ن = ‪0‬‬
‫‪1‬‬ ‫‪99‬‬ ‫‪99‬‬
‫( ‪ 1‬وزارة الدفاع ‪ ^ - )0 = 3‬خطأ‬
‫لذلك نحن ال نفعل شيئا‬

‫ل=‪2‬‬
‫‪2‬‬ ‫‪99‬‬ ‫‪99‬‬ ‫وزارة الدفاع ن = ‪0‬‬
‫( ‪ 2‬وزارة الدفاع ‪ - )0 = 3‬خطأ‬
‫لذلك نحن ال نفعل شيئا‬

‫ل= ‪3‬‬
‫‪3‬‬ ‫‪99‬‬ ‫وزارة الدفاع ن = ‪0‬‬
‫( ‪ true - )mod 3 = 0 3‬لذلك‬
‫نعرض‪a = 3 j‬‬

‫ل= ‪4‬‬
‫وزارة الدفاع ن = ‪0‬‬
‫‪4‬‬ ‫‪99‬‬ ‫‪99‬‬

‫( ‪ false ^ )mod 3 = 0 4‬لذلك‬


‫نحن ال نفعل شيئا‬

‫ل= ‪5‬‬
‫وزارة الدفاع ن = ‪0‬‬
‫‪5‬‬ ‫‪99‬‬ ‫‪99‬‬

‫( ‪ 5‬وزارة الدفاع ‪ - )0 = 3‬خطأ‬


‫لذلك نحن ال نفعل شيئا‬

‫ل= ‪6‬‬
‫‪6‬‬ ‫‪99‬‬ ‫‪99‬‬
‫وزارة الدفاع ن = ‪0‬‬
‫( ‪ 6‬وزارة الدفاع ‪ ^ )0 = 3‬صحيح‬
‫لذلك نعرض = ‪6‬‬

‫ل= ‪7‬‬
‫‪7‬‬ ‫‪99‬‬ ‫‪99‬‬ ‫وزارة الدفاع ن = ‪0‬‬
‫(‪ 7‬وزارة الدفاع ‪ - )0 = 3‬خطأ‬
‫لذلك نعرض = ‪3‬‬

‫ل= ‪8‬‬
‫‪8‬‬ ‫‪91‬‬ ‫‪99‬‬ ‫نوقف الحلقة ( ‪A>m‬‬
‫‪)7 > 8‬‬
‫نهاية الخوارزمية‬

‫مالحظة‪:‬‬
‫تقوم حلقة ‪ For‬بتهيئة‪ j‬العداد (وهو متغير عدد صحيح) للقيمة األولية مرة واحدة فقط (المرور األول)‪.‬‬ ‫‪-‬‬
‫في نهاية كل تكرار‪ ،‬أضف ‪ 1‬إلى عداد حلقة ‪.For‬‬ ‫‪-‬‬
‫قبل إدخال التكرار ‪ ،‬يتم إجراء مقارنة بين العداد والقيمة النهائية (هل العداد أقل من أو يساوي القيمة‬ ‫‪-‬‬

‫‪3‬‬
‫‪3‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫النهائية‪ .‬إذا كان األمر كذلك ‪ ،‬فإننا نصل إلى الحلقة ‪ ،‬وإال فإننا نوقف الحلقة)‪.‬‬ ‫‪-‬‬
‫إذا كانت القيمة النهائية أقل تماما من القيمة األولية ‪ ،‬في هذه الحالة ‪ ،‬ال يتم الوصول إلى حلقة ‪ For‬مطلقا‪.‬‬ ‫‪-‬‬
‫يمكن استبدال حلقة ‪ Pour‬إما بحلقة ‪ Tant-Que‬أو حلقة التكرار‪.‬‬ ‫‪-‬‬

‫مثال ‪ :5‬أوجد المقسومات على عدد ‪n‬‬


‫اكتب خوارزمية تعرض جميع المقسومات الموجبة لعدد صحيح ‪.n‬‬
‫ترجمة الخوارزمية إلى برنامج ‪ ، PASCAL‬وإدراك تكشف هذه الخوارزمية‪.‬‬

‫حل‬

‫التحليل والمناقشة ‪ :‬للعثور على جميع المقسومات على عدد‪ j‬صحيح ‪ ، n‬ما عليك سوى تصفح األرقام من ‪ 1‬إلى ‪ .n‬ولكن ‪ ،‬يجب أن نكون‬
‫حذرين في الحالة التي يكون فيها ‪ .n = 0‬في هذه الحالة ‪ ،‬تكون جميع األعداد الصحيحة مقسومة على ‪.n‬‬

‫‪n‬‬

‫‪ di‬هي مقسومات ‪ :n‬على األقل هناك اثنان‪ 1 :‬و ‪.n‬‬

‫للمعالجة ‪ ،‬نمر بجميع األرقام ‪ di‬بين ‪ 1‬و ‪ n‬وفي ك‪jj‬ل تك‪jj‬رار‬


‫(حلقة) نختبر ما إذا كانت ‪ n‬قابل‪jj‬ة للقس‪jj‬مة على ‪ di‬أم ال‪ .‬في‬
‫الحالة التي يكون فيها ‪ n‬قابال للقسمة ‪ ،‬فإننا نعرض ‪ di‬وإال فإننا ال نفعل شيئا‪.‬‬
‫لذا فإن الخوارزمية (وترجمتها إلى برنامج ‪ )PASCAL‬ستكون كما يلي‪:‬‬

‫‪ exemple_5‬البرنامج ؛‬ ‫خوارزمية ‪exemple_5‬‬


‫يستخدم ينكرت‪.‬‬ ‫المتغيرات ‪ :n,di‬عدد صحيح بداية‬
‫فار‬ ‫يستعاض عن عبارة (ن)‬
‫‪ :n,di‬عدد صحيح;‬ ‫ل ‪ DI + 1‬إلى ‪N do‬‬
‫بدأ‬ ‫إذا كان (‪ )n mod di = 0‬فاكتب (‬
‫اكتب ("أعط قيمة ‪ )":n‬؛‬ ‫‪)di‬‬
‫يستعاض عن عبارة (ن)؛‬ ‫نهاية فينسيللنهاية‬
‫ل ‪ di: = l‬إلى ‪n do‬‬
‫بدأ‬
‫إذا كان (‪ )n mod di = 0‬ثم )‪ writeln (di‬؛‬
‫انتهاء;‬
‫انتهاء‪.‬‬

‫‪3‬‬
‫‪4‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫في هذا المخطط االنسيابي (الخوارزمية) ^ لم نتعامل‬ ‫‪-‬‬


‫مع حالة ‪( n = 0‬لذا ‪ ،‬حاول القيام بذلك)‬
‫أيضا ‪ ،‬يجب معالجة حالة ‪.n<0‬‬ ‫‪-‬‬

‫ال‬

‫العملية‪ :‬نقوم بإلغاء تشغيل الخوارزمية ل ‪n = 12‬‬

‫دي‬ ‫‪n‬‬ ‫المتغيرات‬


‫تعليمات‬
‫‪/‬‬ ‫‪12‬‬ ‫يستعاض عن عبارة (ن)‬

‫ل ‪di = 1‬‬
‫‪1‬‬ ‫قدم‬
‫‪n mod di = 0‬‬
‫( ‪ 12‬وزارة الدفاع ‪ )0 = 1‬صحيح‬
‫لذلك نعرض ‪di = 1‬‬
‫ل ‪di = 2‬‬
‫‪n mod di = 0‬‬
‫‪2‬‬ ‫قدم‬
‫( ‪ 12‬وزارة الدفاع ‪- )0 = 2‬‬
‫صحيح‬
‫لذلك نعرض ‪di = 2‬‬
‫ل ‪di = 3‬‬
‫‪n mod di = 0‬‬
‫‪3‬‬ ‫قدم‬
‫( ‪ 12‬وزارة الدفاع ‪^ )0 = 3‬‬
‫صحيح‬
‫لذلك نعرض ‪di = 3‬‬
‫ل ‪di = 4‬‬
‫‪n mod di = 0‬‬
‫‪4‬‬ ‫قدم‬
‫( ‪ 12‬وزارة الدفاع ‪- )0 = 4‬‬
‫صحيح‬
‫لذلك نعرض ‪di = 4‬‬
‫ل ‪di = 5‬‬
‫‪5‬‬ ‫قدم‬ ‫‪n mod di = 0‬‬
‫( ‪ 12‬وزارة الدفاع ‪ - )0 = 5‬خطأ‬
‫لذلك نحن ال نفعل شيئا‬
‫ل ‪di = 6‬‬
‫‪n mod di = 0‬‬
‫( ‪ 12‬وزارة الدفاع ‪- )0 = 6‬‬
‫‪6‬‬ ‫قدم‬
‫صحيح لذلك نعرض‪di = 6 j‬‬

‫‪3‬‬
‫‪5‬‬
‫الفصل ‪ :2‬مفهوم الخوارزمية والبرنامج‬ ‫إل إم دي ‪ /‬إس تي‬

‫‪7‬‬ ‫قدم‬
‫ل ‪di = 7‬‬
‫‪n mod di = 0‬‬
‫( ‪ 12‬وزارة الدفاع ‪ ^ )0 = 7‬خطأ‬
‫لذلك نحن ال نفعل شيئا‬
‫‪8‬‬ ‫قدم‬
‫ل ‪di = 8‬‬
‫‪n mod di = 0‬‬
‫( ‪ 12‬وزارة الدفاع ‪ ^ )0 = 8‬خطأ‬
‫لذلك نحن ال نفعل شيئا‬
‫‪9‬‬ ‫قدم‬
‫ل ‪di = 9‬‬
‫‪n mod di = 0‬‬
‫( ‪ 12‬وزارة الدفاع ‪ - )0 = 9‬خطأ‬
‫لذلك نحن ال نفعل شيئا‬
‫‪10‬‬ ‫قدم‬
‫ل ‪di = 10‬‬
‫‪n mod di = 0‬‬
‫( ‪ 12‬وزارة الدفاع ‪ - )0 = 10‬خطأ‬
‫لذلك نحن ال نفعل شيئا‬
‫‪11‬‬ ‫قدم‬
‫ل ‪di = 11‬‬
‫‪n mod di = 0‬‬
‫( ‪ 12‬وزارة الدفاع ‪ - )0 = 11‬خطأ‬
‫لذلك نحن ال نفعل شيئا‬

‫‪12‬‬ ‫ل ‪di = 12‬‬


‫‪n mod di = 0‬‬
‫( ‪ 12‬وزارة الدفاع ‪- )0 = 12‬‬
‫صحيح‬
‫لذلك نعرض ‪di = 12‬‬

‫لذلك سيتم عرض الخوارزمية للقواسم ‪12 ، 6 ، 4 ، 3 ، 2 ، 1 : 12‬‬

‫‪3‬‬
‫‪6‬‬

You might also like