منتديات سحر الكلام لايف
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.


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


دخول
اسم العضو:
كلمة السر:
ادخلني بشكل آلي عند زيارتي مرة اخرى: 
:: لقد نسيت كلمة السر
احصائيات
هذا المنتدى يتوفر على 371 عُضو.
آخر عُضو مُسجل هو قمر صباح فمرحباً به.

أعضاؤنا قدموا 5979 مساهمة في هذا المنتدى في 1722 موضوع
بحـث
 
 

نتائج البحث
 
Rechercher بحث متقدم

 

 لغة البرمجة Prolog

اذهب الى الأسفل 
5 مشترك
كاتب الموضوعرسالة
s7r alklam
المدير العام
المدير العام
s7r alklam


الدولة : سوريا
الاوسمة : وسام التواصل
الجنس : ذكر
عدد المساهمات : 499
نقاط : 34757
التقيم : 14
تاريخ التسجيل : 15/04/2009

لغة البرمجة Prolog Empty
مُساهمةموضوع: لغة البرمجة Prolog   لغة البرمجة Prolog I_icon_minitime2010-04-19, 4:58 am

بسم الله الرحمن الرحيم .
السلام عليكم ورحمة الله وبركاته .

لغة البرمجة Prolog والتي اخترعها الين كولمر ايور هي واحدة من أشهر اللغات المتخصصة في مجال الذكاء الإصطناعي ، وتعتمد اللغة على أسلوب المنطق في البرمجة ومن كلمة programmation en logique الفرنسية تم اشتقاق الكلمة الجديدة لترمز للغة .
*** المصدر : ويكيبديا .

وتعتبر اللغة Prolog قديمة نسبياً هناك لغات أخرى أصبحت أحدث مثل LISP ، لكن اللغة القديمة التي ظهرت في سبعينيات القرن المنصرم لا تزال تحتفظ بقدراتها حتى هذه اللحظة .

بداية كونك مبرمج تطبيقات عادية ب .net أو Java أو C++ لا يعني انك ستجد نفس ما تعلمته في برولوج ، أنس الأمر فالموضوع مختلف كلياً ، ولكنه سهل وبسيط ، حيث تعتمد برولوج في الأساس على العلاقات المنطقية بين الأشياء ، ويتم في هذه الحالة انشاء ما يعرف باسم ( قاعدة المعلومات Information Base ) وهي مختلفة عما عهدناه في عالم قواعد البيانات DataBase .


أيضاً ال Prolog متغيرة بالكامل ، فلا يمكن تحديد عدد أكوادها حيث أن البرنامج يتعلم أثناء عمل Run له وبالتالي عدد السطور قد يزيد أو ينقص حسب ما تعلمه البرنامج خلال هذه المراحل .


كيف أبدأ ؟

خطوتك الأولى للبداية تحتاج منك إلى استخدام أداة ما لتنفيذ أكوادك ، ستجد الكثير من الأدوات ، ولكني وجدت نسخة مناسبة اسمها Amzi Development Environment أثناء تصفحي في الموسوعة العربية ، لذا تستطيع أن تجد رابطها هنا :
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

كل ما عليك هو فتح ملف جديد ، وابدأ بكتابة الأكواد ، بعد الانتهاء قم باختيار Listener ثم Start لبدء التنفيذ .
مجدداً قم بالذهاب إلى Listener ومن ثم اختر Consult ومنه قم باختيار الملف الذي كتبت فيه الأكواد .
الخطوة الاخيرة ، هي البدء باستخدام البرنامج لعمل العلاقات ، سنشرح مثالاً تطبيقياً في الفقرة اللاحقة .


كيف أعمل ؟

كما ذكرنا في أول الدرس فإن Prolog تعتمد على العلاقات المنطقية ، فيمكنني القول مثلاً :
رمز:
Human(Ahmed)
Car(Toyota)
Human(Khaled)


والمعنى باختصار ، أن أحمد و خالد من نوع انسان فيما تويوتا هي من نوع عربة .
جرب كتابة هذه الأسطر ، ومن ثم قم بتشغيل البرنامج كما أوضحنا في الجزء أعلاه (Listener -> Start ثم Listener -> Consult)

ومن ثم ابدأ بكتابة هذه الأسئلة :
رمز:
?- Human(V).


هنا أن تقوم بسؤال البرنامج عن جميع من هم من النوع Human لتضعهم في المتغير V حيث سيقوم بعرضهم لك ، لا تنس أن يكون V حرف كابتيل .
طبعاً سيدأ بعرضهم علي واحداً وراء الآخر ، يمكنني ضغط Enter لو لم أرد عرض المزيد أو ; للاستمرار في العرض .

النوع الثاني من الأسئلة هو الذي تتوقع منه اجابة منطقية ، مثل هذا السؤال :
رمز:

?- Human(Ahmed).

وسيرد عليك (نعم) أما لو ادخلت هذا السؤال :
رمز:
?- Human(Ali).

فهذا البيان لم نقم بادخاله له في قاعدة المعلومات ، لذا ستكون الاجابة بالنفي .

حتى هذه اللحظة فأنا استخدم البيانات التي قمت بكتابتها ، قد يتساءل شخص ما ، إذن ما هي الجدوى من هذا البرنامج ، هذا ما سنتعرف عليه في الجزئين التاليين .


تركيب العلاقات :

في الأجزاء السابقة كانت الأسئلة اجابات على بيانات مباشرة موجودة في قاعدة المعلومات ، ولكن الجزء الأقوى هو الخاص بالعلاقات المتعددة ، فمثلاً لو بدأنا بعلاقة : أحمد أبو محمد
رمز:
father(ahmed,mohammed)


نستطيع تعريف أن أحمد أبو علي أيضاً :
رمز:
father(ahmed,ali)


وهكذا عندما نبدأ بالاستعلام عن أبناء أحمد ، سنضع الجملة التالية في السؤال :
رمز:
?- father(ahmed,U)

فسيعطينا جميع الأبناء للثابت (أحمد) ، لا تنس ان أي حرف كابتيل يعتبر متغير في البرلوج .


القواعد :


هذه هي النقطة التي نريد الوصول إليها وهي تعريف القواعد ، وهي التي ستحقق لنا الفائدة المرجوة في هذه البرمجة حيث أنه في جميع ما سبق كان البرنامج يجيب من البيانات التي أدخلناها ، أما الآن فسيكون قادراً على الإجابة بناء على مجموعة من المعلومات ومجموعة من القواعد ، وهو ما يفعله العقل البشري في حالة التفكير في الاجابة ، ولنبدأ بأبسط الامثلة مثل ( كل السيارات لديها باب ، وكل الطيارات لها باب )
رمز:
car(X) :- gotadoor(X).
cairplane(X) :- gotadoor(X).


ثم عرفنا مجموعة من السيارات والطائرات :
رمز:
car(toyota)
car(mazda)
car(jagoar)
airplane(ai100)


يمكننا لاحقاً سؤال البرنامج عما إذا كان للسيارة mazda باب ، ومع أننا لم نذكر صراحة ان gotadoor(mazda) إلا أن البرنامج استنتج أن ال mazda لها باب نظراً لإنها سيارة ، وكل السيارات لها باب .

نهاية :
ما زال في عالم ال Prolog الكثير من الأوامر ، لا تنس الادخال والاخراج وال List ... الخ ، ولكن كانت هذه مقدمة سريعة للبدء في العمل ، ربما لم تتضح لك الفائدة بعد ولكن جرب الإطلاع على الرد التالي مباشرة ، ستجد مثالاً حقيقياً لكيفية الاستفادة من مثل هذه التطبيقات .


والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
__________________

مسألة آينشتاين .
________________________________________
من منا لا يعرف مسألة أو لغز آينشتاين الذي انتشر كثيراً على المنتديات وجروبات الياهو وفي كل مكان ، وهو اللغز الذي يعتقد آينشتاين أن 98% من البشر لا يمكنهم حله ، هذا هو اللغز :
اقتباس:
1- توجد خمس منازل لكل منها لون مختلف .
2- يسكن كل منزل شخص من جنسية مختلفه .
3- كل ساكن يفضل ان يشرب مشروبا معين , ويدخن سجائر نوع معين منها,ويحتفظ بحيوان أليف معين .
4- لاأحد من الجيران الخمسة يشرب نفس المشروب أو يدخن نفس النوع من السجائر أو لديه نفس الحيوان الأليف .
معلومات الربط :
* يسكن البريطاني في المنزل الأحمر .
* لدى السويدي كلب.
* يحب الدنماركي شرب الشاي .
* البيت الأخضر على الجانب الأيسر من البيت الأبيض.
* مالك البيت الاخضر يشرب القهوة.
* الشخص الذي يشرب سجائر نوع بال مال لديه طائر.
* الرجل الذي يسكن في البيت الأوسط يشرب الحليب.
* مالك المنزل الأصفر يدخن سجائر نوع دانهيل .
* يسكن النرويجي في المنزل الاول .
* يسكن مدخن سجائر نوع مارلبور مجاورا لمن لديه قطه.
* الرجل الذي لديه حصان يسكن مجاورا لمن يدخن سجائر نوع دانهيل
* مدخن سجائر نوع وينفيلد يحب شرب الجعه (شراب الشعير).
* يسكن النرويجي مجاورا للبيت الأزرق .
* يدخن الألماني سجائر نوع روثمانز.
* مدخن سجائر نوع مارلبور لديه جار يحب شرب الماء.
اقتباس:

المطلوب -.:
تحدد اللون / الجنسيه / الحيوان / المشروب / نوع السجائر لكل واحد مع توضيح : من منهم لديه السمكة (أو أن حيوانه الأليف سمكة)؟
لا توجد خدعه في حل هذا اللغز , بل هو منطق صرف من يعرف الإجابة سيكون من ضمن أذكى أذكياء العالم (2% الأذكياء في العالم).


طبعاً كما ترى ، فاللغز عبارة عن مجموعة من البيانات على غرار (يدخن الألماني سجائر نوع روثمانز) ومجموعة من العلاقات على غرار (مدخن سجائر نوع مارلبور لديه جار يحب شرب الماء) ، وعندما تبدأ انت بحل هذه المشكلة ستبدأ في رص البيانات ومن ثم ربط العلاقات بها ، هذا ما يفعله البرلوج تماماً . ستجد نفسك تعطيه بعض المعلومات والقواعد ليقوم هو باستنتاج الحل . وهذا ما سنقوم به الآن .

بداية هذه المسألة بالغة الانجليزية لنستخلص منها بعض المصطلحات :
رموز HTML البرمجية:

The Brit lives in the red house
The Swede keeps dogs as pets.
The Dane drinks tea
The green house is on the left of the white house
The green house's owner drinks coffee
The person who smokes Pall Mall rears birds
The owner of the yellow house smokes Dunhill
The man living in the center house drinks milk
The Norwegian lives in the first house
The man who smokes Blends lives next to the one who keeps cats
The man who keeps horses lives next to the man who smokes Dunhill
The owner who smokes Bluemaster drinks beer
The German smokes Prince
The Norwegian lives next to the blue house
The man who smokes Blend has a neighbour who drinks water


هذا هو نقل لهذا البيانات بشكل برنامج Prolog :
رمز:
next_to(X, Y, List) :- iright(X, Y, List).
next_to(X, Y, List) :- iright(Y, X, List).
iright(L, R, [L | [R | _]]).
iright(L, R, [_ | Rest]) :- iright(L, R, Rest).
einstein(Houses, Fish_Owner) :-
=(Houses, [[house, norwegian, _, _, _, _], _, [house, _, _, _, milk, _], _, _]),
member([house, brit, _, _, _, red], Houses),
member([house, swede, dog, _, _, _], Houses),
member([house, dane, _, _, tea, _], Houses),
iright([house, _, _, _, _, green], [house, _, _, _, _, white], Houses),
member([house, _, _, _, coffee, green], Houses),
member([house, _, bird, pallmall, _, _], Houses),
member([house, _, _, dunhill, _, yellow], Houses),
next_to([house, _, _, dunhill, _, _], [house, _, horse, _, _, _], Houses),
member([house, _, _, _, milk, _], Houses),
next_to([house, _, _, marlboro, _, _], [house, _, cat, _, _, _], Houses),
next_to([house, _, _, marlboro, _, _], [house, _, _, _, water, _], Houses),
member([house, _, _, winfield, beer, _], Houses),
member([house, german, _, rothmans, _, _], Houses),
next_to([house, norwegian, _, _, _, _], [house, _, _, _, _, blue], Houses),
member([house, Fish_Owner, fish, _, _, _], Houses).
بعد ترجمة هذا المشروع ، تستطيع سؤال البرنامج عن اي منهم وسوف يتتبع البيانات المتاحة له + القواعد ليصل بك إلى الناتج ، هذا هو السؤال الأساسي والخاص بمن يمتلك سمكة :
رمز:
?- einstein(Houses, Fish_Owner).

بداية ، دعني استغل ذكائك وحاول القيام بالحل بمفردك ، يمكنك التأكد من حلك باستخدام برولوج ، وفي النهاية لا تنس أن تحاول أن تتوسع في برولوج فقد تستفيد الكثير لاحقاً .

وفي الختام هذا هو الحل يمكنك اظهاره بتحديد الكلمة التالية بالماوس (الألماني) ، إذا لم يكن هذا هو حلك فأنت مرشح للانضمام إلى نادي ال 98% ، وهي نسبة ليست بسيطة كما ترى

والله الموفق ...
والسلام عليكم ورحمة الله وبركاته .
الرجوع الى أعلى الصفحة اذهب الى الأسفل
ابو العز
عضو
عضو
ابو العز


الجنس : ذكر
عدد المساهمات : 10
نقاط : 26843
التقيم : 10
تاريخ التسجيل : 16/10/2009
العمر : 33
العمل/الترفيه : طالب

لغة البرمجة Prolog Empty
مُساهمةموضوع: رد: لغة البرمجة Prolog   لغة البرمجة Prolog I_icon_minitime2010-04-22, 4:55 am

الله يعطيك العافية على الشرح المفيد
الرجوع الى أعلى الصفحة اذهب الى الأسفل
ابو عمر
عضو
عضو
ابو عمر


الجنس : ذكر
عدد المساهمات : 17
نقاط : 27058
التقيم : 10
تاريخ التسجيل : 13/10/2009

لغة البرمجة Prolog Empty
مُساهمةموضوع: رد: لغة البرمجة Prolog   لغة البرمجة Prolog I_icon_minitime2010-04-22, 5:01 am

نحن تعودنا على مواضيعك الحلوه متلك مشكور ياغالي
الرجوع الى أعلى الصفحة اذهب الى الأسفل
s7r alklam
المدير العام
المدير العام
s7r alklam


الدولة : سوريا
الاوسمة : وسام التواصل
الجنس : ذكر
عدد المساهمات : 499
نقاط : 34757
التقيم : 14
تاريخ التسجيل : 15/04/2009

لغة البرمجة Prolog Empty
مُساهمةموضوع: رد: لغة البرمجة Prolog   لغة البرمجة Prolog I_icon_minitime2010-04-22, 2:57 pm

اهلا اخ ابو العز
اهلا اخ ابو عمر شكرا على المرور الرائع وارجو الفائدة للجميع
الرجوع الى أعلى الصفحة اذهب الى الأسفل
الكونت
مشرف
مشرف
الكونت


الدولة : سوريا
الاوسمة : وسام الاشراف
الجنس : ذكر
عدد المساهمات : 189
نقاط : 34749
التقيم : 4
تاريخ التسجيل : 15/04/2009
العمر : 37
الموقع : www.rame---123@maktoob.com
العمل/الترفيه : طالب جامعة

لغة البرمجة Prolog Empty
مُساهمةموضوع: رد: لغة البرمجة Prolog   لغة البرمجة Prolog I_icon_minitime2010-04-27, 2:18 pm

يسلمووووووووووووووووووووو
الرجوع الى أعلى الصفحة اذهب الى الأسفل
مناجاة
عضو
عضو
مناجاة


الدولة : مصر
الجنس : انثى
عدد المساهمات : 16
نقاط : 25042
التقيم : 0
تاريخ التسجيل : 28/10/2010

لغة البرمجة Prolog Empty
مُساهمةموضوع: رد: لغة البرمجة Prolog   لغة البرمجة Prolog I_icon_minitime2010-12-06, 6:49 am

شكرا جزيلا ليك على المشاركة ممكن كمان تلاقوا معلومات عن البرامج في موقع يضم العديد من خدمات [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] والأجهزة
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
لغة البرمجة Prolog
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1
 مواضيع مماثلة
-
» قوة البرمجة

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتديات سحر الكلام لايف :: كومبيوتر وانكليزي-
انتقل الى: