Язык Basic – язык. программирования, ориентированный на обучение основам программирования.
Программа на Basic – последовательность пронумерованных операторов и комментариев.
Структура программы:
Основные правила записи алгоритма на языке Basic:
1. В программе на языке Бейсик операторы (предписания, действия) записываются построчно. В одной строке может быть один или несколько операторов. Операторы в одной строке отделяются двоеточием.
2. Строки должны быть пронумерованы. Желательно задавать номера строк с пропусками для того, чтобы при необходимости, можно было добавить новые строчки. Максимальный номер строки зависит от версии интерпретатора и не превышает 32767.
3. Программу не обязательно набирать в порядке возрастания номеров строк, их упорядочение произведет интерпретатор,
4. Алфавит Бейсика:
— 26 латинских букв.
— цифры от 0 до 9.
— точка (для отделения целого от дробного в написании чисел).
— запятая — является разделителем.
— кавычки используются в диалоге.
— знаки арифметических операций (+, -, /, *, А).
|
|
— знаки отношений двух величин (< ., > ., =, > .=, < .=, о).
— скобки и др.
5. Числа задаются в естественном виде, целое от дробного отделяется точкой. Порядок числа указывается после буквы Е (Например. 1.5Е-05)..
6. Переменные Бейсика делятся на:
— простые (А, Р, КР, А2).
— индексированные (А(4,5), В6(20), Х$(12)).
Имена переменных должны начинаться с латинской буквы. Считается хорошим стилем программистов, если имя переменной напоминает о величине, которую она представляет. Нельзя использовать в качестве имен зарезервированные слова Бейсика.
7. Операторы — предписания для обработки информации записываются латинскими буквами без пробелов в словах (PRINT, INPUT).
8. Кроме программных операторов интерпретатор Бейсика имеет служебные операторы — директивы — команды, исполняемые сразу после ввода.
Номер у них не ставится. Чаще других используются: NEW, RUN, CLS, LIST, SYSTEM, FILES, SAVE…, LOAD….
9. Синтаксис Бейсика допускает расположение операторов-описаний (например, операторов размерностей и определения функций) в любом месте программы. Главное, чтобы соответствующие объекты были описаны до того, как они встретятся в выполняемых операторах. Если в программе есть подпрограммы, то в принципе они могут располагаться в любом месте.
При написании программы желательно не злоупотреблять той «свободой», которую предоставляет синтаксис Бейсика. Лучше располагать все описания в начале программы, а подпрограммы в конце, после оператора завершения программы.
Структурно оператор состоит из:
номера оператора | названия оператора | содержания оператора | признака конца |
Идентификаторы:
|
|
Идентификаторы — основа любого языка. Под идентификаторами понимаются имена констант, переменных, элементов управления, процедур и методов объектов.
В Basic существует следующие правила составления идентификаторов:
1. Первый символ идентификатора обязательно является буквой или символом подчеркивания (Например, идентификаторы First, _Var являются правильными, а 1st, 100 — неправильными).
2. В середине или на конце идентификатора допускается использовать цифры (например — A1, A1B2 и др.).
3. В идентификаторах не допускается использовать пробелы, а также специальные символы: знаки препинания, а также @, #, $, & . (Идентификаторы My Var, New& . — являются неправильными).
4. Максимальная длина идентификатора не может превышать 255 символов.
5. Идентификатор не может совпадать с зарезервированными словами языка программирования Basic
6. В пределах одного модуля или проекта недопустимо объявлять один и тот же идентификатор дважды.
Переменные:
Типы данных должны быть заданы для того, чтобы транслятор мог разместить их в памяти. В различных ЭВМ такое размещение осуществляется по-разному.
Бейсик допускает строго определенные типы данных. Тип определяется для чисел, переменных, функций.
Для описания типа некоторой переменной существует два способа:
1. В конце имени ставится определенный символ.
2. С помощью оператора DEF…
Структура оператора DEF
DEF тип буква[-буква][,буква]
«тип» — может быть одним из следующих буквенных сочетаний:
1. INT (integer) – целое.
2. SNG (single precision) — одинарная точность.
3. DBL (double precision) — двойная точность.
4. STR (string)-строка.
«буква» — это любая из букв английского алфавита A-Z. Оператор DEF указывает Бейсику то, что все переменные, начинающиеся с одной из перечисленных букв, будут иметь тип, заданный в ключевом слове оператора.
Переменные целого типа: целыми числами являются числа от -32768 до +32767 и не содержат десятичной точки, так как компьютер не оставляет места под дробную часть. Занимают 2 байта памяти. Арифметические действия над целыми числами выполняются быстрее, чем над другими числами.
Переменные целого типа можно описать с помощью знака процента (%). Например: Р%, К3% и т.д.
Вещественные переменные одинарной точности — может быть любое число, которое не является целым и содержит 7 или менее цифр, записывается в экспоненциальной форме с символом Е, занимает 4 байта памяти, точность составляет до 7-ми десятичных цифр, но только шесть будут представлены точно, седьмая округляется. Диапазон чисел от -1.701412Е+38 ДО+1.701412Е+38.
Переменные данного типа в конце имени могут содержать восклицательный знак (!). Например: Р!. КЗ! и т.д.
Вещественные переменные двойной точности: вещественными переменными двойной точности могут быть любые числа, имеющие 8 или более цифр. Записываются эти числа в экспоненциальной форме с буквой D. Занимают 8 байт памяти, точность составляет до 16-ти десятичных цифр.
Переменные данного типа в конце имени могут иметь знак #.
При составлении арифметических выражений, в которых в качестве операндов могут фигурировать данные, как целого, так и вещественного типов, следует руководствоваться следующими правилами:
1. Арифметические операции могут выполняться над смешанными операндами любого из трех числовых типов. Реальная точность может оказаться не выше точности самого неточного операнда.
2.Следует запомнить, что символ типа в имени переменной важнее оператора DEF.
3. Операции одного приоритета выполняются последовательно слева направо. Исключение составляет операция возведения в степень, которая выполняется справа налево.
4. Выражения могут содержать одновременно операнды целого и вещественного типов. При этом операции над данными одного типа дают результат этого же типа. Если хотя бы один из операндов вещественного типа, результат — вещественный.
|
|
5. Если в операторе присваивания тип выражения и тип переменной в левой части не совпадают, то результат автоматически преобразуется к типу переменной.
Операторы:
Описание типов и массивов в Бейсик:
s$, p$, sl$, pr$ — символьные .
n%, m%, n1%, m3% — целочисленные .
x!, y!, x1!, y5! – вещественные .
a#, b#, a1#, b8# — вещественные двойной точности.
Операторы описания типов переменных в В.:
def str p, q, s – символьные .
def int n, m, l – целочисленные .
def sng x, y, z – вещественночисловые .
def dbl a, b, c – вещественные двойной точности.
Оператор описания массивов DIM – служит для описания одномерных и двумерных массивов
Описание массивов:
одномерные 30 dim fm$(20), nm$(20), r(20)
двумерные 40 dim ms(10, 10)
Обращение к массивам: fm$(4)=”Егоров”, r(4)=r(3)+10
Описание данных: 10 data “Иванов”, “Саша”, 180, 80
20 data “”, “”, 0, 0
Оператор ввода блока данных DATA,
Оператор считывания данных из блока READ,
Оператор восстановления блока данных RESTORE.
Операторы чтения данных: read fm$(1), nm$(1), r(1)
Операторы чтения данных сначала: restore – чтение сначала.
Операторы повторного чтения данных, начиная с 10: restore 10 – чтение с 10 оператора.
Оператор ввода данных с клавиатуры – INPUT.
Комментарий REM.
Оператор вывода результатов PRINT – служит для обработки информации и вывода результатов в виде численных значений переменных, а также текста, который записывается в кавычках.
Операторы организации подпрограмм GOSUB – служит для обращения к подпрограмме, RETURN – служит для завершения подпрограммы и обеспечивает возврат в то место основной подпрограммы, из которого произошло обращение к подпрограмме.
Обработка одномерных и двумерных массивов:
Массивом называют упорядоченную последовательность величин, обозначаемую одним именем. Именем массива может быть любое допустимое в Бейсике имя.
Данные, являющиеся элементами массива, располагаются в последовательных ячейках памяти. Это означает, что массив занимает непрерывную область памяти.
Номер ячейки соответствует значению индекса элемента массива. Чтобы получить доступ к элементу массива, нужно указать имя и индекс, индекс указывается в круглых скобках (например, Н(14)).
|
|
Массивы принято объявлять в программе с помощью оператора DIM с именем, в скобках указывается верхняя граница индексов. Значение этого числового выражения, записанного в скобках, будет определять максимальный размер массива.
Максимальное число элементов в любом массиве в БЕЙСИКЕ зависит от версии и не может быть больше числа 32767. Нижняя граница по умолчанию в некоторых версиях равна нулю или равна единице — в других. Массивы могут быть числовые и символьные (например, DIM Y(21), F$(5), C2$(23)).
Наиболее мощное средство при работе с массивами — возможность представления индекса переменной или сложным выражением.
Надо только предусмотреть, чтобы значение индекса всегда удовлетворяло заданному размеру массива . т.е. программа не должна пытаться обратиться к элементам, номер которых меньше 0 или больше заданного в описании размера массива.
В Бейсике любая обработка массивов, а также ввод-вывод осуществляются поэлементно с использованием алгоритма циклической структуры, где в качестве параметра цикла используется значение индекса элемента массива.
Основные правила при работе с массивами.
1. Рекомендуется описание массивов делать в начале программы — это необходимо для улучшения структуры программы и для избежания ошибок. Если оператор описания массива отсутствует, то по умолчанию максимальное значение индекса равно 10 (то есть количество элементов в одномерном массиве = 10, а в двухмерном = 100(10*10)). Надо помнить – явное описание массивов экономит память ЭВМ.
2. Нежелательно использовать в объявлении массива имя простой переменной, присутствующей в программе.
3. Программа не должна пытаться обратиться к элементам массива, номер которых меньше 0 или больше заданного в описании размера массива.
4. Индекс не может быть не целым числом. Максимальное значение индекса не должно превышать 32767.
5. Элемент числового массива имеет значение 0 с момента, когда массив определен, и до того, как Он получит какое — то другое значение.
ДВУМЕРНЫЕ МАССИВЫ:
Матрицами называют двухмерный массив чисел вида:
Матрица характеризуется размерностью m * n, т.е. произведением числа строк на число столбцов.
Размер матрицы устанавливается оператором DIM, где указывается имя матрицы и в круглых скобках верхние границы изменения индексов, которые должны быть целыми положительными числами (например: DIM A(7,4), FIO$(5,9)).
В Бейсике могут использоваться массивы как числовые, так и символьные.
Под двухмерный массив выделяется линейный участок памяти, в котором массив располагается по строкам.
а11 | а12 | … | а1n | а21 | а22 | … | а2n | … | am1 | am2 | … | amn |
В Бейсике не определены операции над двухмерными массивами, поэтому любая обработка матриц, а также ввод-вывод осуществляется поэлементно.
УПОРЯДОЧЕНИЕ МАССИВОВ (СОРТИРОВКА ),
Сортировкой является такая перестановка элементов (в массиве), после которой они оказываются упорядоченными требуемым образом.
Общую задачу сортировки данных в массиве можно свести к выбору методов, каждый из которых требует различного времени исполнения и использует различное число дополнительных ячеек памяти. При работе с массивом заданного размера приходится идти на компромисс между временем исполнения и числом рабочих ячеек: чем быстрее надо выполнить сортировку, тем больше требуется рабочих ячеек.
Сортировка методом пузырька.
Этот метод очень прост . он практически не требует рабочих ячеек, но работает довольно медленно. Однако его легко понять и он может служить идеальным методом сортировки общего назначения в условиях, когда память ЭВМ ограничена, а время исполнения не очень существенно. Этот метод основан на попарном сравнении смежных элементов данных . если порядок следования элементов в очередной паре неправилен, то эти элементы обмениваются местами. Для выполнения обмена требуется дополнительная переменная, сохраняющая на время обмена одно из значений. Рассмотрим сортировку числовых значений в порядке убывания. Переменные I и J — индексы пары смежных значений.
Функции пользователя:
Помимо стандартных функций в программе можно определить и далее использовать другие (нестандартные) функции. В Бейсике имеется возможность вводить в текст программы определение новых функций и в дальнейшем обращаться к ним по имени в различных выражениях.
Определить функцию можно в любом месте программы с помощью специального оператора DEF.
Общий вид оператора: DEF FNv(x) = < .арифметическое выражение> . где v — имя функции латинская буква .
Х — формальный аргумент функции — простая переменная .
< .Арифметическое выражение> . — формула, по которой вычисляется функция.
Имена всех функций должны начинаться с FN.
Пример: определим функцию FNy(x) следующим образом: 10 DEF FNy(x) = COS(x) / SIN(x).
В соответствии с этим определением функция FNy(x) – это тригонометрическая функция котангенс, отсутствующая среди встроенных в интерпретаторе языка Бейсик.
Оператор DEF можно использовать только в программном режиме. Параметр X, стоящий в определении, является формальным, необходимым для обозначения функциональной зависимости. При обращении к функции вместо него указывается фактический аргумент, который заменяет формальный параметр. Например, после выполнения строки программы
20 PRINT FNy(2) будет напечатано значение котангенса для угла, равного 2 радианам,-.457658
Подпрограммы:
Когда некоторая совокупность действий должна выполняться в нескольких местах программы, то обычно нежелательно каждый раз повторять группу операторов, реализующих эти действия.
Чтобы избежать повторений, указанную группу операторов можно записать в программе один раз и обращаться к ней, когда в этом возникает необходимость. Обособленную группу операторов, которую можно выполнять многократно, обращаясь к ней из различных мест программы, называют подпрограммой.
Чтобы подпрограмма при обращении к ней выполнялась каждый раз с новыми данными, ее нужно составить в общем виде, а исходные данные для работы передавать в переменные подпрограммы перед обращением к ней. Если, например, в программе требуется решить три квадратных уравнения с различными коэффициентами, то алгоритм нахождения корней квадратного уравнения целесообразно оформить в виде подпрограммы, используя для обозначения коэффициентов переменные. Перед каждым обращением к подпрограмме нужно задать этим переменным числовые значения, соответствующие коэффициентам решаемых уравнений.
Использование подпрограмм уменьшает общее количество операторов в программе, и, следовательно, для размещения программы требуется меньше памяти. Время на выполнение программы практически не изменяется.
Подпрограммы обладают также некоторыми другими преимуществами:
1. Использование подпрограмм улучшает структуру программы.
2. Облегчается отладка программы, так как работа подпрограммы может быть проверена по отдельности.
3. Многие подпрограммы имеют дополнительную ценность, поскольку ими может воспользоваться не только тот, кто написал подпрограмму, но и другие.
В Бейсике подпрограмма оформляется как группа операторов, которая должна выполняться при обращении к ней, и составляет с программой единое целое.
Обращение к подпрограмме осуществляется оператором
GOSUB N где N -номер строки, с которой начинается подпрограмма.
Подпрограмма размещается в последовательных строках, начиная с N-ой. Последним оператором, выполняемым в подпрограмме, должен быть оператор RETURN. По оператору RETURN осуществляется возврат в то место программы, из которого произошло обращение к подпрограмме, а именно к оператору, следующему за GOSUB N. Подпрограмма может содержать обращения к другим подпрограммам.
Программа на Бейсике состоит как единое целое из всех своих операторов, используемых подпрограмм и функций, т.е. на Бейсике подпрограмма (функция) — это часть общей программы.
Тем не менее, будем условно разделять подпрограмму (функцию) и остальные операторы. Последние назовем ОСНОВНОЙ или ВЫЗЫВАЮЩЕЙ программой.
По отношению к каждой подпрограмме все переменные программы условно разделим на четыре группы: входные, выходные, внутренние, прочие.
Входные — это переменные, которым присваиваются значения исходных данных, необходимые для решения задачи, реализуемой данной подпрограммой.
Выходные — это переменные, в которых получаются результаты работы подпрограммы.
То есть через входные и выходные переменные основная программа осуществляет обмен информацией с подпрограммой. Таким образом, имена входных и выходных переменных обязательно присутствуют как в основной программе, так и в подпрограмме.
При этом подпрограмму желательно составлять так, чтобы она не портила входные переменные, т.е. чтобы после работы подпрограммы входные переменные имели те же значения, что и при обращении к подпрограмме, так как может возникнуть потребность использовать эти же значения при дальнейшей работе программы.
Внутренние переменные — это переменные подпрограммы, которые являются вспомогательными, т.е. не являются входными и выходными и используются только в подпрограмме.
Прочие переменные — это все остальные переменные основной программы.
При использовании подпрограмм необходимо помнить следующее:
1. Перед обращением к подпрограмме всем ее входным переменным необходимо присвоить нужные значения.
2. В основной программе имя прочей переменной не должно совпадать с именем внутренней переменной подпрограммы, если эта прочая переменная не должна быть испорчена в процессе работы подпрограммы.
3. Подпрограмма не должна начать выполняться без обращения к ней.
На языке блок-схем подпрограммы изображаются отдельно от основной программы. Подпрограммы имеют и начало, и конец, т.е. изображаются также как и основные программы.
Обращение к подпрограмме из основной имеет вид:
Пример использования подпрограммы для вычисления факториалов нескольких чисел.
10 КЕМ Вычисление 5! 6! 7! 8!
20 FORJ=5TO8
30 N=J
40 GOSUB1000
50 PRINT ЗНАЧЕНИЕ ФАКТОРИАЛА . N . = . F
60 NEXT J
70 STOP
1000 REM подпрограмма вычисления факториалов
1010 F=l
1020 FOR 1=1 TO N
1030 F=F*I
1040 NEXT I
1050 RETURN
Работа с файлами данных:
Работа с файлом осуществляется с помощью весьма ограниченного числа процедур. Сначала необходимо найти нужный ящик и выдвинуть его.
Эту операцию обычно связывают со словом открыть. Затем мы производим поиск и достаем интересующий нас документ, т.е. читаем затребованную неделимую порцию данных. Следующий шаг связан с изучением и обработкой информации, расположенной в соответствующих разделах документа.
Включение нового документа в файл соответствует процедуре записи поступившей порции данных.
По окончанию работы с очередным файлом мы ставим ящик на свое место или, как говорят, закрываем доступ к его информации.
Обращение к Файлу данных: Любая программа, обращающаяся к файлу данных, должна выполнить 3 операции над этим файлом.
1. Открыть файл.
2. Считать данные из файла, записать данные в файл или изменить данные в файле.
3. Закрыть файл.
Открытие файла файла в Бейсике выполняется оператором OPEN < .имя файла> . FOR < .режим доступа> . AS # < .номер файла> .,
где номер файла представляет собой целое выражение со значением в диапазоне от 1 до максимально допустимого числа одновременно открытых файлов (15).
Режим доступа: Открыть файл можно в одном из 3-х режимов доступа:
1. Для ввода данных из файла в оперативную память ЭВМ:
OPEN M101.DAT FOR INPUT AS #1.
Теперь из файла Ml 01.DAT можно только считать данные, начиная с первой записи.
Для ввода данных из файла в рабочую область памяти используется оператор INPUT # < .номер файла> ., < . переменная [, переменная]… > . Синтаксис этого оператора практически идентичен оператору INPUT, за исключением того, что нужно указать канал, по которому мы собираемся вводить данные. Оператор INPUT # просто считывает данные из файла, а не с клавиатуры, но данные из файла вводятся точно в такой же форме, в какой они должны были вводиться с клавиатуры (например — 120 INPUT #1, NOM, FAM$).
2. Для вывода данных в файл из оперативной памяти машины:
OPEN M101.DAT FOR OUTPUT AS #1.
Если файл открывается в режиме OUTPUT, то все содержимое этого файла (если такой имеется) пропадает, и можно записать в этот файл новые данные.
Сохранение данных из рабочей области памяти машины в файле данных выполняется оператором PRINT # < .номер файла> ., < . список выражений> . (например -160 PRINT #l, NOM . , . FAM$).
3. Для добавления данных в файл из оперативной памяти:
OPEN Ml 01.DAT FOR APPEND AS #1.
Когда файл открывается в режиме APPEND, то имеющиеся в нем данные сохраняются и новые записываются после последней записи файла.
Если был открыт файл, то нужно его и закрыть. Для этого используется оператор
CLOSE [[# номер файла} [,номер файла]…]
Оператор CLOSE без параметров закрывает все файлы, которые к этому моменту программа успела открыть. Если в параметрах задан номер файла, то закрывается только файл с указанным номером канала. Закрытие файла имеет решающее значение: только после закрытия файла данные записываются на диск! Если вы забудете закрыть файл, то можете потерять данные! (например — 1000 CLOSE #1).
Маркер конца файла.
Для успешной работы программы нужно решить следующую проблему: как считать из файла все записи данных и вовремя остановиться. Где конец файла? Об этом заботится операционная система.
Когда, файл создается, то операционная система помещает после последней записи специальный символ, который называется маркером конца файла.
Программист должен предусмотреть в программе действия, которые надо выполнить при достижении конца файла, иначе попытки чтения будут продолжаться, и интерпретатор сообщит об ошибке Input past and error (Попытка чтения после конца файла).
Функция EOF.
В Бейсике имеется функция определения того, можем ли мы считать из файла еще какие-либо данные. Она называется EOF (End of file — Конец файла). Она имеет следующий синтаксис:
EOF {номер файла)
Эта функция истинна только тогда, когда достигнут конец файла, а если в файле еще остались данные, то она ложна.
Организация цикла. Программа ввода данных из файла в оперативную память должна выглядеть следующим образом: ПОКА НЕ КОНЕЦ ФАЙЛА
1. Прочитать запись.
2. Обработать запись.
3. Вывести информацию, если нужно. Функция EOF делает этот цикл очень простым.
29. ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА ПРОГРАММИРОВАНИЯ ПРОЛОГ: ОБЪЕКТ, ПРЕДИКАТ, ТЕРМ, ФАКТ, ПРАВИЛО, УТВЕРЖДЕНИЕ, ЦЕЛЬ. МЕХАНИЗМ ДОКАЗАТЕЛЬСТВА ЦЕЛИ В ТУРБО-ПРОЛОГЕ. ВНЕШНИЕ И ВНУТРЕННИЕ ЦЕЛИ. СТРУКТУРА ПРОГРАММ ТУРБО-ПРОЛОГА. СОДЕРЖАНИЕ РАЗДЕЛОВ. ДОПУСТИМЫЕ ТИПЫ ДОМЕНОВ. ЛОГИЧЕСКИЕ ОПЕРАЦИИ В ПРОЛОГ-ПРОГРАММАХ.[63]
Пролог был разработан в1973 г. Аленом Кольмером в составе группы Марсельского Университета во Франции. Пролог декларативный (описательный) язык, язык формальной логики. Предназначен для моделирования процесса логических умозаключений человека. Требует особого мышления программиста и считается языком сверх высокого уровня.
Атом – набор символов латинского алфавита, начинающихся со строчной буквы, либо набор любых символов заключенных в “ ”.
Константа – либо атом, либо число.
Переменная – именуется набором латинских символов, цифр и символа подчеркивания, начинающимся с прописной буквы.
Если значение переменной не представляет интереса, ее имя заменяют символом подчеркивания и называют анонимной.
Терм (простой) – константа или переменная.
Терм (составной) – имеет имя и аргументы. learn (“Маша“, “Пролог“)
Имя терма может содержать 256 символов и обязательно начинаться с прописной буквы.
Встроенный предикат – процедура, входящая в систему программного обеспечения Турбо-Пролога.
Факт – простой или составной терм с аргументами, константами.
Факт – некоторое истинное утверждение, характеризующее объект или устанавливающее отношение между объектами.
Правило – составной терм, содержащий переменные в условиях (подцелях).
Правило – предложение, содержащие условия. В отличие от факта содержит переменные.
Заголовок (голова правила):- тело правила (голова истинна, когда истинно тело). learn («Коля», X):- learn («Маша», X).
Утверждения (предложения) – либо факт, либо правило.
Предикат – отношение между объектами. learn (“Маша“, “Пролог“)
Структура программы содержит несколько разделов, все разделы начинаются с ключевого слова.
Constants
Pi = 3.14
domains (раздел описания объектов)
имя объекта = тип объекта
predicates (раздел описания предикатов)
database (раздел описания динамических БД)
predicates (раздел описания предикатов).
clauses (раздел описания фактов и правил программы)
goal (раздел описания цели)
допустимые типы доменов:
integer – целое . real – действительное . char – одиночный символ . string и symbol – символьные . file – для работы с файлами.
Логические операции: часто для достижения цели одного условия в правиле бывает недостаточно, тогда используются составные условия, где несколько простых объединяются логическими операциями: «и» (.), «или» ( .), «не» ().
Если в программе предполагается использовать динамические базы данных, то до раздела clauses появляется раздел описания динамической базы данных database.
В разделе predicates должны содержаться описания всех термов, встречающихся в разделе clauses, с указанием типов аргументов этих термов. В разделе clauses можно записывать фразы, которые представляют собой либо правила, либо факты.
Доказательство цели.
Цель в программе задается предикатом . объявляет, что должна доказать программа . используется для запуска программы на выполнение.
При доказательстве цели Пролог пытается ее сопоставить с фактами программы просматривая их сверху вниз и слева направо. Если цель содержит переменные, то пролог выдает их значения, которые приводят к решению.
Турбо-Пролог имеет внутренние подпрограммы для выполнения сопоставления и связанных с ним процессов. Они являются неотъемлемой частью языка и называются внутренними подпрограммами унификации. Эти подпрограммы выполняют унификацию (согласование) целей и подцелей с фактами и головами правил для того, чтобы вычислить эти цели или подцели. При этом сопоставляются имена предикатов целей и правила, количество объектов, значения конкретизированных переменных и аргументов.
Если в предикате цели существуют свободные (не конкретизированные) переменные, то они получают соответствующие значения, т.е. становятся связанными. Если при сопоставление цели и правила они не унифицируются Пролог выполняет автоматический откат к другому правилу с таким же именем, чтобы найти альтернативные, возможные пути вычисления цели.
В программе на Прологе утверждения для одного и того же предиката должны быть сгруппированы вместе, и этот участок программы называется процедурой.
