440 likes | 896 Views
خوارزميات و مبادئ برمجة. إعداد و تدريس/ محمود رفيـق الفـرَّا. بلغة جافا. الأسبـوع الثامن. المحاضرة الخامسـة عشر و السـادسـة عشـر جمل الدوران و تطبيقاتها. شعبـة الطالبات. 2010-2011. في هذا الأسبـوع. مفهوم جمل الدوران تطبيقاته أنواعـه و قواعد كتابتها أمثلـة و حلول.
E N D
خوارزميات و مبادئ برمجة إعداد و تدريس/ محمود رفيـق الفـرَّا بلغة جافا الأسبـوع الثامن المحاضرة الخامسـة عشر و السـادسـة عشـر جمل الدوران و تطبيقاتها شعبـة الطالبات 2010-2011
في هذا الأسبـوع إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 • مفهوم جمل الدوران • تطبيقاته • أنواعـه و قواعد كتابتها • أمثلـة و حلول
مفهوم جمل الدوران إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 • الدوران أو التكرار هو تنفيذ عدد من الأوامر ككتلة واحدة بناءً على شرط معين لعدد من المرات. • و سمي دورانـًا لأن سيـر العمليات يتكرر بشكل دوراني كما تشاهد.
من تطبيقاته واجبـــــــ 8.1 اذكري المزيد من التطبيقات التي نحتاج فيها إلى استخدام جمل الدوران إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 • من التطبيقات التي نحتاج فيها إلى استخدام مفهوم الدوران/ التكرار ... • طباعة جدول الضرب للأرقام • طباعة الأرقام الفرديـة. • طباعة الأرقام الزوجيـة. • البحث في مجموعة من الأرقام. • حساب معدل السكان في دول معينة. • ترتيب مجموعة من الأرقام تصاعدي أو تنازلي. • رسم تشكيلات معينـة.
أنواعـه و قواعد كتابتها إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 • لتنفيذ عملية الدوران هناك مجموعة من الجمل التي يمكن استخدام أي منها حسب الحاجـة و حسب التطبيق.و هي • for • while • do … while • هناك بعض التطبيقات يمكن الحصول عليها (تطبيقها) بكافة الأنواع و هناك البعض الآخر لا يمكن إلا بواحد منها.
صيـغـة For • عندما نحتاج إلى تكرار تنفيذ مجموعة من الجمل أو الأوامر بعدد محدد من المرات فإن أنسب الصيغ هي صيغة for • تكتب كما يلي: for( counter ; cond. ; expr) { ….. } تعبير محدد يتم من خلاله التعديل على قيمة العداد ليقترب في كل مرة من كسـر صحة الشرط و ليتم بذلك إيقاف التكرار بعد عدد معين عداد يتم تعريفه لتحديد بداية الانطلاق للتكرار و قد يبدأ من الكبير للصغير أو العكس شرط استمرار التكرار و هو مرتبط غالبا بقيمة العداد إعداد / أ. محمود رفيق حمدي الفرا 2010-2011
طريقة تنفيذ الدوران for ابدأ خطـأ الشرط نهاية انتبـه صحيح القيمة البدائيـة للعداد يتم حسابها فقط مرة واحدة عند بداية الدوران و لا يتكرر تنفيذها بعد ذلك. تنفيذ الأحـداث تعديل قيمة العداد إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 • الدوران باستخدام if يتم من خلال فحص الشرط في كل دورة ثم ينفذ المطلوب لمرة واحدة ثم يقوم بتعديل قيمة العداد (زيادة / نقصان) ثم يفحص الشرط و هكذا ...
مثـالـ : تطبيق الدوران باستخدام For 8.1 8.2 واجبـــــــ ارسمي مخطط سير العمليات المناسب للمثال السابق إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 اكتبي برنامج يقوم بطباعة الأرقام من 1 إلى مليون باستخدام جملة طباعة واحدة فقط. الحل
مثـالـ : تطبيق الدوران باستخدام For 8.1 واجبـــــــ 8.3 أعيدي برمجة المثال العلوي مع طباعة فقط الأرقام الزوجيـة من 1 إلى مليـون. إعداد / أ. محمود رفيق حمدي الفرا 2010-2011
ملاحظات وتنبيهات • عند وضع فاصلة منقوطة بعد جملة for فإنَّ المترجم يعتبر هذا التكرار لا يقوم بتنفيذ جمل أخرى غير زيادة العداد, و بالتالي يقوم المترجم بتنفيذ الجمل التي تلي التكرار مرة واحدة فقط. و هذا يعرف باسم (خطأ منطقي) في كثير من الأحيان. • استبدال الفاصلة المنقوطة (;) بفاصلة (,) يعتبر خطأ برمجي يتم اكتشافه من المترجم عند الترجمـة (Compiling). • عند الحاجـة لجعل التكرار يشتمل أكثر من جملة (أمر برمجي) لابد من احتوائهم داخل أقواس }{ ليتم تكرارهم كجملة واحدة.
مثـالـ : تطبيق الدوران باستخدام For 8.2 واجبـــــــ 8.4 اكتبي الخوارزمية المناسبة للمثال السابق. إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 اكتبي برنامج يقوم باستقبال خمسـة أرقام صحيحة موجبة من المستخدم و يطبع أصغرهم على أن تستخدم جملة إدخال واحدة فقط. الحل
مثـالـ : تطبيق الدوران باستخدام For 8.2 واجبـــــــ 8.5 أعيدي برمجة المثال العلوي لطباعة أكبرهم إعداد / أ. محمود رفيق حمدي الفرا 2010-2011
جملة while int x = number; while (Condition) { // actions x--; } تعريف متغير يتم استخدامه كعداد جملة يتم من خلالها تعديل قيمة العداد بصورة تجعل من الممكن أن يصبح خطأ في وقت ما الشرط الذي سيستمر التكرار بناءً على صحته من عدمه و يتم فحصه قبل كل تكرار إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 • جملة while من الجمل التي تمكننا من تكرار عدد من الأوامر حسب عدد معين أو شرط منطقي معين. • و تكتب بالصورة التالية
Condition true Actions false طريقة عمل جملة while Start End إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 • و جملة while كما تلاحظ تقوم بفحص الشرط قبل كل عملية تنفيذ للأوامر و عليه تسمى على ذلك (pre-test).
مثـالـ : تطبيق الدوران باستخدام while 8.3 8.6 واجبـــــــ ارسمي مخطط سير العمليات المناسب للمثال السابق إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 اكتبي برنامج يقوم بطباعة الأرقام الزوجيـة من 1 إلى 50. الحل
مثـالـ : تطبيق الدوران باستخدام while 8.3 واجبـــــــ 8.7 أعيدي برمجة المثال العلوي مع طباعة فقط الأرقام الأوليـة من 1 إلى 100. إعداد / أ. محمود رفيق حمدي الفرا 2010-2011
ملاحظات وتنبيهات • خطأ شائع: عند وضع فاصلة منقوطة بعد جملة whileفإنَّ المترجم يعتبر هذا التكرار لا يقوم بتنفيذ جمل أخرى غير فحص الشرط لأول مرة فقط, و بالتالي يقوم المترجم بتنفيذ الجمل التي تلي التكرار مرة واحدة فقط. و هذا يعرف باسم (خطأ منطقي) في كثير من الأحيان. • خطأ شائع: عدم احتواء متغير التكرار على قيمة بدائية يسبب خطأ برمجي • خطأ شائع: عدم وجود أمر برمجي يتم من خلاله تغيير القيمة التي يعتمد عليها الشرط يؤدي إلى تكرار لا نهائي و هذا خطأ منطقي. • عند الحاجـة لجعل التكرار يشتمل أكثر من جملة (أمر برمجي) لابد من احتوائهم داخل أقواس }{ ليتم تكرارهم كجملة واحدة.
مثـالـ : تطبيق الدوران باستخدام while 8.4 8.8 واجبـــــــ اكتبي الخوارزمية المناسبة للمثال العلوي بالطريقتين المعتمدتين. إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 يستقبل من المستخدم عدد من الأرقام الصحيحة و يطبع أصغرهم على أن يكون الرقم الأول هو عدد الأرقام التي سيدخلها المستخدم للبرنامج. الحل
مثـالـ : تطبيق الدوران باستخدام while 8.4 واجبـــــــ 8.9 افترضي أن المستخدم أدخل في المثال السابق كل أرقامه أكبر من مليون !! فما الحل ؟ إعداد / أ. محمود رفيق حمدي الفرا 2010-2011
جملة do…while تعديل على قيمة العداد أو العلم بحيث يمكن بعد وقت معين كسر صحة الشرط int x = number; do { // actions x--; } while (Condition) تعريف متغير يستخدم كعداد أو علم يتم فحصه في عملية تكرار الشرط الذي سيستمر التكرار بناءً على صحته من عدمه و يتم فحصه بعد كل تكرار إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 • جملة do…while من الجمل التي تمكننا من تكرار عدد من الأوامر حسب عدد معين أو شرط منطقي معين. • و تكتب بالصورة التالية
طريقة عمل جملة do…while صحيح بدايـة Condition Actions خاطئ نهـايــة إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 • لاحظي أنَّ الشرط في جملة do…while يتم فحصه في كل تكرار بعد التكرار و ليس قبل و بالتالي فهو ينفذ على الأقل تكرار واحد و يسمى بذلك Post-test
مثـالـ : تطبيق الدوران باستخدام do…while 8.5 8.10 واجبـــــــ اكتبي الخوارزمية المناسبة للمثال المطلوب إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 اكتبي برنامج يقوم بحسـاب متوسط الأعداد الصحيحة من 1 إلى 50. الحل
مثـالـ : تطبيق الدوران باستخدام do…while 8.5 8.11 واجبـــــــ مستفيدة من فهمك للمثال السابق , اكتبي برنامج يطبع مجموع مربعات الأرقام من 1 إلى 50 (مثال: 1 +4+9+ 16 + ....) إعداد / أ. محمود رفيق حمدي الفرا 2010-2011
ملاحظات وتنبيهات • خطأ شائع: نسيـان وضع فاصلة منقوطة بعد شرط جملة do…whileفإنَّ المترجم يعتبر هذا خطأ برمجي لأن الفاصلة المنقوطة تعتبر جزء من التكرار في هذه الصيغة. • خطأ شائع: عدم احتواء متغير التكرار على قيمة بدائية يسبب خطأ برمجي • خطأ شائع: عدم وجود أمر برمجي يتم من خلاله تغيير القيمة التي يعتمد عليها الشرط يؤدي إلى تكرار لا نهائي و هذا خطأ منطقي. • عند الحاجـة لجعل التكرار يشتمل أكثر من جملة (أمر برمجي) لابد من احتوائهم داخل أقواس }{ ليتم تكرارهم كجملة واحدة.
مثـالـ : تطبيق الدوران باستخدام do…while 8.6 8.12 واجبـــــــ اكتبي الخوارزمية المناسبة للمثال العلوي بالطريقتين المعتمدتين. إعداد / أ. محمود رفيق حمدي الفرا 2010-2011 اكتبي برنامج يستقبل من الطالب خمس درجات لمساقاته ليطبع البرنامج مجموعة درجاته و متوسطه. الحل
مثـالـ : تطبيق الدوران باستخدام do…while 8.6 واجبـــــــ 8.13 افترضي أن عدد المساقات غير معروف و سيتم إدخاله من الطالب , كذلك البرنامج سيطبع للطالب تقديره (ممتاز , جيد جدا , ...) و ليس المتوسط ... قومي بتعديل البرنامج بناً على هذه التعديلات إعداد / أ. محمود رفيق حمدي الفرا 2010-2011
الفارق بين صيغ while while do…while • فحص الشرط يكون قبل كل تكرار (Pre-Test) • يمكن لها أن تنفذ (تكرر) صفر أو أكثر من المرات حسب صحة الشرط • لا يسمح أن تنتهي بفاصلة منقوطة و إلا يعتبر خطأ منطقي في كثير من الأحيان. • فحص الشرط يكون بعد كل تكرار (Post-Test) • يمكن لها أن تنفذ (تكرر) على الأقل مرة واحدة أو أكثر • الانتهاء بفاصلة منقوطة (لازم) و إلا يعتبر خطأ برمجي do { // actions } while (condition); while (condition) { // actions }
مفهوم الجملة break • الجملة البرمجيـة breakتستخدم لإجبــار المترجم على الخروج من التكرار حتى و إن لم يتم عدد التكرارات المخصصة له سلفـًا. • و بالتالي يخرج المترجم لتنفيذ أول أمر برمجي بعد التكرار مباشرة. • و يمكن استخدامها في التكرارات أو جمل الاختيار عامة و لكنَّ استخدامها في جملة switch يعتبر إجبـاري.
مفهوم الجملة continue • الجملة البرمجيـة continue تستخدم لإجبــار المترجم على إنهاء الدورة الحالية من التكرار حتى و إن لم يتم الدورة لنهايتها, و لكن المترجم يعود لبداية الدوران و يكمل من حيث وصل العداد. • و يمكن استخدامها في التكرارات أو جمل الاختيار عامة و لكنَّ استخدامها في جملة switch يعتبر إجبـاري.
الفارق بين جملة break و جملة continue باستخدام continue سيستمر التكرار في طباعة الأرقام من 1 إلى 4 و عندما تصبح قيمة العداد count = 5 سيتم تجاهل بقية الدورة و يعود لبداية الدوران مستأنفـًا من العدد 6 و يكمل طباعة
الفارق بين جملة break و جملة continue باستخدام break سيستمر التكرار في طباعة الأرقام من 1 إلى 4 و عندما تصبح قيمة العداد count = 5 سيخرج من التكرار مجبرًا لانه سيشاهد break
شكـرًا لإنصاتكم لنبدأ النقاش فنستفيـد... إعداد / أ. محمود رفيق حمدي الفرا 2010-2011
إيمانك × ميزانكـ قال الإمام بن تيمية رحمه الله تعالى: الإسناد من الدين و لولا الإسناد لقال من شاء ما شاء
في المحاضرة القادمـة إن شاء الله آخر موعد لتسليم الواجبات يوم 30 / 12 / 2010 الساعة العاشرة مساءً تدريبات شاملة على جمل الدوران