السلام عليكم ورحمة الله وبركاته،
كل عام وانتم بخير و رمضان كريم وتقبل الله منا ومنكم صالح الاعمال. :)
ارجو المسامحة من الادارة ومن الاعضاء على التقصير ولكن الظروف الحالية التي نمر بها محبطة فعلا. :wacko:
موضوع بدون تكرار اقصد فيه كيفية حل المسائل دون اللجوء الى تعليمات التكرار التقليدية (for, while, do, go to, ... etc ) واستخدام طريقة الاستدعاء الذاتي :happy: . كلما طبق الطالب امثلة اكثر في هذا الموضوع كلما زدا فهمه لهذه التقنية المهمة واستطاع التمكن من حل مسائل صعبة جدا بخطوات بسيطه. :sleep:
في هذا الموضوع ساعطي امثلة بسيطة وبعض التمارين. ساكتب فقط الخوارزمية ويمكن تحويلها بعد ذلك الى اي لغة برمجه. :cool:
مثال 1 : طباعة الاعداد من 1 الى 1000 بدون تكرار.
function MyPrint(x)
begin
if x >0 then
begin
MyPrint(x-1)
print(x)
end
end
============
MyPrint(1000)الخط الفاصل لفصل الدالة عن البرنامج الرئيسي.
سيتم الاستدعاء للدالة بشكل متكرر من الالف الى الصفر وبعد ذلك يتم الرجوع من الصفر الى الالف مرة اخرى. ما يتم كتابته بعد عملية الاستدعاء يتم تنفيذه اثناء العودة وبالتالي سيتم طباعة الاعداد بشكل تصاعدي من الواحد الى الالف.
مثال 2 : طباعة الاعداد من 1000 الى 1 بدون تكرار.
function MyPrint(x)
begin
if x >0 then
begin
print(x)
MyPrint(x-1)
end
end
============
MyPrint(1000)لاحظ ان كل ماعملناه هو نقل امر الطباعة ليتم تنفيذه قبل الاستدعاء وبالتالي سيتم طباعة الاعداد بشكل تنازلي من الالف الى الواحد.
بعض التمارين البسيطة : بدون استخدام التكرار. :)
س1: اكتب خوارزمية لحساب مضروب عدد صحيح موجب يتم ادخاله من قبل المستخدم .
س2: اكتب خوارزمية لحساب مجموع الاعداد من واحد الى 1000.
س3: اكتب خوارزمية لطباعة الاعداد الزوجية بين الواحد وبين عدد صحيح موجب يتم ادخاله من قبل المستخدم.
س4: اكتب خوارزمية لطباعة الاعدادالفردية ثم الاعداد الزوجية بين الصفر و حتى عدد صحيح موجب يتم ادخاله من قبل المستخدم.
مثلا اذا تم ادخال 10 يقوم بطباعة :
1
3
5
7
9
2
4
6
8
10
بالتوفيق