Algorithm
Algorithm
البرنامج -:هو مجموعة من التعليمات(االوامر وااليعازات) التي يستطيع الحاسب فهمها لحل
المشاكل وتقديم النتائج المطلوبة لهذه المشاكل .
هي البرامج التي تقوم بالتحكم في كيفية عمل الحاسب والربط بين مكوناته وتسهيل االتصال
بين المستخدم والجهاز ز
هي البرامج التي تنفذ على نظم التشغيل للحصول على عمليات محددة مثل معالجة النصوص
ومعالجة الجداول ومعالجة البيانات .
()1
حل المشكلة Problem Solving
-1تحديد المشكلة
هي مجموعة من اإلجراءات المرتبة ترتيبا ً منطقيا ً والتي يتم تنفيذها للوصول إلى هدف أو ناتج
محدد من معطيات محددة.
بعد االنتهاء من عمل الخوارزميات والمخططات االنسيابية ,ولحل المشكلة باستخدام الكمبيوتر
نقوم بترجمتها إلى إحدى لغات البرمجة
أثناء كتابة البرنامج نقع في بعض األخطـاء بدون قصد فمثال قــد نكتب عالمة الطرح بشكل
خاطئ فعنـد كتابة البرنامج ال نستطيع اكتشاف هذه األخطاء إال عنـدما نقوم بإدخال بياناتـ
للبرنامج معـروف نتـائجها مسبقا حتى نتمكن من مقارنة النتائج التي نحصل عليها بالنتائج الفعلية
وبذلك يمكن أن نكتشف األخطاء ونقوم بتصحيحها
-5توثيق البرنامج
يتم كتابة كل الخطوات التي اتخذت لحل المشكلة من مدخالت ومخرجات وخطــة حــل
وخريطة التدفق المستخدمة واللغة التي كتب بهـا البرنامج واوامر البرنامج وتاريخ آخــر تعديــل
للبرنامج ومـن شـارك في عمـــل البرنامج لالحتفاظ بــه موثق للرجوع إليه في أي وقت بهـدف
التصحيح وهذا يفيد في حالة اشتراك أكثر من شخص في كتابــة البرنامج أو عند التعديل في
البرنامج بواسطة أشخاص آخرين.
()2
أي لغة برمجـة لها مجموعة مكونات قد تختلف طبيعة تمثيلها من لغة إلى أخرى ,إال أنها كأصناف
ثابتـة وهي:
الثوابت ()Constants
المتغيرات ((Variables
تستخدم لتحديد نهاية الجمل التي هي عبارة عن أوامر الفاصلة المنقوطة ;
أو تعليمات للمترجم
تعبر عن بداية ونهاية مجموعة من الجمل المترابطة أقواس الجمل المترابطة {}
منطق ًيا ألداء وظيفة معينة.
()3
الكلمات المحجوزة :هي كلمات محجوزة لالستخدام من قبل كل لغة بشكل منفصل عن اللغات األخرى .هذه
الكلمات ال يمكن استخدامها أو تخصيصها ألي وظيفة غير المخصصة لها داخل المترجم .وهذه الكلمات
جميعها تكتب بحروف صغيرة (.)Small letters
الثوابت : Constants
وهي عبارة عن قيم ثابتة تستخدم في البرامج ,والمقصود بثابتة أنها ال تتغير عند تشغيل البرنامج في كل
مرة ولتغييرها يجب تعديل ال Codeثم إعادة بناء البرنامج.
نستخدم عالمة الترقيم ' ' لتحديد هذا الحرف ,مثل '‘’a', 'b', '5
الثوابت النصية (النصوص) وهي عبارة عن مجموعة من األحرف المتتالية التي تستخدم للتعبير عن جملة
معينة ,وأيضا ً حتى ال يخلط المترجم بينها وبين األوامـر البرمجية يجـب وضعهـا بين عالمتي التنصيص
"" Double Quotations Marksوالتي تستخدم لتحديد بداية ونهاية ثابت نصي.
الثوابت النصية يمكن أن يحتوي على أي حرف من الحروف ما عدا سطر جديد وعند كتابته على الشاشة
يظهر كما هو.
المتغيرات : Variables
تحديد نوع البيانات التي سيتم تخزينها في هذا المتغير ,وبالتالي تحديد حجم الذاكرة الالزمة لتخزين هذه
البيانات ليستطيع الحاسوب التعامل مع القيم بالصورة الصحيحة عند تحويلها للنظام الثنائي.
()4
المعامالت الحسابيـة و المنطقيـة ()Operators
وهي تتيح للمبرمج القيام بعمليات المعالجة (الحسابية والمنطقية) وعمليات التخزين وهي
تنقسم إلى:
الخوارزمية
إن كلمة خوارزمیة مشتقة من إسـم العالم العربي الجلیل محمد بن موسى الخوارزمي الذي
عاش في بغداد ,وقد برع ھذا العالم في الریاضیات والفلك ,فقـد وضع مبادئ علم الجبر .وفي
تلك الآونة انطلق اسم الخوارزميات على جـداول الضـرب والقسمة والحسـاب العشري وظــل
ھـذا االسـم متداوالً في أوروبا مدة قرون حتى تطور مؤخرا ليحمل مدلوالً جدیداً مرتبطا َ
بالبرمجة.
الى انجاز وظيفة معينة ويجب ان تتوافر فيها الشروط االتية -:
()5
مثال 1
C=A+B
الحل -:
-----------------------------------------------------------
هي تمثيل تخطيطي يعتمد على الرسم بأشكال قياسية لتوضيح ترتيب العمليات الالزمة لحل
مسألة أو مشكلة محددة
مثال 1
أرسم المخطط االنسيابي الذي يعطي نتیجة حل التعبیر الریاضي اآلتي :
C=A+B
الحل -:
مثال 2
هناك الكثير من المشكالت تحتوى على سؤال وحسب اإلجابة يتم التفرع إلى جزء محدد من
خريطة التدفق وفى أغلب األحيان تكون إجابة السؤال نعم أو ال ,ويمكن وجود أكثر من إجابتين .
مثال -:3
اكتب الخوارزمية الالزمة لقراءة درجة طالب في مادة البرمجة ,وطباعة كلمة ناجح في حال
نجاحه ثم ارسم المخطط االنسيابي لها .
اكتب الخوارزمية الالزمة لطباعة حاصل قسمة عددين واذا كان المقسوم عليه يساوي صفر
يطبع (غير معرف )
المعالجة :اذا كان المقسوم عليه مساوي للصفر نطبع عبارة غير معرف واال
اكتب الخوارزمية الالزمة لطباعة االعداد الصحيحة من 3-1ثم ارسم المخطط االنسيابي لها
المدخالت :عداد
اكتب الخوارزمية الالزمة الدخال درجة الحرارة وطباعة حالتها كونها اكبر من الصفر او اصغر
من الصفر او مساوية له ثم ارسم المخطط االنسيابي لها
للصفر
من الطبيعى جدا ألى مبرمج سواء كان مبتدىء أو محترف أن يكون لدية أخطاء برمجية أثناء
عملية التطوير 0،وتتوقف 0مدى سهولة حل هذا الخطأ طبقا ً لنوعه وتنقسم األخطاء البرمجية إلى
:نوعين أساسين هم
كتابة وثيقة الشروط 0الخارجية والداخلية :ويعتبر الزبون هو مصدر الوثيقة الخارجيّة ،إذ يقدمها
للمبرمج شاملة على المواصفات المراد إدراجها في البرنامج المنوي إنشاؤه ،فيقوم 0المبرمج
بدوره بالشروع بالعمل بتحليل هذه المواصفات والمتطلبات 0ثم البدء بكتابة وثيقة شروط داخلية
.تضم التفسيرات الخاصة بالمواصفات ذات دقة أكبر من تلك التي قدمها الزبون
التحليل :يستقطب المبرمج في هذه المرحلة المعلومات الالزمة بدقة لغايات رسم أبعاد المهام
.والمتطلبات التي سيؤدي بها البرنامج ،ويجب أن تتصف 0هذه المهام بالدقة العالية
الترميز( كتابة الكود) :وتتمثل بعمليّة تحويل الخوارزميات والمخططات المنتجة في المراحل
السابقة إلى لغة برمجة ما ،لقبول استخدامها 0من قبل الزبون شريطة أن تلبي حاجته الواردة في
الوثيقة الخارجية.
التوثيق :وتعتبر 0من المراحل الها ّمة في دورة حياة النظام البرمجي .االختبار والتكامليّة .الصيانة
والتطوير.0
إن طريقة التصميم من أعلى ألسفل هي أساسا عبارة عن )وتعرف 0أيضا بالتصميم المتدرج(
تحليل النظام بهدف اكتساب المعرفة بالنظم الفرعية التركيبية الخاصة به .تصاغ النظرة العامة
للنظام في طريقة التصميم من أعلى ألسفل بحيث تحدد وال تفصل أي أنظمة فرعية من المستوى
األول .تتم بعد ذلك تنقية النظام الفرعي بتفصيل أكبر وأحيانا 0في مستويات فرعية إضافية إلى أن
يتم تقليص كامل المواصفات إلى العناصر األساسية .غالبا ما يتم تحديد مواصفات نموذج
التصميم من أعلى إلى أسفل بمساعدة "الصناديق السوداء" مما يساعد في تسهيل معالجتها .ومع
ذلك قد يفشل اختبار الصناديق 0السوداء في توضيح اآلليات األساسية لعمل هذه الطريقة أو في أن
.يكون مفصال كفاية لتقييم صحة النموذج بشكل واقعي
أما طريقة التصميم من أسفل ألعلى فهي عبارة عن دمج أجزاء األنظمة معا إلنشاء نظم أكثر
ضخامة وبذا يتكون نظام ناشئ هو عبارة عن تجميع لألنظمة الفرعية الخاصة باألنظمة األصلية.
يتم في هذا التصميم تحديد العناصر األساسية المنفردة للنظام أوال في تفصيل كبير ،من ثم ربطها
معا لتكون أنظمة فرعية أكبر حجما يتم ربطها 0بدورها مع بعضها على مستويات 0عدة أحيانا إلى
أن يتم تشكيل نظام مكتمل عالي المستوى في النهاية .تشبه هذه الطريقة غالبا نموذج "بذرة" حيث
تكون البدايات صغيرة ولكنها تنمو في النهاية لتكون أكثر تعقيدا واكتماال 0.على أي حال فقد
تتمخض هذه "اإلستراتيجيات 0العضوية" عن تشابك العناصر واألنظمة الفرعية التي يتم تطويرها
بشكل معزول 0لتصير موضوعا للتحسين المحلي مقابل العمل على التوافق مع غرض عالمي
.للنظام
الصف االول /الخوارزميات /االسبوع السابع عشر
البرامج الفرعية
معظم البرامج ان لم يكن جميعها تحتاج الى مجموعة من العمليات الحسابية المتكررة وفي
مواضع مختلفة منها مما يزيد في حجم تلك البرامج ويجعلها طويلة نتيجة العمليات المتكررة المملة
,لذلك توضع هذه العمليات في برامج فرعية مستقلة عن البرنامج الرئيسي وتوضع عادة بعد
نهاية البرنامج .هذه العملية تساعد على فهم البرنامج فضال عن انها توفر مواضع تخزين في
الذاكرة نتيجة الختزال بعض العمليات المتكررة.
ان الروتين الفرعي يكتب مرة واحدة ولكن يمكن استدعائه عدة مرات من خالل البرنامج الرئيسي
.ويمكن الحصول من خالل الروتين الفرعي على نتائج حسابية وكذلك على عمليات برمجية
متعددة مثل المقارنة او االبدال.
تتم عملية استدعاء الروتين الفرعي من البرنامج الرئيسي بواسطة جملة االستدعاء . GOSUB
فعندما تصادف الحاسبة في البرنامج الرئيسي هذة الجملة تنتقل لتنفيذ البرنامج الفرعي في السطر
الذي ذكر في جملة GOSUBوبعد االنتهاء من تنفيذ البرنامج الفرعي يتم العودة بواسطة االيعاز
RETURNالى تنفيذ اول جملة بعد GOSUBالتي تفرع منها وكما موضح في المثال االتي :
الصف االول /الخوارزميات /االسبوع التاسع عشر
خالل الستينيات ،برزت العديد من العقبات القاسية في طريق تطوير 0برمجيات ضخمة .وكان هذا
يؤدي إلى تأخر في مواعيد إنجاز األعمال المطلوبة ،وإلى تكاليف مالية كبيرة تتجاوز الميزانيات
المخصصة ،وإلى الخروج بمنتج برمجي 0غير موثوق .وكانت النتيجة االقتناع 0بأن عملية التطوير0
البرمجي هي عملية أكثر تعقيداً مما كانوا يعتقدون سابقاً .ولقد أثمرت جهود البحث العلمي في
تلك الحقبة تطوير أسلوب البرمجة المهيكلة ،وهو طريقة لكتابة برامج أكثر وضوحاً 0من مثيالتها
غير المهيكلة وأكثر قابلية للفحص والتصحيح والتعديل.
تتمثل إحدى أبرز النتائج الملموسة لألبحاث السابقة في تطوير 0لغة البرمجة باسكال من قبل
نيكوالس ريث سنة 1971م .صممت لغة باسكال التي تحمل اسم رياضي 0وفيلسوف القرن
السابع عشر بليز باسكال من أجل تعليم البرمجة الهيكلية في المؤسسات 0التعليمية واألكاديمية
لكنها سرعان ما أصبحت اللغة المفضلة األولى في معظم الجامعات .ولكن هذه اللغة تعاني لسوء
الحظ ضعفا ً في العديد من اإلمكانات الالزمة حتى تصبح مفيدة تجارياً 0أو صناعيا ً أو على نطاق
التطبيقات الحكومية ،وهذا ما جعلها غير مقبولة ضمن هذه األوساط.
ٌ
خوارزمية وارسم مخطط انسيا بي إل يجٌاد العدد األكبر والعدد األصغر من بينٌ 15 مثال :1اكتب
عدد.
ٌ
الخوارزمية أوالً:
1.ابدأ.
6.توقف.
ٌ
التالية: ٌ
خوارزمية وارسم مخطط انسياٌبي إليجٌاد ناتج متسلسلة الحدود مثال :2اكتب
.n/n+1+. . . +1/2+2/3+3/4
ٌ
الخوارزمية أوالً:
1.ابدأ.
. S=0 2.
))S=S+ I/(I+1
6.توقف.
ٌ
التالية: ٌ
خوارزمية وارسم مخطط انسياٌبي إليجٌاد ناتج متسلسلة الحدود مثال 3اكتب
).S=1/2+2/4+3/6+4/8+ . . .+n/(n*2
ٌ
التالية: ٌ
خوارزمية وارسم مخطط انسياٌبي إليجٌاد ناتج متسلسلة الحدود مثال 4اكتب
).S=2/3+3/4+4/5+ . . .+(n+1)/(n+2
ٌ
خوارزمية وارسم مخطط انسياٌبي إليجٌاد حاصل جمع وحاصل ضرب 55عدد. .مثال 5اكتب
.Start
.S=0
.Read n
I=1 . . n
).)S=S+ I/(I+1
.Print S
.End
3
ٌ
خوارزمية وارسم مخطط انسيابي إليجٌاد معدل Nمن األعداد. مثال 4.اكتب
ٌ
خوارزمية وارسم مخطط انسياٌبي لقراءة أسماء 95طالب لكل طالب 15درجات مثال :اكتب
أوجد
1.ابدأ.
ب . Sum=0 -
ث . Av=Sum/8 -
3.توقف.
5
ٌ
التالية: ٌ
خوارزمية وارسم مخطط انسيابي إل يجٌاد ناتج متسلسلة الحدود مثال :اكتب
1.ابدأ.
6.توقف.
ٌ
التالية: ٌ
خوارزمية وارسم مخطط انسياٌبي إل يجٌاد ناتج متسلسلة الحدود مثال :اكتب
).S=1+(1*2)/(1+2)+(1*2*3)/(1+2+3)+ . . . +(1*2*…*n)/(1+2+…+n
ٌ
الخوارزمية: أوالً:
1.ابدأ.
ب . K=1 -
. i . M=M+J
. ii . K=K*J
6.توقف.
واجب:
ٌ
خوارزمية وارسم مخطط انسياٌبي لقراءة أسماء 155موظف ورواتبهم لمدة سنة كاملة 1.اكتب
وحساب مجموع الرواتب لكل واحد من الموظفينٌ ومن ثم طباعة اسم الموظف ومجموع رواتبه.
ٌ
التالية: ٌ
خوارزمية وارسم مخطط انسياٌبي الحتساب مجموع حدود المتسلسلة 2.اكتب
.S=1+(1-2)/2+(1-2-3)/3+(1-2-3-4)/4+ . . . +(1-2-3-…-n)/n
ٌ
التالية: ٌ
خوارزمية وارسم مخطط انسياٌبي الحتساب مجموع حدود المتسلسلة 3.اكتب
Z=1/2+(1+2)/(2*1+2*2)+(1+2+3)/(2*1+2*2+2*3)+ … +(1+2+…+n)/(2