اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
طرق حل املسائل البرمجية :الجزء االول يتمكن املبرمج الخبير expert programmerمن حل املسائل البرمجية بسرعة بسبب خبرته التي تمكنه من تحليل املسألة البرمجية و تصميم الحل لها ثم كتابة الكود البرمجي بلغة برمجة مناسبة دون تعقيد .أما املبرمج املبتدئ فيحتاج الى وقت اطول للتحليل و تصميم الحل (صياغة الخوارزمية). لذلك ،البد من اتباع عدد من املراحل التي تمكنه من تصميم الخوارزمية املناسبة للحل. الخوارزميات Algorithms اي خوارزمية تتكون من مجموعة من التعليمات ( .)instructionsهذه التعليمات هي: Input/ output statements Computable expressions Assignments هذه التعليمات يمكن ان تتكرر في خطوات الحل. ُ عملية التخلص من الفقرات املكررة تسمى .refinementو هي عملية مهمة جدا اذ تمكن املبرمج من الحصول على الحل االمثل للمسالة البرمجية. Top-Down Design عملية تجزئة املسألة البرمجية الى أجزاء صغيرة و تصميم الحل لكل جزء على حدة تعتبر من اشهر ً الطرق لحل املسألة البرمجية و تسمى ،Top-Down Designكما تعبر هذه الطريقة ايضا عن عملية الصقل التدريجي لخطوات الحل ،بمعنى آخر ،وصف الحل املمكن و محاولة التخلص من العمليات املكررة قدر االمكان. خطوات التجزئة: .1البحث عن عملية و عكسها ً قد يحتوي الحل على مجموعة من الفرضيات .مثال :الرقم ينتمي الى فئة االعداد الصحيحة املوجبة :ص= } {......1،2،1 ً أو قد يحتوي على مجموعة من الشروط .مثال :اذا كان الرقم اكبر من الصفر..................... في هذه الحالة ،يتم التعبير عن العملية بجملة (اذا كان)......... If statement مثال .1 :اكتب خوارزمية اليجاد الرقم االكبر بين ثالثة ارقام.
1
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
.2البحث عن عمليات مكررة يمكن ان تتكرر التعليمة الواحدة او مجموعة من التعليمات لعدد من املرات .n في هذه الحالة البد من شروط للتحكم في عدد مرات التكرار .هذه العملية يمكن اختصارها ً ُ حاسوبيا في حلقة تكرار تسمى .loop للتحكم في التكرار البد من وضع شروط معينة وفق عمليات محددة تتمثل في التالي: int i=0 تحديد القيمة االبتدائية للحلقة i<=5 تحديد عدد مرات التكرار i++ تحديد مقدار الزيادة مثال :اكتب خوارزمية لطباعة االرقام من 1الى .11
.1البحث عن مهمة مكررة يمكن ان تحتوي الخوارزمية على مهام مستقلة مكررة مثل معرفة أكثر من قيمة مالية محلية ً بالدوالر يتم ادخالها دوريا .في كل مرة يتم ادخال قيمة محلية ،يتم تحويلها الى الدوالر و هكذا .اذن ً ُ نحن بحاجة الى مهمة تتكرر كلما الزم االمر .هذه العملية تترجم حاسوبيا الى دالة او اجراء ). function (method مثال :اكتب خوارزمية ليجاد قيمة مبلغ بعد تحويله من العملة املحلية الى الدوالر. .4البحث عن بيانات من نفس النوع يتميز الحاسوب بقدرته على هيكلة البيانات املكررة التي تشترك في سمات معينة او صفات محددة مثل االرقام الصحيحة .بمعنى التعامل معها بطريقة خاصة سواء من ناحية التخزين في الذاكرة او العمليات املقامة عليها .و هناك انواع كثيرة من هياكل البيانات ابسطها هي املصفوفات .arrays
2
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
التعبير عن الخوارزميات فيما سبق ،تم التعبير عن الخوارزميات باللغة الطبيعية natural languageعن طريق سرد العمليات ً و االحداث بالكلمات و مزجها بالعمليات الحسابية كلما لزم االمر .يمكن التعبير ايضا عن الخوارزميات ُ بالرسوم و االشكال الهندسية التي لها معنى و التي تسمى باملخططات االنسيابية .Flowchart املخططات االنسيابية (خرائط التدفق) flowchart هي عبارة عن مجموعة من الرسومات التي تصف خطوات الحل (خطوات سير البرنامج الحاسوبي). ً بطريقة مرئية .visualizationيتم تصميم املخطط وفقا لقواعد و قوانين محددة حيث لكل شكل معنى .أهم هذه االشكال ما يلي:
3
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
توجد بعض االشكال االضافية التي يمكن استخدامها في رسم flowchartكما في الجدول التالي:
كما يمكن وصف أهم العمليات الرسومية كما في الجدول التالي:
4
7102 خريف:الفصل الدراس ي
مبروكه معيوف.د
09/11/2017 :GS101 اساسيات البرمجة
general rules for flowcharts القواعد العامة لرسم املخططات االنسيابية كل اشكال املخطط متصلة مع بعضها البعض باسهم.1 All boxes of the flowchart are connected with Arrows. (Not lines)
و مخرج واحد فقط من االسفل ما عداtop من االعلىinput لكل شكل مدخل واحد فقط.2 .)if statement( شكل القرار Flowchart symbols have an entry point on the top of the symbol with no other entry points. The exit point for all flowchart symbols is on the bottom except for the Decision symbol.
اما على جانبيه أو من االسفل و أحد،two exit ) لديه مخرجانif statement( شكل القرار.1 .الجوانب The Decision symbol has two exit points; these can be on the sides or the bottom and one side
يمكن ان يعود التدفق الى اي شكل في االعلى. املخطط يتدفق من اعلى الى اسفل، بصفة عامة.4 .)loop( متى لزم االمر Generally a flowchart will flow from top to bottom. However, an upward flow can be shown as long as it does not exceed 3 symbols.
ُ حلقة الوصل تستخدم للربط بين االشكال املعزولة في مكان آخر من الرسمة مثل ربط شكل.5 .في صفحة مع شكل آخر في صفحة أخرى Connectors are used to connect breaks in the flowchart. Examples are: From one page to another page. From the bottom of the page to the top of the same page. An upward flow of more then 3 symbols
) لها مخطط مستقلprocedure (االجراءاتmethods و الدوالsubroutines البرامج الفرعية.6 .عن املخطط الرئيس ي Subroutines and Interrupt programs have their own and independent flowcharts
predefined process أو شكلterminal كل املخططات تبدأ بالشكل.7 All flow charts start with a Terminal or Predefined Process (for interrupt programs or subroutines) symbol.
. أو حلقة مستمرةterminal كل املخططات تنتهي بالشكل.8 All flowcharts end with a terminal or a contentious loop.
5
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
اهمية املخططات االنسيابية (خرائط التدفق) .0االتصال و التواصل :communicationيمكن استخدامها كطريقة جيدة للتواصل املنطقي للنظام املصمم. Communication: A Flowchart can be used as a better way of communication of the logic of a system and steps involve in the solution, to all concerned particularly to the client of system.
.7التحليل الفعال :يمكن تحليل املشكلة بطريقة فعالة عن طريق املخطط االنسيابي حيث معظم الناس يفهمون االشكال و معناها بطريقة اسرع من الكلمات Effective analysis: A flowchart of a problem can be used for effective analysis of the problem
.3صيانة البرنامج بكفاءة :يمكن صيانة البرامج بسهولة من خالل املخطط االنسيابي Efficient Program Maintenance: Once a program is developed and becomes operational it needs time to time maintenance. With help of flowchart maintenance become easier.
ُ .4توثيق البرنامج :املخططات االنسيابية هي جزء حيوي إلعداد وثيقة برنامج جيدة تستخدم فيما بعد ملعرفة مكونات البرنامج و تعقيد البرامج الكبيرة و غيرها. Documentation of Program/System: Program flowcharts are a vital part of a good program documentation. Program document is used for various purposes like knowing the components in the program, complexity of the program etc.
.5كتابة الكود :يمكن تحويل املخطط االنسيابي الى برنامج بسهولة اكثر من الكلمات Coding of the Program: Any design of solution of a problem is finally converted into computer program. Writing code referring the flowchart of the solution become easy.
كما يساعد املخطط االنسيابي املبرمج في التالي: .0توضيح صورة متكاملة للخطوات املطلوبة لحل املسائل في ذهن املبرمج. .7تشخيص األخطاء التي تقع عادة والتي يعتمد اكتشافها على وضع التسلسل. .3تسهيل إدخال التعديالت في أي مكان بالتخطيط. .4تسهيل متابعة التفاصيل الدقيقة والتفرعات الكثيرة من خالل املخطط. .5تعتبر املخططات مراجع لحل املسائل املشابهة لها.
6
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
تابع :طرق حل املسائل البرمجية :الجزء االول الخوارزميات و املخططات االنسيابية :algorithms & flowchartsامثلة تطبيقية على ما سبق السؤال االول :اكتب خوارزمية إليجاد مساحة دائرة قطرها 72سم ،ثم ارسم flowchartلها. **الحل: لكتابة الخوارزمية للسؤال املعطى ،نتبع الخطوات التالية: ً أوال :التحليل (تحليل السؤال) تحديد outputو هو مساحة الدائرة area تحديد inputو هو قطر الدائرة r =28 تحديد املعالجة (العمليات املطلوبة للحصول على : (output قانون مساحة الدائرةArea = 3.14 * r * r : ً ثانيا :التصميم (تصميم الحل :الخوارزمية) start let r =28 area = 3.14 * r * r print area stop املخطط االنسيابي :flowchart start
r = 28 area=3.14*r*r Print area
stop
7
1. 2. 3. 4. 5.
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
**اعد حل السؤال السابق إليجاد مساحة اي دائرة. السؤال الثاني :اكتب خوارزمية إليجاد الرقم االكبر بين ثالثة ارقام .ارسم .flowchart **الحل: لكتابة الخوارزمية للسؤال املعطى ،نتبع الخطوات التالية: ً أوال :التحليل (تحليل السؤال) تحديد outputو هو الرقم االكبر max تحديد inputو هو ثالثة ارقام مدخلة a, b, c :input تحديد املعالجة (العمليات املطلوبة للحصول على : (output **يوجد شرط (ان يكون الرقم املخرج اكبر االرقام املدخلة) اذن ،البد من التحكم في تعليمات البرنامج بحيث تحدد فقط الرقم االكبر: نحن بحاجة ل ( أذا كان ) if ............... ً ثانيا :التصميم (تصميم الحل :الخوارزمية) 1. start 2. read a, b, c )3. if( a > b ; max = a else ;max = b )4. if (max < c ; max = c 5. print max 6. stop
8
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
املخطط االنسيابي :flowchart
السؤال الثالث :اكتب خوارزمية إليجاد حل املعادلة التالية:
**الحل: لكتابة الخوارزمية للسؤال املعطى ،نتبع الخطوات التالية: ً أوال :التحليل (تحليل السؤال) ً تحديد outputو هو قيمة املعادلة Fبناءا على قيمة Xاملدخلة تحديد inputو هو الرقم X تحديد املعالجة (العمليات املطلوبة للحصول على : (output **يوجد شرط :اذا كان ( ) ifالرقم Xاصغر من الصفر اطبع ناتج املعادلة -X و إال (( )elseالعكس) :الرقم Xاكبر من أو يساوي الصفر ،اطبع ناتج املعادلة X
9
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
اذن ،البد من التحكم في تعليمات البرنامج بحيث يتم تحديد اي معادلة نطبع ناتجها: نحن بحاجة ل () if……else ً ثانيا :التصميم (تصميم الحل :الخوارزمية) 1. start 2. read X ) 3. if ( X < 0 ; ) print - ( X else print X 4. stop املخطط االنسيابي :flowchart
***اعد حل السؤال السابق للمعادلة التالية:
11
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
السؤال الرابع :اكتب خوارزمية لطباعة مجموع االرقام من 0الى 01 **الحل :لكتابة الخوارزمية للسؤال املعطى ،نتبع الخطوات التالية: ً أوال :التحليل (تحليل السؤال) تحديد outputو هو مجموع االرقام من 0الى 01و نضع الناتج في sum تحديد inputو هو االرقام من 0الى 01 تحديد املعالجة (العمليات املطلوبة للحصول على : (output **يوجد عملية جمع (متكررة): sum = 1+2+3+4+5+6+7+8+9+10 يمكن االستعانة بالحلقة للحصول على الحل االمثلfor : ً ثانيا :التصميم (تصميم الحل :الخوارزمية) 1. start 2. let sum = 0 )3. for ( i = 1 to 10 ; sum = sum + i 4. print sum 5. stop :flowchart
11
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
** اعد كتابة السؤال السابق لطباعة االعداد الفردية و مجموعها مرة ،و اخرى لطباعة االعداد الزوجية و مجموعها. ** اعد كتابة السؤال السابق إليجاد االعداد الفردية و الزوجية فيما بين 0و .011 السؤال الخامس :اكتب خوارزمية ملعرفة عدد الرموز املدخلة من لوحة املفاتيح للسطر الواحد. **الحل: لكتابة الخوارزمية للسؤال املعطى ،نتبع الخطوات التالية: ً أوال :التحليل (تحليل السؤال) تحديد outputو هو عدد الرموز املدخلة من لوحة املفاتيح count تحديد inputو هو الرمز املدخل ch تحديد املعالجة (العمليات املطلوبة للحصول على : (output حساب عدد الرموز املدخلة ،كلما ادخلنا رمز من لوحة املفاتيح ،زاد العدد (نحتاج عداد (count count = count + 1 لكن لدينا شرط (ينتهي االدخال عندما ينتهي السطر ')enter: '\n و لدينا حلقة تكرار !!! الحظ ان عدد مرات التكرار للحلقة غير معروف...ال يمكننا استخدام for في هذه الحالة ،نستخدم التعليمة whileالتي تتطلب فعل ما يلي: .0تحديد القيمة االبتدائية لها ch=null .7تحديد الشرط لها )'while (ch <> '\n .3تغيير القيمة االبتدائية في محاولة للخروج من الحلقة read ch ً ثانيا :التصميم (تصميم الحل :الخوارزمية) 1. start 2. let ch = null 3. let count = 0 4. read ch )'5. while (ch <> '\n ; count = count + 1 ; read ch 6. print count 7. stop
12
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
املخطط االنسيابي :flowchart
** هل يمكن ان تعادل حلقة forحلقة while؟ وضح ذلك؟
13
الفصل الدراس ي :خريف 7102
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
العمليات الحسابية arithmetic operations يتميز الحاسوب بقدرته على أداء العمليات بمختلف انواعها ،من اشهر هذه العمليات ما يلي: oالعمليات املنطقية logical operations العمليات املنطقية الحاسوب تتضمن العالمات املنطقية التالية: ُ ANDو تمثل في لغة C++ب&& ُ ORو تمثل ب|| ُ NOTو تمثل ب! و يمكن مزج أكثر من عالمة منطقية مثلa && b || c : و يكون ناتج العملية املنطقية إما trueأو .false oالعمليات الحسابية arithmetic operations ُ تمثل العمليات الحسابية ،/ ،* ،- ،+كما في الرياضيات .و ترتب هذه العمليات حسب ً االسبقية .فالضرب و القسمة أوال ثم الجمع و الطرح إال اذا كانت هذه العمليات تحتوي على االقواس ،في هذه الحالة ،يتم فك االقواس قبل كل ش يء ،ثم ُتجرى العمليات حسب االسبقية. مثال :وضح ترتيب العمليات الحسابية ،ثم اكتب خوارزمية لطباعة ناتج العملية الحسابية التالية: )x+3*(2x-y/10+z oالعمليات العالئقية تتضمن العمليات العالئقية العالمات التالية: < >= ، <= ، != ، == ، > ، و هي تدخل في تكوين الشرط .condition
14
اساسيات البرمجة 09/11/2017 :GS101
د .مبروكه معيوف
الفصل الدراس ي :خريف 7102
استنتاج املهام functions يمكن تجزئة الحل الى مجموعة من الحلول الجزئية (املهام الفرعية) التي تنفذ مهمة محددة متى لزم االمر (استدعاء الدالة) ،فقد يحتوي الحل للبرنامج الواحد على مجموعة من الحلول الصغيرة التي يتكرر تنفيذها اكثر من مرة (استدعاء ) callو تحت ظروف مختلفة (بيانات متغيرة) .في هذه الحالة ،يتم وضع التعليمات التي تؤدي مهمة معينة مع بعضها البعض في جزء ما من برنامج الحل و يتم اعطاء اسم لهذا الجزء ليتم فيما بعد استدعاءه عن طريق اسمه (اسم املهمة function .)nameيمكن ان ُيرجع هذا الجزء قيمة ( ،)returnو يمكن ان يستقبل بيانات (.)parameter مثال :اكتب خوارزمية ليجاد مضروب عدد ما.
15