منتدى برامج نت | برامج نت | دليل المواقع | العاب فلاش | برامج | عيادة الطب | Free software
العاب افلام موقع منتديات

المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الخورزميات و هياكل المعطيات أساس البرمجة


hamza_delphi
03-08-2006, 08:26 PM
السلام عليكم و رحمة الله و بركاته
أردت أن أفتح هذا الموضوع للنقاش إحساسا مني بدور الخورزميات, و هي الطريقة الوحيدة للوصول إلى عالم الاحترافية .
فالخورزميات أساس البرمجة و أن كل من يريد تجاوزها فلا طائل من برمجته و لا أهداف مرجوة من برمجته غير نوافذ جميلة أنشئها بواسطة مركبات جاهزة لم يقم هو إلا بإختيار لونها و موقعها على النافذة .
ومن أجل ذلك أود إعطاء فكرة عن الخورزميات و ذلك بطرح أمثلة عن برامج مكتوبة بالباسكال أو C أو C++ أو java

و أول مثال هو The Tower of Hanoi و الهدف من هذه اللعبة ألا و هو نقل الاقراص المختلفة الاحجام و الذي هي مرتبة ترتيبا نصاعديا على العمود رقم 1 قصد نقلها إلى العمود رقم 2 و ذلك بعدم وضع أي قرص كبير فوق قرص أصغر منه و بعدم حمل أكثر من قرص في كل مرة

http://isacisco.free.fr/hanoi.gif

و المطلوب هو كتابة برنامج يقوم بإعطاء الأوامر اللا زم إتباعها مثل
من 1 إلى 2
من 1 ألى 3
..
..
....

و الحل مع الشرح بالتفصيل الممل في الرسالة القادمة
و في الأخير أرجو من الجميع المشاركة إما بالامثلة أو بالحلول أو بالشرح


و شكرا
و صلى الله على سيدنا و حبيبنا و نور قلوبنا و سلم تسليما كثيرا

Gangsta
03-09-2006, 09:13 AM
شكرا لك على الموضوع ، موضوع جميل صراحة ، ونحتاج الى تفاعل المزيد من الاعضاء والمبرمجين

rash
03-11-2006, 02:49 AM
مشكور اخي ننتظر المزيد

hamza_delphi
03-12-2006, 08:23 PM
بسم الله الرحمان الرحيم
في هذا الرد أود أن أتطرق لحل المشكلة The Tower of Hanoi و يكون الحل كالآتي :
Function GetThird(a,b:integer):integer
begin
GetThird:=6-(a+b
end

Procedure TowerOfHanoi(N:Integer;From,To:Integer
begin
if N>0 then begin
TowerOfHanoi(N,From ,Getthird(From,To
write(From'---------->'To
TowerOfHanoi(N,Getthird(From,To),To
end
end


و الشرح يكون بالتفصيل في المرة القادمة



و شكرا
و صلى الله على سيدنا و حبيبنا و نور قلوبنا و سلم تسليما كثيرا

hamza_delphi
03-18-2006, 05:51 PM
بسم الله الرحمان الرحيم
هذا الحل أهم مشكلة فيه هي الدالة التراجعية TowerOfHanoi و كيفية التفكير فيها و أهم الخطوات هي :
1- البحث عن نقطة التوقف , فكل دالة تراجعية لا بد أن تحتوي على نقطة توقف لكي لا تكون أو ندخل في دورة إلى المالانهاية . و هنا في هذه الدالة لدينا n=0 هي نقطة التوقف .أي عندما يكون لدينا 0 قرص قصد نقله .
2- البحث عن العلاقة بين N و N-1 و هنا في هذا المثال لدينا العلاقة :
* نعتبر نقل N قرص من العمود رقم FROM إلى العمود رقم TO هي المشكلة
فتكون لدينا Procedure TowerOfHanoi(N:Integer;From,To:Integer
هي المشكلة
* لو نستطيع حمل N-1 قرص من العمود رقم FROM إلى العمود الثالث أو الوسيط و الذي نستطيع تحديده بإستعمال الدالة GetThird و العلاقة هي GetThird=6-(FROM+TO
فيبقى لنا قرص واحد في العمود FROM نستطيع حمله إلى العمود TO
- و هنا يبقى لنا نقل N-1 قرص من العمود الثالث أو الوسيط إلى العمود TO بنفس طريقة السابقة
http://upload.wikimedia.org/wikipedia/commons/4/4f/Tower_of_Hanoi.gif
و هكذا نستطيع أن نجد العلاقة بين N و N-1
فكل نقلة من N قرص هي عبارة عن نقلتين ل N-1 قرص و هذه هي الفكرة الأساسية في حل هذه المشكلة
و هكذا تم بحمد الله شرح مشكلة The TowerOfHanoi و هو يمثل أهم مشكلة للدخول إلى عالم الذكاء الاصطناعي
و هكذا إلى درس آخر في الذكاء الاصطناعي

و شكرا
و صلى الله على سيدنا و حبيبنا و نور قلوبنا و سلم تسليما كثيرا