Professional Documents
Culture Documents
مذكرة خوارزميات
مذكرة خوارزميات
مقدمة:
رغم أن الحاسب االلكتروني يتميز بقدرته على إنجاز العمليات الحسابية حسب األوامر و التعليمات
المعطاة له بسرعة فائقة و بدقة متناهية و كذلك بإمكانياته الكبيرة في حفظ المعلومات الواسعة و
المختلفة التي يعجز اإلنسان عن حفظها و استعادتها باستعمال ذاكرته العادية .فهو يعجز عن أن يقوم
بشكل ذاتي بحل أي مسألة مهما كانت بسيطة ،أي أن عمله ينحصر في إنجاز الحلول للمسائل التي
تبرمج له بشكل صحيح يتوافق مع األسس العلمية الصحيحة التي تعتد عليها هذه الحلول .
لذا سوف نستعرض في هذا الفصل الخطوات الضرورية الالزمة لحل المسائل باستخدام الحاسب
االلكتروني وكذلك توضيحاً مفصال ً لمفهوم الخوارزميات و خرائط سير العمليات التي تشكل العنصر
األساسي لكيفية البرمجة.
عند حل أي مسألة باستعمال الحاسب االلكتروني تتم المعالجة بإتباع خطوات نبينها بإيجاز فيما يلي:
•تعريف وتحليل المسألة:
إن تعريف المسألة هو عبارة عن دقة التعبير في تطبيق المسألة بحيث يجعلها معروفة ومفهومة بصورة
واضحة وبدون أي غموض لجميع األشخاص العاملين ضمن مجال االختصاص الذي تخضع له المسألة.
أما تحليل المسألة ووضع طريقة الحل فهو أصعب المصاعب و أشق الخطوات ،و من أجل الوصول إلى
حل صحيح فإن كثير من القوانين والطرق الرياضية المناسبة لحل المسألة يجب أن تستعمل و لربما
تحتاج أيضاً إلى تطوير هذه القوانين والطرق لنجعلها تناسب الحل في كثير من األحيان ففي هذه
الخطوة يجب تحديد:
1
•برمجة الحل باستخدام إحدى لغات البرمجة:
إن مخطط سير العمليات هو عبارة عن تخطيط تصوري مساعد سهل المالحظة بالنسبة للمبرمج و
لكنه غير مفهوم عند الحاسب االلكتروني ،لذلك فإن طريقة الحل الممثلة بمخطط سير العمليات يجب
أن تكتب بإحدى لغات الحاسب التي يفهمها و التي تتالءم مع حل المسألة.
و يلي ذلك كتابة البرنامج على الوسط الخارجي المناسب و إدخال البرنامج إلى الحاسب و البرنامج
الناتج من هذه الخطوة و المكتوبة بإحدى اللغات الرمزية أو الراقية يسمى بالبرنامج المصدري source
.program
الخوارزمية هي عبارة عن مجموعة من الخطوات المتسلسلة التي تصف بصورة مضبوطة وبدون أي
غموض جميع الخطوات الرياضية والمنطقية الالزمة لحل مسألة ما .ولكن هذا الوصف في كثير من
األحيان يكون معقداَ وصعب المالحظة والتتبع لذلك فإن خريطة سير العمليات التي تمثل وصفاً تصويرياً
لخطوات الخوارزمية تكون أكثر وضوحاً .وخريطة سير العمليات تقوم مقام الخوارزمية ويمكن بواسطتها
مالحظة تتبع التسلسل المنطقي لحل المسألة بكل سهولة ،وغالباً ما تكون استخراج الخوارزمية من
خريطة سير العمليات أسهل بكثير من كتابة الخوارزمية مباشرة.
2
و عند رسم خريطة سير العمليات لمسألة معينة فإننا نستخدم مجموعة من األشكال الرمزية
االصطالحية المبينة في الجدول التالي:
من أهم فوائد استخدام خرائط سير العمليات قبل كتابة البرنامج لمسألة ما ،ما يأتي:
. 1تمكن المبرمج من اإللمام الكامل بالمسألة المراد حلها و السيطرة على كل أجزائها بحيث تساعده
على اكتشاف األخطاء المنطقية ) (Logic Errorو التي تعتبر من أهم األخطاء التي تجهد المبرمج.
.2تساعد بيسر و سهولة على تعديل البرامج الموضوعة بمجرد النظر.
3.يعتبر االحتفاظ برسوم خرائط سير العمليات لحلول مسائل معينة أمراً مهماً إذ يكون مرجعاً عند
إجراء تعديالت عليها أو استخدامها لحل مسائل أخرى مشابهة دون الحاجة إلى الرجوع إلى المبرمج
األول باعتبار أن الحلول األولى قد صيغت في خطوات واضحة بسيطة و مفهومة.
.4توفير وسيلة مناسبة ومساعدة في كتابة البرامج ذات التفرعات الكثيرة.
و يمكن للبرنامج الواحد أن يشتمل على أكثر من نوع واحد من هذه األنواع .و سنتناول فيما يأتي
شرح هذه األنواع بشيء من التفصيل.
3
خرائط التتابع البسيط:
يخلو هذا النوع من التفرعات Branchesو الدورانات ،loopsو يكون الشكل العام لهذا النوع كما هو
مبين في الشكل :1-
4
.1ابدأ.
.7توقف.
الشكل 2-
مثال:ارسم خريطة سير العمليات لحساب قيمة كل من المتغيرات C, B, Aفي المعادلة اآلتية:
إذا علمت أن قيم كل من Y, Xمعطاة (معلومة) ،ثم اطبع قيم كل من .C, B, A, Y, X
الحل :من الواضح أنه يمكننا من حساب قيمة المتغير Aفي المعادلة( )1لمعرفتنا بقيم المعطيات
األولية ،Y, Xويمكننا من حساب قيمة المتغير Bفي المعادلة ( )2باالعتماد على قيمة Xالمعلومة
لدينا وقيمة المتغير Aالمحسوبة في الخطوة السابقة ،أما قيمة المتغير Cفي المعادلة ( )3باالعتماد
على قيم كل من المتغيرات B, A, Xوكلها معلومة.
وتكون خطوات حل المسألة كما هو مبين في الشكل 3-كما يلي:
5
.1ابدأ.
.7توقف.
الشكل 3-
خرائط التفرع:
ويحدث التفرع في البرامج بسبب الحاجة التخاذ قرار أو مفاضلة بين اختيارين أو أكثر ،وهناك أسلوبان
في تنفيذ القرار(انظر شكل .)4-
وبشكل عام فإن خرائط التفرع يمكن أن تأخذ إحدى الصورتين اآلتيتين (انظر شكل 5-و الشكل .) 6-
6
الشكل 5- الشكل 6-
يمكننا مالحظة أن شكل 5-يبين أنه إذا كان جواب الشرط ) YSE (Conditionفإن الحدث التالي في
التنفيذ يكون الحدث ) (aأما إذا كان الجواب NOفإن الحدث التالي يكون الحدث) (bكما يمكننا أن نالحظ
في الشكل 6-أنه إذا كان جواب الشرط YSEفإن الحدث التالي في التنفيذ يكون الحدث ) (aثم يتبعه
الحدث ) (bأما إذا كان جواب الشرط NOفإن الحدث التالي يكون الحدث ) (bمباشرة.
مثال:ارسم خريطة سير العمليات إليجاد قيمة االقتران ) F(xالمعرف حسب القاعدة التالية:
X if X>=0
= ) F(X׀X׀
-X if X<0
7
.1ابدأ
.7توقف.
الشكل 7-
مثال :ارسم خريطة سير العمليات لحساب قيمة Wطب ًقا للمعادالت اآلتية عل ً
ما بأن قيمة
المتغير Xمعطاة معلومة:
=W
8
.1ابدأ.
.9توقف.
الشكل 8-
وهذه الخرائط نحتاج إليها إلعادة عملية أو مجموعة من العمليات في البرنامج عد ًدا محدو ًدا أو غير
محدود من المرات ،ويكون الشكل العام لمثل هذه الخرائط كما يلي (انظر الشكل.) 19
9
الحدث ) (aيتكرر تنفيذه في كل دوره الحدث ) (aيتكرر تنفيذه في كل دورة
حتى يصبح جواب الشرط .YES طالما كان جواب الشرط .YES
الشكل 9-
مثال :ارسم خريطة سير العمليات إليجاد مساحة مجموعة من الدوائر أنصاف أقطارها معلومة:
تكون خطوات الحل المبينة في الشكل 11كما يلي:
ابدأ. .1
اقرأ نصف قطر الدائرة ).(R .2
أوجد مساحة الدائرة ).(A .3
اطبع قيم كل من .A, R .4
هل هناك مزيد من الدوائر؟ .5
فإن كان نعم فعد إلى الخطوة( )2وإن كان ال فعد
إلى الخطوة (.)6
توقف. .6
الشكل 11-12
7العدادCounter:
في كثير من األحيان نحتاج في برامج الحاسب االلكتروني إلى العد ،Countingفقد نريد مثال ً أن نعد
عدد كل من الطالب والطالبات ضمن الشعبة ،وقد تكون هذه العملية سهلة لإلنسان ألنها أصبحت
ضمن قدراته العقلية التي يكتسبها من الطفولة ،إال أن الحاسب يحتاج إلى تصميم خوارزمية
للعد Counting Algorithmتتضمن خطوات معينة إذا اتبعتها استطاع أن يعد.
ويمكن تحديد الخطوات التي يتبعها الحاسب حتى يتمكن من العد في الخطوات األساسية:
11
.1اجعل العداد مساويًا للصفر.
. 2اجعل القيمة الجديدة للعداد تساوي القيمة القديمة لها زائد واحد ،أي أن:
قيمة العداد (الجديدة)= قيمة العداد (القديمة)1+
.3كرر الخطوات ابتداء من الخطوة .2
مثال :ارسم خريطة سير العمليات التي يتبعها الحاسب لطباعة األعداد الطبيعية من 1إلى 111
ومربعاتها.
الحل :خطوات الحل مبينة في الشكل 11هي:
ابدأ. .1
اجعل .I=0 .2
اجعل .I=I+1 .3
. اجعل .4
اطبع .J, I .5
إذا كانت I=100اذهب إلى الخطوة 7وإال .6
اذهب إلى الخطوة .3
توقف. .7
الشكل11-
8المجاميع اإلجمالية:
في كثير من األحيان نحتاج في برامج الحاسب اإللكتروني إلى جمع مجموعة كبيرة من األعداد التي
تمثل معطيات ظاهرة معينة ،فمثال ً قد نرغب في إيجاد الوسط الحسابي ألعمار طالب الجامعة،
ولتحقيق هذا أوال ً يجب أن نحسب مجموع أعمار الطالب ،وطبعًا ليس عمليًا إعطاء رمز أبجدي لكل عمر
طالب فقد تحتاج ألكثر من عشرة اآلالف رمز ،في مثل هذه الحاالت نصمم خوارزمية معينة للتجميع
تسمى خوارزمية التجميع summers Algorithmتتضمن خطوات محددة إذا اتبعها الحاسب استطاع أن
يجمع أي كمية من البيانات باستخدام متغيرين اثنين إحداهما هو المتغير الذي نجمعه واآلخر هو
الجمع اإلجمالي (المجمع) ،ويمكن تحديد الخطوات التي يجب أن يتبعها الحاسب لتحقيق ذلك في
أربع خطوات هي:
.1اجعل المجمع مساويًا الصفر.
.2ادخل قيمة واحدة للمتغير.
. 3اجعل القيمة الجديدة للمجمع تساوي القيمة القديمة له زائد القيمة المدخلة للمتغير ،أي أن:
قيمة المجمع الجديدة=قيمة المجمع القديمة +آخر قيمة مدخلة للمتغير.
11
.4كرر ابتدا ًءا من الخطوة الثانية.
مثال :ارسم خريطة سير العمليات إليجاد الوسط الحسابي ألعمار طالب شعبتك.
الحل :نفترض أن إجمالي عدد الطالب = Nونستخدم عد ًدا لرقم كل طالب ونرمز له بالرمز Iونرمز لعمر
الطالب ب Xونستخدم مجمعًا ألعمار الطلبة ونرمز له بالرمز Sونستخدم الرمز Aليدل على معدل أعمار
الطلبة.
وتكون خطوات الحل كما هو مبين في الشكل 12-هي:
ابدأ. .1
ادخل إجمالي عدد الطالب ).(N .2
اجعل .I=0 .3
اجعل .S=0 .4
اجعل .I=I+1 .5
ادخل .X .6
اجعل .S=S+X .7
إذا كانت I=Nاذهب إلى الخطوة 9وإال .8
اذهب إلى الخطوة .5
اجعل .A=S/N .9
.11توقف.
الشكل 12-12
في هذه الحالة تكون الدورانات داخل بعضها البعض بحيث ال تتقاطع فإذا كان لدينا مثال ً دورانان من هذا
النوع (انظر شكل 13فيسمى الدوران قم ( )1دورانًا داخليًا ) (Inner Loopبينما الدوران رقم ( )2دورانًا
خارجيًا (Outer Loopويتم التناسق في عملي مثل هذين الدورانين بحيث:
12
تكون أولوية التنفيذ للدوران الداخلي.
الشكل 13
مثال :يرغب نجار في تقطيع مجموعة من القطع الخشبية طول كل منها يزيد عن 3متر إلى قطع
صغيرة طول الواحدة منها يساوي 3متر.
ارسم خريطة سير العمليات.
خطوات الحل المبينة في شكل 14-هي:
ابدأ. .1
خذ قطعة. .2
اقطع منها قطعة طولها 3متر. .3
هل المتبقي يزيد عن 3متر؟ .4
إذا كان الجواب نعم فاذهب إلى الخطوة( .)3وإذا كان
الجواب ال فاذهب إلى الخطوة (.)5
هل هناك مزيد من القطع المراد تقطيعها ؟ إن كان الجواب .5
نعم فاذهب إلى الخطوة( )2وإن كان ال فاذهب إلى
الخطوة(.)6
توقف. .6
الشكل 14-
لقد عرفنا في الفقرتين السابقتين مفهوم الدوران البسيط والدورانات الضمنية ويمكننا اآلن استخدم
الشكل االصطالحي للدوران والوارد على النحو التالي:
13
الشكل 15-
في الشكل 15-بخطوة مجملة واحدة مبينة في يمكننا استبدال الخطوات المفصلة
الشكل االصطالحي للدوران شكل15-12حيث تنفذ هذه الخطوات بصورة أوتوماتيكية من قبل الحاسب،
وهذا من شأنه تسهيل عملية البرمجة واختصار عدد التعليمات في البرنامج وتجنب بعض األخطاء.
ما إذا لم تعط قيمة أخرى بخالف ذلك ،وفي حالة عدم ذكر
تساوي 1دائ ً ملحوظة :تعتبر قيمة
تساوي يصبح الشكل االصطالحي الوارد في الشكل 15-كما يلي حيث تكون قيمة قيمة
1وبصورة أوتوماتيكية.
الشكل 16-
مثال :أعد حل مثال الموضح في الشكل 11-إليجاد مساحة nمن الدوائر باستخدام الشكل
االصطالحي للدوران.
خطوات الحل كما هي مبينة في الشكل .17-
14
الشكل 12
الشكل 18
15
16