You are on page 1of 22

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

‫‪Design & Analysis of Algorithms‬‬

‫محاضرة (‪)2‬‬
‫‪ ‬‬
‫أ‪ .‬مها أبو‪ 8‬يوسف أبو‪ - 8‬جامعة النيلين ‪ -‬كلية علوم الحاسوب وتقانة المعلومات‬
‫مقدمة‬
‫تعريف‬
‫(‪)1‬الخوارزمية هى مجموعة محددة من الخطوات الرياضية‬
‫والمنطقية لحل مسالة او اداء مهمة معينة‪.‬‬

‫(‪ )2‬الخوارزمية هى مجموعة منتهية من التعليمات والتي باتباعها‬


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

‫أ‪ .‬مها أبو‪ 8‬يوسف أبو‪ - 8‬جامعة النيلين ‪ -‬كلية علوم الحاسو‪8‬ب وتقانة المعلومات‬
‫• سميت الخوار‪8‬زمية بهذا االسم نسبة إلى العالم العربى‬
‫ابوجعفر محمد بن موسى الخوارزمى‪.‬‬
‫• تم ابتكارها في القرن التاسع الميالدي‪.‬‬
‫• كلمة خوار‪8‬زم (‪ )algorism‬في األصل كانت مقتصرة‬
‫على القوانين الرياضية وتطورت لتشمل جميع إجراءات‬
‫حل المشكالت و تنفيذ المهمات‪.‬‬

‫أ‪ .‬مها أبو يوسف أبو ‪ -‬جامعة النيلين ‪ -‬كلية علوم الحاسو‪8‬ب وتقانة المعلومات‬
‫مميزات الخوارزمية‬

‫وصف خطوات الحل بشكل واضح ومحدد‪.‬‬ ‫‪.1‬‬


‫عدم اعتماد الخوارزمية على اسلوب معين في المعالجة‬ ‫‪.2‬‬
‫امكانية استخدام الخوارزمية نفسها لحل جميع المشاكل‬ ‫‪.3‬‬
‫المشابهة‪.‬‬
‫سهولة فهم خطوات حل المشكلة واستيعابها‪.‬‬ ‫‪.4‬‬
‫امكانية اكتشاف االخطاء التي قد تحدث بيسر‪ 8‬وسهولة‪.‬‬ ‫‪.5‬‬
‫تعد الخوارزمية وسيلة من وسائل التوثيق‪.‬‬ ‫‪.6‬‬
‫أ‪ .‬مها أبو يوسف أبو ‪ -‬جامعة النيلين ‪ -‬كلية علوم الحاسوب و‪8‬تقانة المعلو‪8‬مات‬
‫شروط الخوارزمية‬
‫المدخالت ‪Input‬‬ ‫‪.1‬‬
‫المخرجات ‪Output‬‬ ‫‪.2‬‬
‫الوضوح ‪Definiteness‬‬ ‫‪.3‬‬
‫المحدودية ‪Finiteness‬‬ ‫‪.4‬‬
‫امكانية الحل ‪Effectiveness‬‬ ‫‪.5‬‬

‫أ‪ .‬مها أبو‪ 8‬يوسف أبو‪ - 8‬جامعة النيلين ‪ -‬كلية علوم الحاسوب وتقانة المعلومات‬
‫ما الفرق بين الخوارزمية والبرنامج؟‬

‫أ‪ .‬مها أبو يو‪8‬سف أبو ‪ -‬جامعة النيلين ‪ -‬كلية علوم الحاسوب و‪8‬تقانة المعلو‪8‬مات‬
‫طرق تمثيل الخوارزمية‬

‫(‪ )1‬المخطط االنسيابي (‪)Flowchart‬‬


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

‫أ‪ .‬مها أبو‪ 8‬يوسف أبو‪ - 8‬جامعة النيلين ‪ -‬كلية علوم الحاسوب وتقانة المعلومات‬
‫االشكال المستخدم‪3‬ة فى رسم المخططات االنسيابية‬
‫البداية او النهاية‬
‫االدخال او االخراج‬

‫المعالجة‬
‫اتخاذ القرار‬

‫خط االنسياب‬
‫وصلة‬ ‫‪A‬‬
‫و يمكن تصنيف المخططات االنسيابية إلى ‪:‬‬
‫(أ) مخططات سير‪ 8‬العمليات التتابعية‬
‫(‪)Sequential Flowcharts‬‬
‫(ب) مخططات سير العمليات ذات التكرار والدوران‬
‫(‪)Loop Flowcharts‬‬
‫(ج) مخططات سير العمليات ذات األختيار‬
‫(‪)Selection Flowcharts‬‬
‫أ‪ .‬مها أبو يو‪8‬سف أبو ‪ -‬جامعة النيلين ‪ -‬كلية علوم الحاسوب و‪8‬تقانة المعلو‪8‬مات‬
‫مثال‪ -:‬ارسم المخطط االنسيابى لحساب مساحة الدائرة ‪ a‬والتى‬
‫نصف قطرها ‪.r‬‬

‫أ‪ .‬مها أبو‪ 8‬يوسف أبو‪ - 8‬جامعة النيلين ‪ -‬كلية علوم الحاسو‪8‬ب وتقانة المعلومات‬
‫البداية‬

‫ادخل ‪pi,r‬‬

‫‪a=pi*r2‬‬

‫اطبع ‪a‬‬

‫النهاية‬
‫(‪ )2‬اللغة الطبيعية (‪)Natural language‬‬
‫وهى استعمال اى لغة مثل العربية او االنجليزية او الفرنسية ‪ ...‬الخ‬
‫لتمثيل الخوارزمية‬
‫مثال‪ -:‬اكتب خوارزمية جمع عددين‪.‬‬
‫البداية‬ ‫‪.1‬‬
‫ادخل العددين‬ ‫‪.2‬‬
‫اجمع العددين‬ ‫‪.3‬‬
‫اخرج النتيجة‬ ‫‪.4‬‬
‫النهاية‬ ‫‪.5‬‬
‫مثال ‪ :‬اكتب خوارزمية لحساب مساحة الدائرة ‪ a‬والتى‬
‫نصف قطرها ‪.r‬‬
‫البداية‪.‬‬ ‫‪.1‬‬
‫أقرا نصف القطر ‪r‬‬ ‫‪.2‬‬
‫أقرا قيمة النسبة الثابتة ‪Pi‬‬ ‫‪.3‬‬
‫احسب مساحة الدائرة من العالقة ‪a=Pi*r2‬‬ ‫‪.4‬‬
‫أطبع قيمة المساحة ‪a‬‬ ‫‪.5‬‬
‫النهاية‪.‬‬ ‫‪.6‬‬
‫أ‪ .‬مها أبو‪ 8‬يوسف أبو ‪ -‬جامعة النيلين ‪ -‬كلية علوم الحاسو‪8‬ب وتقانة المعلومات‬
‫(‪ )3‬الشفرة المزيفة (‪  )pseudo-code‬‬
‫هى تمثيل الخوارزمية بلغات قريبة من لغات البرمجة‬
‫كالباسكال (‪ )Pascal‬البعض يستخدم الكثير من التفاصيل‬
‫و البعض اآلخر يستخدم القليل ‪ ...‬فال قاعدة معينة لكتابة‬
‫هذا النوع من الشفرات‪.‬‬
‫‪read a,b‬‬
‫)‪add a to b (c=a+b‬‬
‫‪write c‬‬
‫أ‪ .‬مها أبو‪ 8‬يوسف أبو‪ - 8‬جامعة النيلين ‪ -‬كلية علوم الحاسوب وتقانة المعلومات‬
‫مثال ‪:‬‬
‫اكتب الخوارز‪8‬مية وارسم المخطط االنسيابى لبرنامج يقرا‬
‫المتغير ‪ x‬ثم يحسب قيمة الدالة )‪ f(x‬وفقا ً لآلتى‪:‬‬

‫‪ x 3  cos( x) x  0‬‬


‫‪f ( x)   2‬‬
‫‪3x  x‬‬ ‫‪x0‬‬

‫أ‪ .‬مها أبو يو‪8‬سف أبو ‪ -‬جامعة النيلين ‪ -‬كلية علوم الحاسوب وتقانة المعلومات‬
‫الخوارزمية‬
‫‪ .1‬البداية‬
‫‪ .2‬اقرأ ‪x‬‬
‫‪ .3‬قارن قيمة ‪ x‬بالصفر‬
‫‪ .4‬إذا كانت موجبه اذهب إلى الخطوة (‪ )5‬وإال اذهب إلى الخطوة‬
‫(‪)6‬‬
‫‪ .5‬احسب قيمة)‪ f(x‬من المعادلة )‪ f(x) = x3 + cos(x‬ثم اذهب‬
‫للخطوة ‪7‬‬

‫أ‪ .‬مها أبو‪ 8‬يوسف أبو ‪ -‬جامعة النيلين ‪ -‬كلية علوم الحاسو‪8‬ب وتقانة المعلومات‬
‫‪ .6‬احسب قيمة )‪ f(x‬من المعادلة ‪3x2+x‬‬
‫‪ .7‬اطبع قيمة )‪f(x‬‬
‫‪ .8‬النهاية‪.‬‬

‫أ‪ .‬مها أبو‪ 8‬يوسف أبو‪ - 8‬جامعة النيلين ‪ -‬كلية علوم الحاسوب وتقانة المعلومات‬
start
‫المخطط االنسيابى‬
Read x

no x>0 yes

f(x) = 3x +x
2 f(x) = x3+cos(x)

Print f(x)

end
‫قواعد البرمجة‬

‫(‪ )1‬التتابع (التسلسل) ‪Sequence‬‬


‫تكون الخوارزمية عبارة عن مجموعة من التعليمات‬
‫المتسلسلة‪ ،‬هذه التعليمات قد تكون إما بسيطة أو مركبة‪.‬‬

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

‫أ‪ .‬مها أبو‪ 8‬يوسف أبو‪ - 8‬جامعة النيلين ‪ -‬كلية علوم الحاسوب وتقانة المعلومات‬
‫(‪ )3‬التكرار ‪Looping‬‬
‫عند حل بعض المشاكل ال بد من إعادة نفس تسلسل‬
‫الخطوات عدد من المرات‪.‬‬

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

‫أ‪ .‬مها أبو‪ 8‬يوسف أبو‪ - 8‬جامعة النيلين ‪ -‬كلية علوم الحاسو‪8‬ب وتقانة المعلومات‬

You might also like