From Wikipedia, the free encyclopedia
ویژوال پرولوگ ،که در گذشته با اسمهای PDC Prolog و Turbo Prolog شناخته شدهبود،یکی از قویترین طبقهبندیهای گسترش یافتهٔ پرولوگ شیءگرا است.به عنوان مثال Turbo Prolog توسط بورلند به بازار عرضه شد،اما اکنون توسط شرکت Danish،مرکز توسعهٔ پرولوگ (PCD)،توسعه یافته و به بازار عرضه شد.ویژوال پروگ میتواند کاربرد-واسط گرافیکی کاربر مایکروسافت ویندوز، کاربرد کنسول[1]، DLLs[2](پیوندهای پویای کتابخانهها)،و برناهای-CGI را بسازد.ویژوال پرولوگ همچنین میتواند با استفاده از ODBC[3] به الگوی جزء تشکیل دهنده شیء و پایگاه دادهها پیوند برقرار کند.
زبانهای منطقی بهطور سنتی تفسیری هستند، ولی ویژوال پرولوگ کامپایلری است که این پیشرفت مهمی را در تبدیل سنتی خطاهای معمولیِ زمان اجرا به هشدارهای کامپایلر،فراهم کردهاست،که یک استحکام [4] بهتری از کاربردهای خاتمه یافته را تضمین میکند.
هستهٔ ویژوال پرولوگ مانند پرولوگ سنتی بندهای horn[5]، نوع دادهٔ جبری [6]، تطبیق الگو و الگوریتمهای غیر قطعی[7] کنترل شده هستند،و بر خلاف پرولوگ سنتی،ویژوال پرولوگ همواره از نوع دادهٔ ایستا و شدید است.
![]() | این مقاله به دلیل استفاده از پیوند به بیرون به جای ویکیسازی نیازمند تمیزکاری است. لطفاً تا جای امکان آنرا از نظر املا، انشا، چیدمان و درستی بهتر کنید، سپس این برچسب را بردارید. محتویات این مقاله ممکن است غیر قابل اعتماد و نادرست یا جانبدارانه باشد یا قوانین حقوق پدیدآورندگان را نقض کرده باشد. |
![]() تصویر IDE | |
توسعهدهنده(ها) | مرکز توسعهی پرولوگ |
---|---|
انتشار پایدار | 7.5، ساخنه شد 7501
/ ۸ دسامبر ۲۰۱۴ |
سیستمعامل | مایکروسافت ویندوز /ویندوز ویستا/ویندوز ۷/ویندوز ۸ |
نوع | زبان برنامهنویسی |
مجوز | اختصاصی |
وبگاه |
نسخه 7.5 شامل سرور http و مولد تجزیه کنندهٔ (1)LALR است. (همچنین نگاه کنید به ویژگیهای جدید ویژوال پرولوگ 7.5)
نسخه 7.4 میتواند کد ویندوز 64بیتی را تولید کند. (همچنین نگاه کنید به ویژگیهای جدید ویژوال پرولوگ 7.4)
نسخه 7.3 کلاسهای ژنریک و رابطها را معرفی کرد.(نگاه کنید به برنامههای ژنریک[8])،حفاظت از مانیتورها (همچنین نگاه کنید به ویژگیهای جدید ویژوال پرولوگ 7.3)
نسخه 7.2 گزارههای ناشناس را معرفی کرد.(وابستگی منطقی با تابعهای ناشناس) و فضای نامها (namespaces).(همچنین نگاه کنید به ویژگیهای جدید ویژوال پرولوگ 7.2)
نسخه 7.0 پارامترهای چندریختی را معرفی کرد.
از نسخهٔ 6.0 زبان کاملاً شیءگرا شد.
در مثال 'برج هانوی'،موتور استنتاج پرولوگ دریافت که چگونه یک پشته شامل تعدادی از دیسکهای به تدریج کوچکتر را در مسیر شرح داده شده یکی یکی از قطب چپ ("left") به قطب راست ("right")جابجا کند،به این معنی که قطب میانی ("centre") به عنوان راه عبور است،طوری که هیچ دیسک بزرگتری روی دیسک کوچکتری وجود نداشته باشد.به عنوان استدلال اولیه،استنتاج "هانوی" یک عدد صحیح برابر با تعداد دیسکها اختیار میکند.در واقع،ویژوال پرولوگ به ویژه برای مسائل پیچیده همانند برنامهریزی منابع و... مناسب است.همانطور که مثال نشان میدهد،ویژوال پرولوگ میتواند برای برنامهنویسی سریع در سطح کوچک استفاده شود،ولی اکثراً برای کاربردهای بزرگ قدرت صنعتی بکار گرفته میشود.
class hanoi
predicates
hanoi : (unsigned N).
end class hanoi
implement hanoi
domains
pole = string.
clauses
hanoi(N) :- move(N, "left", "centre", "right").
class predicates
move : (unsigned N, pole A, pole B, pole C).
clauses
move(0, _, _, _) :- !.
move(N, A, B, C) :-
move(N-1, A, C, B),
stdio::writef("move a disc from % pole to the % pole\n", A, C),
move(N-1, B, A, C).
end implement hanoi
goal
console::init(),
hanoi::hanoi(4).
برای آشنایی بیشتر با برنامهٔ کنسول به مثال آورده شده توجه کنید:
میخواهیم فاکتوریل یک عدد را حساب کنیم،دستورالعملهای زیر را دنبال کنید
General
project name:facfun
UI Strategy:console.
یک عدد در قسمت اعلان تایپ کنید و فاکتوریل آن را دریافت خواهید کرد.
implement facfun
class predicates
fact:(integer N,integer Res)procedure(i.o).
clauses
classinfo("facfun","1.0").
fact(N,1):-N<1,!.
fact(N,N*F):-fact(N-1,F).
run:-console::init(),
fact(stdio::read(),F),stdio::write(F),stdio::nl.
end implement facfun
goal
mainExe::run(facfun::run).
توجه: برای آزمایش و اجرای یک برنامهٔ کنسول از گزینه Build/Run in Window استفاده کنید نه Execute.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.