0% found this document useful (0 votes)
53 views22 pages

Algorithm

يقدم المستند مقدمة عن مبادئ البرمجة الأساسية مثل تعريف البرنامج وأنواعه، ويشرح مكونات لغات البرمجة مثل الكلمات المحجوزة والثوابت والمتغيرات.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views22 pages

Algorithm

يقدم المستند مقدمة عن مبادئ البرمجة الأساسية مثل تعريف البرنامج وأنواعه، ويشرح مكونات لغات البرمجة مثل الكلمات المحجوزة والثوابت والمتغيرات.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 22

‫مبادئ أولية عن البرمجة ‪:‬‬

‫البرنامج ‪ -:‬هو مجموعة من التعليمات(االوامر وااليعازات) التي يستطيع الحاسب فهمها لحل‬
‫المشاكل وتقديم النتائج المطلوبة لهذه المشاكل ‪.‬‬

‫تقسم برامج الحاسوب الى نوعين اساسيين هما ‪:‬‬

‫‪ -‬برامجيات النظام‬ ‫* ‪Operating System Programs‬‬

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

‫* – برامج التطبيقات‬ ‫‪Applications Program‬‬

‫هي البرامج التي تنفذ على نظم التشغيل للحصول على عمليات محددة مثل معالجة النصوص‬
‫ومعالجة الجداول ومعالجة البيانات ‪.‬‬

‫* ‪ - User programs‬برامج المستخدم وهي البرامج التي يكتبها مستخدمي الحاسوب‬


‫وبأي لغة من لغات البرمجة ‪.‬‬

‫تقسم لغات البرمجة ‪ Programming Languages‬الى‪-:‬‬

‫‪ -1‬لغات البرمجة عالية المستوى (‪)High-Level  Languages‬‬

‫مثال ( لغة بيسك ‪ ،‬فورتران ‪،‬كوبول ‪ ،‬باسكال وغيرها )‪.‬‬

‫‪ -2‬لغات البرمجة واطئة المستوى (‪)Low-Level Languages‬‬

‫مثال ( لغة اآللة ‪ ،‬لغة التجميع )‬

‫‪ -3‬لغات البرمجة المتوسطة المستوى (‪)Middle Level Language‬‬

‫مثال ( لغة ‪ ، c‬لغة ‪) ++c‬‬

‫‪ ‬‬

‫(‪)1‬‬
‫حل المشكلة ‪Problem Solving‬‬

‫‪ -1‬تحديد المشكلة‬

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

‫‪ - 2‬إعداد خطوات الحل (الخوارزمية)‬

‫هي مجموعة من اإلجراءات المرتبة ترتيبا ً منطقيا ً والتي يتم تنفيذها للوصول إلى هدف أو ناتج‬
‫محدد من معطيات محددة‪.‬‬

‫‪ - 3‬تصميم البرنامج على الكمبيوتر‬

‫بعد االنتهاء من عمل الخوارزميات والمخططات االنسيابية ‪,‬ولحل المشكلة باستخدام الكمبيوتر‬
‫نقوم بترجمتها إلى إحدى لغات البرمجة‬

‫‪ -4‬اختبار صحة البرنامج وتصحيح أخطائه‬

‫أثناء كتابة البرنامج نقع في بعض األخطـاء بدون قصد فمثال قــد نكتب عالمة الطرح بشكل‬
‫خاطئ فعنـد كتابة البرنامج ال نستطيع اكتشاف هذه األخطاء إال عنـدما نقوم بإدخال بياناتـ‬
‫للبرنامج معـروف نتـائجها مسبقا حتى نتمكن من مقارنة النتائج التي نحصل عليها بالنتائج الفعلية‬
‫وبذلك يمكن أن نكتشف األخطاء ونقوم بتصحيحها‬

‫‪ -5‬توثيق البرنامج‬

‫يتم كتابة كل الخطوات التي اتخذت لحل المشكلة من مدخالت ومخرجات وخطــة حــل‬
‫وخريطة التدفق المستخدمة واللغة التي كتب بهـا البرنامج واوامر البرنامج وتاريخ آخــر تعديــل‬
‫للبرنامج ومـن شـارك في عمـــل البرنامج لالحتفاظ بــه موثق للرجوع إليه في أي وقت بهـدف‬
‫التصحيح وهذا يفيد في حالة اشتراك أكثر من شخص في كتابــة البرنامج أو عند التعديل في‬
‫البرنامج بواسطة أشخاص آخرين‪.‬‬
‫(‪)2‬‬

‫مكونات لغات البرمجة ‪-:‬‬

‫أي لغة برمجـة لها مجموعة مكونات قد تختلف طبيعة تمثيلها من لغة إلى أخرى‪ ,‬إال أنها كأصناف‬
‫ثابتـة وهي‪:‬‬

‫عالمات الترقيم (‪)Punctuation marks‬‬

‫الكلمات المحجوزة (‪)Reserved words‬‬

‫الثوابت (‪)Constants‬‬

‫النصوص (‪)String Constants‬‬

‫األسماء التعريفية (‪)Identifiers‬‬

‫المتغيرات ((‪Variables‬‬

‫المعامالت الحسابيـة و المنطقيـة (‪)Operators‬‬

‫تستخدم لتحديد نهاية الجمل التي هي عبارة عن أوامر‬ ‫الفاصلة المنقوطة‬ ‫;‬
‫أو تعليمات للمترجم‬

‫تعبر عن بداية ونهاية مجموعة من الجمل المترابطة‬ ‫أقواس الجمل المترابطة‬ ‫{}‬
‫منطق ًيا ألداء وظيفة معينة‪.‬‬

‫لفصل المفردات في نفس الجملة وهذه ضرورية‬ ‫الفراغات‬

‫تستخدم الستقبال قيم معينة للدوال‬ ‫أقواس القيم الممرة‬ ‫()‬

‫تستخدم لكتابة و ارسال نصوص معينة ‪.‬‬ ‫‪double quotations‬‬ ‫""‬

‫تستخدم لكتابة نوع معين من البيانات و هو الحروف‬ ‫‪Single quotations‬‬ ‫''‬


‫الثابتة‬

‫(‪)3‬‬
‫الكلمات المحجوزة ‪ :‬هي كلمات محجوزة لالستخدام من قبل كل لغة بشكل منفصل عن اللغات األخرى ‪.‬هذه‬
‫الكلمات ال يمكن استخدامها أو تخصيصها ألي وظيفة غير المخصصة لها داخل المترجم‪ .‬وهذه الكلمات‬
‫جميعها تكتب بحروف صغيرة (‪.)Small letters‬‬

‫الكلمات ( ‪ ) int , char , if , do ,‬امثلة على الكلمات المحجوزة في لغة ‪++C‬‬

‫الثوابت ‪: Constants‬‬

‫وهي عبارة عن قيم ثابتة تستخدم في البرامج‪ ,‬والمقصود بثابتة أنها ال تتغير عند تشغيل البرنامج في كل‬
‫مرة ولتغييرها يجب تعديل ال‪ Code‬ثم إعادة بناء البرنامج‪.‬‬

‫الثوابت تنقسم إلى ثالثة أنواع‪:‬‬

‫‪ -1‬أعداد صحيحة مثل ‪105 ,49- ,1‬‬

‫‪ -2‬أعداد عشرية ‪2.9- ,0.34 ,1.5‬‬

‫‪ -3‬حروف ‪ characters‬وهذا النوع ال يمكن كتابته مباشرة ولذلك‬

‫نستخدم عالمة الترقيم ' ' لتحديد هذا الحرف‪ ,‬مثل '‘’‪a', 'b', '5‬‬

‫النصوص (‪)String Constants‬‬

‫الثوابت النصية (النصوص) وهي عبارة عن مجموعة من األحرف المتتالية التي تستخدم للتعبير عن جملة‬
‫معينة‪ ,‬وأيضا ً حتى ال يخلط المترجم بينها وبين األوامـر البرمجية يجـب وضعهـا بين عالمتي التنصيص‬
‫‪ "" Double Quotations Marks‬والتي تستخدم لتحديد بداية ونهاية ثابت نصي‪.‬‬

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

‫المتغيرات ‪: Variables‬‬

‫‪ ‬نستخدم المتغيرات و نقوم بتعريفها لعدة أسباب‪:‬‬

‫‪ ‬ربط هذا االسم (المتغير) بعنوان في الذاكرة‪.‬‬

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

‫(‪)4‬‬
‫المعامالت الحسابيـة و المنطقيـة (‪)Operators‬‬

‫وهي تتيح للمبرمج القيام بعمليات المعالجة (الحسابية والمنطقية) وعمليات التخزين وهي‬
‫تنقسم إلى‪:‬‬

‫‪.)% ,/ ,* ,- ,+( Arithmetic Operators ‬‬

‫‪ Increment ‬و‪.)-- ,++( Decrement‬‬

‫‪.)=% ,=/ ,=* ,=- ,=+ ,=( Assignment Operators ‬‬

‫‪.)=> ,=< ,> ,<( Relational Operators ‬‬

‫‪.)=! ,==( Equality Operators ‬‬

‫‪.)|| ,&& ,!( Logical Operators ‬‬

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

‫إن كلمة خوارزمیة مشتقة من إسـم العالم العربي الجلیل محمد بن موسى الخوارزمي الذي‬
‫عاش في بغداد‪ ,‬وقد برع ھذا العالم في الریاضیات والفلك‪ ,‬فقـد وضع مبادئ علم الجبر‪ .‬وفي‬
‫تلك الآونة انطلق اسم الخوارزميات على جـداول الضـرب والقسمة والحسـاب العشري وظــل‬
‫ھـذا االسـم متداوالً في أوروبا مدة قرون حتى تطور مؤخرا ليحمل مدلوالً جدیداً مرتبطا َ‬
‫بالبرمجة‪.‬‬

‫والخوازرمية هي مجموعة محددة من التعليمات (خطوات الحل) التي تؤدي‬

‫الى انجاز وظيفة معينة ويجب ان تتوافر فيها الشروط االتية ‪-:‬‬

‫( ‪)Output‬‬ ‫‪ -‬تحديد المخرجات‬

‫‪ -‬تحديد المدخالت (‪)Input‬‬

‫‪ -‬تحديد عمليات المعالجة ( ‪) Process‬‬

‫(‪)5‬‬
‫مثال ‪1‬‬

‫أكتب الخوارزمیة التي تعطي نتیجة حل التعبیر الریاضي اآلتي ‪:‬‬

‫‪C=A+B‬‬

‫الحل ‪-:‬‬

‫المخططات االنسيابية(خرائط التدفق او السير) ‪Flowcharts‬‬

‫‪-----------------------------------------------------------‬‬

‫هي تمثيل تخطيطي يعتمد على الرسم بأشكال قياسية لتوضيح ترتيب العمليات الالزمة لحل‬
‫مسألة أو مشكلة محددة‬

‫اهم فوائد المخططات االنسيابية‬

‫‪ -1‬تعطي صورة واضحة وبسيطة عن طبيعة الخطوات المتبعة لحل المسالة‬

‫‪ - 2‬تسهيل دراسة البرامج من قبل المستفيدين او الدارسين‬

‫‪ – 3‬تسهيل عملية مراجعةـ البرنامج او النظام من اجل التعديل او اكتشاف‬

‫االخطاء الموجودة فيه لتصحيحها ‪.‬‬


‫(‪) 6‬‬

‫‪ - 1‬المخططات االنسيابية البسيطة‬

‫مثال ‪1‬‬

‫أرسم المخطط االنسيابي الذي يعطي نتیجة حل التعبیر الریاضي اآلتي ‪:‬‬

‫‪C=A+B‬‬

‫الحل ‪-:‬‬

‫مثال ‪2‬‬

‫أكتب الخوارزمیة الالزمة لحساب مساحة ومحيط المستطيل ثم ارسم‬

‫المخطط االنسيابي لها ‪.‬‬


‫(‪)7‬‬

‫‪ – 2‬استخدامـ التفرع في المخططات االنسيابية ( اتخاذ القرار )‬

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

‫مثال ‪-:3‬‬

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

‫تعريف المشكلة ‪:‬‬

‫المخرجات ‪ :‬طباعة ناجح‬

‫المدخالت ‪ :‬درجة الطالب‬

‫المعالجة ‪ :‬معرفة الطالب ناجح ام ال وذلك بمقارنة درجته مع ‪50‬‬

‫مثال ‪-: 4‬‬

‫اكتب الخوارزمية الالزمة لطباعة حاصل قسمة عددين واذا كان المقسوم عليه يساوي صفر‬
‫يطبع (غير معرف )‬

‫تعريف المشكلة ‪:‬‬

‫“ المخرجات ‪ :‬طباعة ناتج قسمة عددين أو طباعة عبارة "غير معرف‬

‫‪ num1, num2‬المدخالت ‪ :‬القاسم والمقسومـ عليه ‪,‬‬

‫المعالجة ‪ :‬اذا كان المقسوم عليه مساوي للصفر نطبع عبارة غير معرف واال‬

‫نطبع ناتج القسمة‬


‫(‪)8‬‬

‫‪ – 3‬استخدامـ الحلقات التكرارية في المخططات االنسيابية‬

‫مثال ‪-: 4‬‬

‫اكتب الخوارزمية الالزمة لطباعة االعداد الصحيحة من ‪ 3-1‬ثم ارسم المخطط االنسيابي لها‬

‫تعريف المشكلة ‪:‬‬

‫المخرجات ‪ :‬طباعة االعداد من ‪ 1‬الى ‪3‬‬

‫المدخالت ‪ :‬عداد‬

‫المعالجة ‪ :‬طباعة العدد في حال تحقق الشرط‬


‫(‪)9‬‬

‫مثال ‪-: 5‬‬

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

‫تعريف المشكلة ‪:‬‬

‫المخرجات ‪ :‬طباعة اكبر من الصفر او اصغر من الصفر او مساوية‬

‫للصفر‬

‫المدخالت ‪ :‬درجة الحرارة المئوية‬

‫المعالجة ‪ :‬مقارنة درجة الحرارة مع الصفر‬


‫(‬ ‫‪(10‬‬

‫االسبوع العاشر‪ /‬الخوارزميات ‪ /‬أنظمة الحاسوب ‪/‬الصف االول‬

‫اسس اعداد البرنامج الناجح ‪.‬‬


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

‫شروط البرنامج الناجح ‪·:‬‬


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

‫الشروط الواجب توفرها في البرنامج الكشفي ‪:‬‬


‫· يتمشى مع أسس ومبادئ وطريقة الحركة الكشفية ‪.‬‬
‫· يلبي احتياجات الفتية ‪.‬‬
‫· يتناسب مع ظروف احتياجات البيئة ‪.‬‬
‫· يتمشى مع العصر ‪.‬‬
‫· يلبي احتياجات المجتمع ‪.‬‬

‫ما يجب مراعاته عند وضع البرنامج ‪:‬‬


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

‫اإلرشادات على طريقة تخطيط البرنامج ‪·.:‬‬


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

‫األخطاء البرمجية فى مرحلة التطوير‬

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

‫‪Static Programming Errors 1-‬‬


‫وهي عبارة عن أخطاء يمكن للـ ‪ run compiler‬وتنقسم‪ 0‬لنوعين هما ‪ ‬أكتشافها‪0‬‬

‫‪-‬أ‪Syntax Programming Errors‬‬


‫وتعنى خطأ نحوى باللغة ولم تُحسن كتابة األمر البرمجى كامال هو مطلوب وهو َ‪،‬‬
‫فى نهاية األمر البرمجى ‪ . ; semi colon‬على سبيل المثال حينما تنسى كتابتها‬

‫‪-‬ب ‪ Semantic Programming Errors‬‬


‫وهى قريبة من األخطاء النحوية ولكن تعتمد على مدى صحة تسلسل او ترتيب‬
‫الكود‪ ،‬على سبيل المثال حينما تحاول طباعة متغير لم تقم بتعرفيه مسبقا ً‬

‫‪-‬ج ‪Dynamic Programming Errors‬‬


‫وهى عبارة عن أخطاء ال يمكن أكتشاافها اال بعد عمل تنفيذ للكود البرمجي وتنقسم أيضا‬
‫‪ :‬وهما لنوعين‬

‫‪a. Run-time Errors‬‬


‫وهى عبارة عن حدوث خطأ وقت تنفيذ البرنامج على سبيل المثال حاولت ان‬
‫تقرأ من‪ ‬ملف فى البرنامج وهو ليس موجود‪ 0‬فى األساس‪ ،‬او محاولة قسمة ‪1‬‬
‫على ‪ ، 0‬حاولت ان تتصل بقاعدة بيانات لم تقم بتعريفها‬
‫‪b. Logical Errors‬‬
‫وهذا النوع هو أصعبهم على األطالق ألنه ال يحدث اي خطأ وقتي امامك وقد‪0‬‬
‫يستغرق سنين ألكتشافه في بعض الحاالت‪ ،‬على سبيل المثال أنت تبرمج كود‬
‫يستقبل رقمين من المستخدم ويقوم‪ 0‬البرنامج بجمعهم ثم عرض الناتج وبدال‬
‫النتيجة‪  ‬من ان تضع عالمة الجمع وضعت عالمة الطرح فكل مرة تقوم بعمل‬
‫للبرنامج فأنه سيعمل بشكل طبيعي جدا ولكن ستشعر‪ 0‬باألمر اذا قارنت‬
‫المدخالت بالمخرجات‪ 0‬فأنتبهوا لهذا األمر‬
‫الصف االول ‪/‬الخوارزميات ‪/‬االسبوع الثالث عشر‬

‫مراحل بناء النظام البرمجي‬


‫‪ :‬تم ّر عمليّة بناء النظم البرمجية بعدة مراحل متتالية ومتسلسلة‪ ،‬وهي على النحو التالي‬

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

‫التحليل‪ :‬يستقطب المبرمج في هذه المرحلة المعلومات الالزمة بدقة لغايات رسم أبعاد المهام‬
‫‪ .‬والمتطلبات التي سيؤدي بها البرنامج‪ ،‬ويجب أن تتصف‪ 0‬هذه المهام بالدقة العالية‬

‫شاف لسؤال "كيف سنحل المشكلة؟"‪ ،‬وحتى يتم ذلك البد‪.‬‬


‫ٍ‬ ‫ب‬
‫التصميم ‪:‬مرحلة الغايات إيجاد جوا ٍ‬
‫من التخطيط للسبل التي يجب الوصول من خاللها لحلول للمشكلة‬

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

‫صيانة البرمجيّات ‪ ،software maintenance‬تعتبر‪ 0‬مرحلة صيانة البرمجيّات في دورة حياة‬


‫النظام البرمجي المرحلة األطول على اإلطالق‪ ،‬إذ ال تنتهي طوال فترة عمل البرمجيّة؛ أي أنّها‬
‫دائمة حيث تعمل على جعل البرمجيّة مواكبة ألحدث التطورات والمعدات الجديدة بإجراء‬
‫التعديالت عليها وتصحيح األخطاء‪ ،‬وكما تشمل أيضا ً على إمكانيّة إضافة تقنيات جديدة‬
‫للبرمجية‪ .‬كما يمكن تعريفها بأنّها جميع التعديالت التي تطرأ على البرمجيّة بعد االنتهاء منها‬
‫وتسليمها للزبون لغايات تصحيح األخطاء الموجودة أو العمل على رفع مستوى أداء البرمجيّة‬
‫وتحسينها‪ .0‬في ذات السياق‪ ،‬وصفت عمليّة صيانة البرمجيّات بأنّها عبارة عن مجموعة من‬
‫األنشطة يمارسها‪ 0‬المبرمج على ما تم إنتاجه سعيا ً لضمان بقاء البرمجيّة تعمل على أكمل وجه‪،‬‬
‫وتؤ ّدي‪ 0‬الدور المنشود من إنشائها في تشغيل األنظمة‪.‬‬
‫الصف االول ‪ /‬الخوارزميات ‪ /‬االسبوع الرابع عشر والخامس عشر‬

‫تصميم أعلى أسفل وأسفل أعلى‬


‫تعتبر طريقتا التصميم من أعلى ألسفل (باإلنجليزية‪ ،)Top-down :‬وأحيانا‪ 0‬التنزيل[‪( ]1‬‬
‫‪ ،)descendante‬ومن أسفل ألعلى (باإلنجليزية‪ )bottom-up :‬من اإلستراتيجيات‪ 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.‬ابدأ‪.‬‬

‫‪ 2.‬اقرأ قيمٌة ‪. X‬‬

‫‪. Max=X, Min=X 3.‬‬

‫‪ 4.‬لكل قي ٌم ‪ I‬من ‪ 1‬إلى ‪ 14‬قم بما يل ٌي ‪ً:‬‬

‫أ اقرأ قيمٌة ‪. X -‬‬

‫ب إذا كانت ( ‪ ) X> Max‬إذاً ‪. Max=X‬‬

‫وإال إذا كانت ( ‪ ) X< Min‬إذاً ‪. Min=X‬‬

‫‪ 5.‬اطبع قيمٌة ‪. Max ، Min‬‬

‫‪ 6.‬توقف‪.‬‬
‫ٌ‬
‫التالية‪:‬‬ ‫ٌ‬
‫خوارزمية وارسم مخطط انسياٌبي إليجٌاد ناتج متسلسلة الحدود‬ ‫مثال‪ :2‬اكتب‬

‫‪.n/n+1+. . . +1/2+2/3+3/4‬‬
‫ٌ‬
‫الخوارزمية‬ ‫أوالً‪:‬‬

‫‪ 1.‬ابدأ‪.‬‬
‫‪. S=0 2.‬‬

‫‪ 3.‬اقرأ قيمٌة ‪. n‬‬

‫‪ 4.‬لكل قي ٌم ‪ I‬من ‪ 1‬إلى ‪ n‬قم بما يلٌي ‪ً:‬‬

‫)‪)S=S+ I/(I+1‬‬

‫‪ 5.‬اطبع قيمٌة ‪. S‬‬

‫‪ 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.‬ابدأ‪.‬‬

‫‪ 2.‬لكل ق ٌم ‪ I‬من ‪ 1‬إلى ‪ 95‬قم بالتال ‪ً:‬‬

‫أ اقرأ اسم الطالب ‪. Name -‬‬

‫ب ‪. Sum=0 -‬‬

‫ت لكل قي ٌم ‪ J -‬من ‪ 1‬إلى ‪ 8‬قم بالتالي ‪ً:‬‬

‫‪ . i‬اقرأ قيمٌة الدرجة ‪. D‬‬

‫‪. ii . Sum=Sum+ D‬‬

‫ث ‪. Av=Sum/8 -‬‬

‫ج اطبع قيمٌة كل من ‪. Name ، Av -‬‬

‫‪ 3.‬توقف‪.‬‬

‫‪5‬‬
‫ٌ‬
‫التالية‪:‬‬ ‫ٌ‬
‫خوارزمية وارسم مخطط انسيابي إل يجٌاد ناتج متسلسلة الحدود‬ ‫مثال‪ :‬اكتب‬

‫‪.S=1+(1+2)/2+(1+2+3)/3+(1+2+3+4)/4+ . . . +(1+2+. . .n)/n‬‬


‫ٌ‬
‫الخوارزمية‪:‬‬ ‫أوالً‪:‬‬

‫‪ 1.‬ابدأ‪.‬‬

‫‪ 2.‬اقرأ قيمٌة ‪. n‬‬

‫‪. S=0 3.‬‬


‫‪ 4.‬لكل قي ٌم ‪ I‬من ‪ 1‬إلى ‪ n‬قم بما يل ٌي ‪ً:‬‬

‫أ‪. M=0 -‬‬

‫ب لكل قي ٌم ‪ J -‬من ‪ 1‬إلى ‪ I‬قم بما يل ٌي ‪ً:‬‬

‫‪. m=m+ J‬‬

‫ت ‪. S=S+ m/I -‬‬

‫‪ 5.‬اطبع قيمٌة ‪. S‬‬

‫‪ 6.‬توقف‪.‬‬

‫ٌ‬
‫التالية‪:‬‬ ‫ٌ‬
‫خوارزمية وارسم مخطط انسياٌبي إل يجٌاد ناتج متسلسلة الحدود‬ ‫مثال‪ :‬اكتب‬

‫)‪.S=1+(1*2)/(1+2)+(1*2*3)/(1+2+3)+ . . . +(1*2*…*n)/(1+2+…+n‬‬
‫ٌ‬
‫الخوارزمية‪:‬‬ ‫أوالً‪:‬‬

‫‪ 1.‬ابدأ‪.‬‬

‫‪ 2.‬اقرأ قيمٌة ‪. n‬‬

‫‪. S=0 3.‬‬

‫‪ 4.‬لكل قي ٌم ‪ I‬من ‪ 1‬إلى ‪ n‬قم بالتالي ‪ً:‬‬

‫أ‪. M=0 -‬‬

‫ب ‪. K=1 -‬‬

‫ت لكل قي ٌم ‪ J -‬من ‪ 1‬إلى ‪ I‬قم مٌا يلي ‪ً:‬‬

‫‪. i . M=M+J‬‬

‫‪. ii . K=K*J‬‬

‫ث ‪. S=S+ K/M -‬‬

‫‪ 5.‬اطبع قيمٌة ‪. S‬‬

‫‪ 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‬‬

You might also like