Lab (1) مقدمة إلى لغة البرولوج Prolog لغة البرولوج ) ) PROLOGهي اختصار programming in ) ) LOGICأي البرمجة المنطقية وتعتمد لغة البرولوج على مفهوم البرمجة المنطقية ( ) Logic Programmingوالتي تتعامل مع جمل )) Statement تحتوي على أشياء ) ) Objectsوالعالقات ( ) Relationshipsالتي تربط بينها وبين الجملة أي أن لغة البرولوج تسمح للمبرمج بتمثيل العالقات بين األشياء وتجميع وتنظيم هذه العالقات حتى يمكن الوصول إلى استنتاج منطقي من الحقائق التي تمثلها تلك العالقات .وذلك على عكس اللغات التقليدية مثل الباسكال وسي التي تطلب من المبرمج كتابة الخطوات التفصيلية التي يجب إتباعها. ومن أهم الفروق بين لغة Prologو اللغات األخرى هي أن لغة Prolog هي لغة دينامكية Dynamicفي مستوى كودها ,حيث أن الكود ممكن أن يتغير مع تنفيذ البرنامج وذلك ببساطة ألن البرنامج يتعلم و يطور من نفسه على عكس اللغات التقليدية مثل السي ,سي ,++جافا ...هي لغات ثابتة Staticعلى مستوى كودها. بمعنى آخر لو وجد لدي كود للغة Prologمكون من 20سطر مع التنفيذ من الممكن أن يزيد إلى 25أو أي عدد آخر على حسب التعلم ,أي أن البرنامج يضيف كود من عنده لمواجهة أمور و أحداث لم يبرمج لمواجهتها. بعكس لغات مثل السي عدد سطور كودها لن يتغير مهما كان السبب و لو صادفها شيء لم تبرمج عليه لتوقف البرنامج Crush البرنامج المكتوب بلغة Prologهو بسيط للغاية و يتكون في األساس من Factsو Rulesأي حقائق و مسلمات و قواعد. Professor (Mohammad, Ali) في هذه الجملة تسمى كلمة ) ) Professorبالمسند أو المحمول ) ) Predicateوتمثل العالقة بين المعامالت ) ) Mohammadهو أستاذ ( ) Ali البرمجة بلغة البرولوج تنقسم إلى ثالثة مراحل هي: -1 إعالن الحقائق عن األشياء ) ) Objectsوالعالقات التي تربط بينها. -2تعريف القواعد ) ) Rulesالتي تحكم كال من األشياء والعالقات التي تربط بينها . -3السؤال عن األشياء والعالقات التي تربطها. والمرحلة الثالثة يمكن أن تأتي بعد المرحلة األولى مباشرة حيث يمكن السؤال عن األشياء دون تطبيق أي قواعد مسألة آينشتاين -1توجد خمس منازل لكل منها لون مختلف . -2يسكن كل منزل شخص من جنسية مختلفه . -3كل ساكن يفضل أن يشرب مشروبا معين ,ويدخن سجائر نوع معين منها, ويحتفظ بحيوان أليف معين . -4ال أحد من الجيران الخمسة يشرب نفس المشروب أو يدخن نفس النوع من السجائر أو لديه نفس الحيوان األليف . معلومات الربط : * يسكن البريطاني في المنزل األحمر . * لدى السويدي كلب. * يحب الدنماركي شرب الشاي . * البيت األخضر على الجانب األيسر من البيت األبيض. * مالك البيت األخضر يشرب القهوة. * الشخص الذي يشرب سجائر نوع بال مال لديه طائر. * الرجل الذي يسكن في البيت األوسط يشرب الحليب. معلومات الربط : * مالك المنزل األصفر يدخن سجائر نوع دانهيل . * يسكن النرويجي في المنزل األول . * يسكن مدخن سجائر نوع مارلبور مجاورا لمن لديه قطة. * الرجل الذي لديه حصان يسكن مجاورا لمن يدخن سجائر نوع دانهيل * مدخن سجائر نوع وينفيلد يحب شرب (شراب الشعير). * يسكن النرويجي مجاورا للبيت األزرق . * يدخن األلماني سجائر نوع روثمانز. * مدخن سجائر نوع مارلبور لديه جار يحب شرب الماء. المطلوب :.- تحدد اللون /الجنسيه /الحيوان /المشروب /نوع السجائر لكل واحد مع توضيح :من منهم لديه السمكة (أو أن حيوانه األليف سمكة)؟ ال توجد خدعه في حل هذا اللغز ,بل هو منطق صرف من يعرف اإلجابة سيكون من ضمن أذكى أذكياء العالم ( %2األذكياء في العالم). طبعا ً كما ترى ،فاللغز عبارة عن مجموعة من البيانات على غرار (يدخن األلماني سجائر نوع روثمانز) ومجموعة من العالقات على غرار (مدخن سجائر نوع مارلبور لديه جار يحب شرب الماء) ،وعندما تبدأ أنت بحل هذه المشكلة ستبدأ في ترتيب البيانات ومن ثم ربط العالقات بها ،هذا ما يفعله البرلوج تماما ً .ستجد نفسك تعطيه بعض المعلومات والقواعد ليقوم هو باستنتاج الحل . prolog http://www.swi-prolog.org/download/stable اختبري وجود البرنامج في المعمل اختاري المناسب لتحميله في جهازك Facts, Rules, and Queries Knowledge Base 1 woman(mia). woman(jody). woman(yolanda). playsAirGuitar(jody). We can ask Prolog whether Mia is a woman by posing the query: ?- woman(mia). we can ask whether Jody plays air guitar by posing the following query: ?- playsAirGuitar(jody). Ask you whether Mia plays air guitar? suppose we pose the query: ?- tatooed(jody). Knowledge Base 2 listensToMusic(mia). happy(yolanda). playsAirGuitar(mia) :- listensToMusic(mia). playsAirGuitar(yolanda) :listensToMusic(yolanda). listensToMusic(yolanda):- happy(yolanda). RULE • the :- should be read as “if”, or “is implied by”. • The part on the left hand side of the :- is called the head of the rule, • the part on the right hand side is called the body We will ask Prolog whether Mia plays air guitar: ?- playsAirGuitar(mia). if a knowledge base contains a rule head :- body, and Prolog knows that body follows from the information in the knowledge base, then Prolog can infer head. ?- playsAirGuitar(yolanda). • The facts and rules contained in a knowledge base are called clauses • KB2 contains five clauses, namely three rules and two facts • Another way of looking at KB2 is to say that it consists of three predicates (or procedures). The three predicates are: • listensToMusic • happy • playsAirGuitar اقتباسات و أقوال http://www.eqtibas.com/author/58 سبحانك اللهم و بحمدك أشهد أن ال إله إال أنت أستغفرك و أتوب إليك