You are on page 1of 22

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

‫‪Algorithms Design and Analysis‬‬

‫محاضرة (‪)2‬‬

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

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


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

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

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

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


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

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

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

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


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

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

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

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

‫مثال‪ -:‬ارسم المخطط االنسيابى لحساب مساحة الدائرة ‪ a‬والتى‬


‫نصف قطرها ‪.r‬‬

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

‫ادخل ‪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‬‬
‫أ‪ .‬مها أبو يوسف أبو ‪ -‬جامعة النيلين ‪ -‬كلية علوم الحاسوب وتقانة المعلومات‬
‫(‪ )3‬الشفرة المزيفة )‪(pseudo-code‬‬
‫هى تمثيل الخوارزمية بلغات قريبة من لغات البرمجة‬
‫كالباسكال )‪ (Pascal‬البعض يستخدم الكثير من‬
‫التفاصيل و البعض اآلخر يستخدم القليل ‪ ...‬فال قاعدة‬
‫معينة لكتابة هذا النوع من الشفرات‪.‬‬
‫‪read a,b‬‬
‫)‪add a to b (c=a+b‬‬
‫‪write c‬‬
‫أ‪ .‬مها أبو يوسف أبو ‪ -‬جامعة النيلين ‪ -‬كلية علوم الحاسوب وتقانة المعلومات‬
‫مثال ‪:‬‬
‫اكتب الخوارزمية وارسم المخطط االنسيابى لبرنامج يقرا‬
‫المتغير ‪ x‬ثم يحسب قيمة الدالة )‪ f(x‬وفقا ً لآلتى‪:‬‬

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


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

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

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

no x>0 yes

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

Print f(x)

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

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


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

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

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

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

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

You might also like