الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

دوره في تعلم لغة PROLOG

مثبّترائج
بدأه ( HASSAN ) في 18 فبراير 2010 · 42 رد · 90,998 مشاهدة · في الذكاء الاصطناعي وتطبيقاته
مشاركة: واتساب X فيسبوك تيليجرام
#26

اسم الملف عندك RAMO وانتي لم تحملي الملف المطلوب بل كان aml . يجب ان تحملي اللف نفسه ..

هذا ما اراه في الصور المرفقه

بالتوفيق

#27
( HASSAN ) كتب:

اسم الملف عندك RAMO وانتي لم تحملي الملف المطلوب بل كان aml . يجب ان تحملي اللف نفسه ..

هذا ما اراه في الصور المرفقه

بالتوفيق

السلام عليكم

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

cannot open for write

جزاك الله خيرا

#28

تابع LIST

بعض الادوات والاوامر التي تستخدم في LIST

Length

length ( [arg1,arg2,...,argn],Output_Name) ....

مثال:-

length([Ali, Rami,Banana,  [], [10, 21, 3, 100]], L).

يكون الجواب 5 وهذا يدل على طول القائمه وكم تحتوي على عناصر كما لاحظنا انه كانت هنالك انواع مختلفه من العناصر مثل Ali و [] و قائمه تحتوي على ارقام داخل القائمه الام

11 ?- length([Ali, Rami,Banana,  [], [10, 21, 3, 100]], L).
L = 5.

مثال اخر لنفرض اننا نريد ان ننشيء قائمه يكون عدد العناصر بها اي رقم نريد :-

length(New_list, 5).

يكون الناتج كالتالي :-

length(New_list, 5).
New_list = [_G869, _G872, _G875, _G878, _G881].

فيضهر لنا انه تم انشاء قائمه تحتوي على 5 arg , وبما اننا لم نحدد هذه العناصر فتقوم البرولولغ بانشاء ارقام من تلقاء نفسها بدل اماكن هذه العناصر .

member

member(Element,list). هذا يعني اننا نريد ان نسأل هل العنصر Element موجود او احد عناصر القائمه list

مثال :-

member(sami, [ali, rami, khaled, sami, hassan]).

فيكون الجواب True اذا كان موجود و False اذا لم يكن .

6 ?- member(sami, [ali, rami, khaled, sami, hassan]).
true

append

هنا يعمل ربط ودمج بين قائمتين او اكثر

الصيغه العامه :-

append( first_list,second_list,new_list).

مثال :-

append([a,b,c],[d,e,f],New_list).

يكون الناتج :-

15 ?- append([a,b,c],[d,e,f],New_list).
New_list = [a, b, c, d, e, f].

ملاحظه مهمه :- اتمنى ان لا تقع في هذا الخطأ , اسم القائمه الجديده او قائمة الربط يجب ان تبدأ باحرف كبيره Capital , بمعنى New وليس new

reverse

هذا الامر او الداله تعمل على تغير ترتيب القائمه بشكل عكسي .

 reverse([hassan,omar,khaled], Reverse_list).

ويكون الناتج :-

reverse([hassan,omar,khaled], Reverse_list).
Reverse_list = [khaled, omar, hassan].

وهنالك ادوات و اوامر اخرى اتمنى الاطلاع عليها من المراجع السابقه .

نعود لاحقا ان شاء الله ..

بالتوفيق

#29

لقد اكتشفت الخطا وهو اني لم اكن اعمل خيار

SAVE A BUFFER

بعد كتابة البرنامج

دمتم بحفظ الرحمن :)

#30

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

مثال لكتابة برنامج المضروب باستخدام البرلولغ .

factorial(0,1).
factorial(X,Y) :- X1 is X - 1,
factorial(X1,Z),Y is Z*X.

افضل طريقه لكتابة المضروب في البرلوغ هو عملها بشكل تكراري من خلال الكود السابق تلاحظ اننا اول امر كتبناه هو

factorial(0,1).

وهذا يعني اننا نعمل رجوع للقيمه عندما نصل للقيمه 0 وهي اخر رقم في المضروب وتكون قيمته دائما صفر ( factorial(0,1)

اذا في هذه الحاله ماعلينا الا كتابة الامر في شاشة البرنامج كالتالي :-

 factorial(6,Y).

او اي رقم او متغير تريد . فيكون الناتج هنا :-

 factorial(6,Y).
Y = 720

يقوم البرنامج بجمع 6! و 5! و 4! و 3! و 2! و 1! وحتى يصل الى 0! والذي تكون قيمته 0

6!+5!+4!+3!+2!+1! = 720

هنالك اكثر من طريقه لكتابة المضروب.

في المرفقات ستجد برنامجين الاول باسم factorial وهو الذي ذكرته و الثاني ياسم factorial program وهو يشرح طريقه ثانيه لحساب المضروب وستلاحظ من خلال حجم الكود المكتوب ما هو الفرق بين الطريقه الاعتياديه لكتابة المضروب وطريقة recursivelly التي شرحتها في اول طريقه لكتابة المضروب ..

كود الطريقه الثانيه :-

factorial program.pl

factorial(N,FactN):-

 	fact_inter(N,FactN,0,1).

	fact_inter(N,FactN,I,J):-
                        	I=N,FactN is J.


 	fact_inter(N,FactN,I,J):-
      	I<N,
      	NewI is I+1,
      	NewJ is J*NewI,
      	fact_inter(N,FactN,NewI,NewJ).

امر الكتابه للحصول على الناتج نفس الامر السابق :-

 factorial(6,FactN).

ويكون الناتج :-

6 ?- factorial(6,FactN).
FactN = 720

بالتوفيق .

factorial programs.rar

1
#31

السلام عليكم

بارك الله فيك يا د حسان على هذا الشرح الوافي

الهي...

لبست ثوب الرجا والناس قد رقدوا

وقمت أشكو إلى مولاي ما أجد

وقلت يا عُدتي في كــل نائبــة

ومن عليه لكشف الضر أعتمد

أشكو إليك أمـورًا أنــت تعلمها

مالي على حملها صبرٌ ولا جلدُ

وقـد مددت يــدي بالذل مبتهلاً

إليك يا خيـر م...ن مُدتْ إليه يد

فــلا تردَّنَّهــا يـا رب خائبةً

فبحر جودك يروي كل ما يردُ

#32

ممكن أعرف كيف أعمل انترفيس سواء بالhtml أو VB

لبرنامج Amzi

#33

أحتاج الى برنامح يقوم بعكس عناصر قائمه معينه ،كيف أتمكن من كتابته كاملا؟؟؟؟ أرجو المساعده بسرعه

وأتمنى اذا كان هناك أي كتاب للغة prolog بالغة العربيه

تم تعديل هذه المشاركة بواسطة safiya في 2 يونيو 2010 في 01:16

#34

ماشاء الله شرح مميز ومجهود عظيم جزاك الله خيرا ونفع بك الاسلام والمسلمين

d22.jpg
#35

السلام عليكم اخي حسان اذا تكرمت بما انك متمكن ببرمجه برولوج مطلوب مني برنامج بسيط عن البورصه وتطبيق الرولز بالذكااالصناعي والوقت لا يسمح بتعلمها

فياريت اذا بامكانك اتساعدني او اكون شاكره بالتوفيق

#36

السلام عليكم

اشكركم على الشرح والتوضيح وجزاكم الله خير على تعبكم هذا

بس عندي سؤال انا لساتني مااشتغلت اصلا على برولوغ ولا عندي اي معرفة فيه هلاء جمعت كم معلومة وكم برنامج بس المشكلة مش عارفة كيف ومن وين بدي انزل البرنامج الي رح اكتب بداخلو الكود ....ياريت لو فيكم تساعدوني مع الشكر مقدما

#37
programmer nona كتب:

السلام عليكم

اشكركم على الشرح والتوضيح وجزاكم الله خير على تعبكم هذا

بس عندي سؤال انا لساتني مااشتغلت اصلا على برولوغ ولا عندي اي معرفة فيه هلاء جمعت كم معلومة وكم برنامج بس المشكلة مش عارفة كيف ومن وين بدي انزل البرنامج الي رح اكتب بداخلو الكود ....ياريت لو فيكم تساعدوني مع الشكر مقدما

اقرا الموضوع من البدايه رح تستفيد ان شاء الله , والبرنامج موجود في المرفقات

تحياتي

#38

مجهود كبييييييييير    مشكور أخي حسان وربنا يجزيك ألف حسنه نظير مجهودك

#39

مشكور دكتور عل المحاضرات شكرا جزيلا

#40

السلام عليكم

أشكركم جزيل الشكر على هذه الدروس الرائعة.

أن حقيقة مبتدىء ، وقد سعيت جاهدا لتطبيق هذا البرنامج البسيط على WinProlog ولكن دون جدوى !!!!

 

 

اقتباس

 

.(second_element([A,B,C|Rest],B

 

 

والنتيجة كما في الصورة

 

post-250427-0-92299500-1387223781_thumb.

#41

مشكووووووووووووووووووووووووووووووور
جزاك الله خير

#42

مشكورعلى المجهود العظيم

#43

شكرا لك جزيل الشكر اخي الغالي HASSAN مجهود رائع

مشكور وماقصرت

مواضيع مشابهة