Public Declare Sub ExitGoal Lib "INT386W" (ByVal _ Prolog As Integer)
Sub ЧастичноВычислитьВыражение()
Dim S1 As String, S2 As String, S As String, N As Integer G = "valuate_expretion" ' Имя программы на Прологе
Dim x As String
' Dim OutString As Object
Prolog_Renamed = LoadProlog("/H100000 /R100000 /B100000 /L100000")
If Prolog_Renamed < 0 Then MsgBox "LoadProlog Error " & _ Str(Prolog_Renamed) & _
"!", MsgBoxStyle.Critical
End
End If
G = "consult(" & G & "). "
x = InitGoal(Prolog_Renamed, G)
x = CallGoal(Prolog_Renamed) ExitGoal (Prolog_Renamed)
x = InitGoal(Prolog_Renamed, "an. ")
' an – это имя целевого предиката
OutString = CallGoal(Prolog_Renamed) HaltProlog (Prolog_Renamed)
End Sub
Код 10.8. Модуль Листа книги Excel
Private Sub ButtonПоказатьПользовательскуюФорму_Click()
UserForm1.Show
End Sub
Код 10.9. Модуль формы UserForm1
Private Sub Button_ЗагрузитьПрологПрограмму_Click()
Open "valuate_expretion.pl" For Input As #1
Dim S As String
Do Until EOF(1)
Line Input #1, S
156
TextBox1.Text = TextBox1.Text & vbCrLf & S Loop
Close #1 End Sub
Private Sub Button_ЗагрузитьИсходноеВыражение_Click() Open "string.txt" For Output As #2
Print #2, TextBox2.Text Print #2, vbCrLf
Close #2 End Sub
Private Sub Button_Вычислить_ПоказатьРезультат_Click()
Call ЧастичноВычислитьВыражение
Open "struct.txt" For Input As #3 Dim S1 As String, S2 As String Line Input #3, S1
Line Input #3, S2
TextBox3.Text = "Анализируемое выражение: " & _ vbCrLf & S1 & vbCrLf & vbCrLf & _
"Значение выражения: " & vbCrLf & S2 Close #3
End Sub
Программа на Прологе для данного примера не нуждается в представлении: она показана на рисунке 10.7 – в левом текстовом поле на пользовательской форме.
Вывод: Интерфейс декларативного языка Пролог и императивного визуального языка Visual Basic открывает программистам ши-
рокие перспективы сочетать возможности эффективной реализации символьных преобразований (Пролог) с возможностями реализации алгоритмически сложных вычислений и визуализации – в частности, применения машинной графики (Visual Basic).
157
Литература, источники в интернете
1.Robinson J. A., A machine-oriented logic based on the resoulution principle, Journal of the ACM, v. 12, January 1965. pp. 23-41.
2. A. Colmerauer, Ph. Roussel. The birth of Prolog. The ACM Digital Library. Book: History of programming languages-II. ACM, New York, NY, USA. 1996. – pp. 331-367.
3.Alain Colmerauer and Philippe Roussel. The birth of Prolog. URL: http://alain.colmerauer.free.fr/alcol/ArchivesPublications/PrologHist ory/ 19november92.pdf
4.Клоксин У., Меллиш К. Программирование на языке Пролог/ Пер. с англ.; Под ред. А.К.Платонова и Ю.М.Лазутина. М.:
Мир, 1987. – 336 с.
5.Стобо Дж. Язык программирования Пролог/ Пер. с англ.; Под ред. Н.Г.Волченкова. М.: Радио и связь, 1993. – 368 с.
6.Малпас Дж. Реляционный язык Пролог и его применение/ Пер. с англ.; Под ред. В.Н.Соболева. М.: Наука, 1990. – 464 с.
7. Стерлинг Л., Шапиро Э. Искусство программирования на
языке Пролог/ Пер. с англ.; Под ред. Ю.Г.Дадаева. М.: Мир,
1990. – 235 с.
8.Чери С., Готлоб Г., Танка Л. Логическое программирование и
базы данных/ Пер. с англ.; Под ред. Л.А.Калиниченко. М.: Мир,
1992. – 352 с.
9.Братко И. Алгоритмы искусственного интеллекта на языке PROLOG/ Пер. с англ.; Под ред. К.А.Птицина. М.: Издательский дом «Вильямс», 2004. – 640 с.
10.Сергиевский Г.М., Волчёнков Н.Г. Функциональное и логическое программирование: учебное пособие для студ. высш. учеб. заведений. М.: Издательский центр «Академия», 2010. – 320 с.
158