Floodfill/3 Графика
Назначение Заполняет ограниченную область
Обращение floodfill(X,Y,Контур)
Домены (integer,integer,integer)
Шаблоны описания (вх,вх,вх)
аргументов
Описание floodfill заполняет ограниченную область, (X,Y) есть
"видимая точка" внутри области, которая должна быть
заполнена. Область, ограниченная цветом Контур,
заполняется текущим шаблоном и цветом заполнения.
Если "видимая точка" находится вне ограниченной
области, то будет заполняться пространство вне
ограниченной области. Используйте, по возможности,
fillpoly вместо floodfill, так как он содержит код,
совместимый с будущими версиями.
Ошибки Если ошибка случается, когда заполняется ограниченная
область, система генерирует ошибку с кодом 6006.
Смотри drawpoly,fillpoly,graphresult
Пример
include "GRAPDECL.PRO"
goal
/* Инициализация гpафики c автоматическим
определением драйвера */
initgraph(detect, 0,GraphDriver,GraphMode, ""),
/* Нарисовать диаграмму и заполнить верх и сторону */
setcolor(white),
setfillstyle(hatch_FILL, lightmagenta),
bar3d(10, 10, 100, 100, 10, 1),
setfillstyle(solid_FILL, lightgreen),
floodfill(102, 50, white), /* заполнить сторону */
floodfill(50, 8, white), /* заполнить верх */
readchar(_),
closegraph.
flush/1
Назначение Записывает на диск файловый буфер Турбо Пролога
Обращение flush(ИмяФайлСимв)
Домены (file)
Шаблоны описания (вх)
аргументов
Описание flush инициирует запись содержимого внутреннего
файлового буфера системы Турбо Пролог на текущее
записывающее устройство. flush полезен, когда выход
ориентирован на последовательный порт и может иметься
необходимость посылать данные в порт до заполнения
буфера.
Примечание: Из-за ограничений операционной системы
flush не обеспечивает защиту файла в операционной
системе. Обеспечить целостность файла можно путем
закрытия его и последующего открытия вновь.
Неудачное Подобно write.
завершение
Ошибки Подобно write.
Пример
goal
writedevice(printer),
write("Привет"),
flush(printer),
writedevice(screen),
write("\nНажмите ВВОД"),
readln(_).
format/*
Назначение Форматирует несколько аргументов в строке
Обращение format(ВыхСтр,ФормСтр,Арг1,Арг2,...,АргN)
Шаблоны описания (вых,вх,вх...)
аргументов
Описание format выполняет некоторое форматирование подобно
writef, но присваивает результат переменной. Арг1АргN
должны быть переменными или константами,
принадлежащими к стандартным доменам. Форматируемая
строка содержит обычные символы, которые печатаются
без преобразования, и указатели формата в виде
%-m.pf; это означает, что формат определен таким
образом:
----------------------------------------------------
Указатель Что он делает
----------------------------------------------------
-(дефис) Указывает, что поле выравнивается по
левому краю; выравнивание по правому полю
не выполняется (не обязателен).
m поле Десятичное число представляется в краткой
форме (не обязателен).
.p поле Определяет точность представления с
плавающей точкой или максимальное число
символов в печатаемой строке (не
обязателен).
f поле Определяет другие форматы, которые не
выполняются для данного объекта (не
обязателен).
-----------------------------------------------------
Например, в поле f можно определить указатель,
который отформатирует целое число так, что оно будет
представлено без знака, или char будет представлено в
шестнадцатиричном виде.
writef (формат) воспринимает следующие указатели f
поля:
----------------------------------------------------
Указатель Что он делает
f поля
f Представляет вещественные числа в форме
с фиксированной точкой (нпр. 123.456)
e Представляет вещественные числа в форме
с плавающей точкой (нпр. 1.3456е-7)
g Представляет вещественные числа в
краткой форме (это отсутствует для
вещественных чисел).
d Представляет символьные или целые в
десятичной форме.
u Представляет символьные или целые в
форме целого без знака.
x Представляет символьные или целые в
шестнадцатиричной форме.
c Представляет символьные или целые в
символьной форме.
R Использует как аргумент ссылочный номер
базы данных (только для домена ref).
X Использует как аргумент двойное
шестнадцатиричное число (string,database
referencenumber).
s Представляет как Cтроку (символы и
строки).
-----------------------------------------------------
Неудачное Никогда не дает.
завершение
Ошибки 1025 Недостаточно аргументов в строке, задающей
формат.
Пример
Goal: format(X,"this % the %'st % test",is,1,"small")
X=this is the 1'st small test
1 Решение
Goal: format(X,"realS: Default=%, Exp=%e,
Shortest=%g",99E9,99E9,99E9)
X=realS: Default=98999999999.99999989,
Exp=9.9E+10, Shortest=9.9E+10
1 Решение
Goal: format(X,"char=%c, int=%, unsigned=%u,
hex=%x",97,-1,-1,-1)
X=char=a, int=-1, unsigned=65535, hex=FFFF
1 Решение
framewindow/1
Назначение Изменяет атрибут для рамки окна
Обращение framewindow(АтрРамк)
Домены (integer)
Шаблоны описания (вх)
аргументов
Описание Список используемых атрибутов см. в Руководстве по
использованию Турбо Пролога.
Неудачное Никогда не дает.
завершение
Ошибки Отсутствуют.
Пример
goal
makewindow(1,23,7,"",5,5,10,50),
write("привет"),nl,readchar(_),
framewindow(0),
makewindow(_,_,Fattr,_,A,B,C,D),
write("Fattr=",Fattr,",",A,",",B,",",C,",",D),nl,
write("опять привет"),nl,readchar(_),
framewindow(112),
write("еще привет"),nl,readchar(_).
framewindow/4
Назначение Изменяет атрибут и символы в рамке окна
Обращение framewindow(АтрРамк,ТекстРамк,Поз,Тип)
Домены (integr,string,integer,string)
Шаблоны описания (вх,вх,вх,вх)
аргументов
Описание У framewindow следующие аргументы:
АтрРамк (Цвет) Атрибут для рамки окна.
ТекстРамк Верхняя линия рамки включает текст
ТекстРамки.
Поз Определяет, где будет размещена метка
окна (в пределах верхней линии рамки).
-1 = метка помещается в центре
>0 = размещение метки определяется
позицией (колонкой)
Тип Определяет, как вычерчивается рамка окна;
этот аргумент содержит ровно шесть
следующих знаков:
1 знак Верхний левый угол
2 знак Верхний правый угол
3 знак Нижний левый угол
4 знак Нижний правый угол
5 знак Горизонтальная линия
6 знак Вертикальная линия
Например:
"\218\191\192\217\196\179" определяют одинарную рамку
"\201\187\200\188\205\186" определяют двойную рамку
Неудачное Никогда не дает
завершение
Ошибки Отсутствуют
Пример
predicates
delay(integer)
changeframe(integer)
clauses
delay(0):-!.
delay(N):-N1=N-1,delay(N1).
changeframe(-1):-!,changeframe(50).
changeframe(N):-
not(keypressed),
framewindow(7,"НАЖМИТЕ ПРОБЕЛ",N,
"\176\176\176\176\176\179"),
delay(2000),
N1=N-1,
changeframe(N1).
changeframe(_).
goal
makewindow(1,23,7,"КОНТРОЛЬ",5,5,10,50),
changeframe(0).
free/1
Назначение Проверяет, свободна ли переменная
Обращение free(Перем)
Домены (<переменная>)
Шаблоны описания (вх) (вых)
аргументов
Описание free согласовывается, если переменная свободна.
Неудачное Если переменная связана.
завершение
Ошибки Отсутствуют.
Пример
predicates
plus(integer,integer,integer)
numb(integer)
clauses
/* Этот предикат выполняется для всех шаблонов
описания аргументов */
plus(X,Y,Z):-bound(X),bound(Y),Z=X+Y.
plus(X,Y,Z):-free(X),free(Y),bound(Z),numb(X),
Y=Z-X.
numb(0).
numb(X):-numb(A), X=A+1.
Goal: plus(X,Y,3)
X=0, Y=3
X=1, Y=2
X=2, Y=1
X=3, Y=0
X=4, Y=-1
и тд.
frontchar/3
Назначение Возвращает первый символ в строке
Обращение frontchar(Строка,ПервСимв,ОстСтр)
Домены (string,char,string)
Шаблоны описания (вх,вых,вых),(вх,вх,вых),(вх,вых,вх),
(вх,вх,вх),(вых,вх,вх)
аргументов
Описание frontchar работает, как определено равенством:
Строка = ( сцепление ПервСимв и ОстСтр )
frontchar имеет три аргумента; первый из них строка,
второй - символ (char) (первый символ первой строки),
и третий - остальная часть первой строки.
frontchar может использоваться для разделения строки
на ряд символов или создания строки из набора
символов, а также для проверки наличия символов в
строке. Если аргумент Строка связан со значением
строки нулевой длины, то предикат дает неудачное
завершение.
Неудачное Смотри описание.
завершение
Ошибки 1034 Выходная строка в frontchar не может быть
больше 64Кбайт
Пример
Goal: frontchar("TPROLOG",Ch,Rest)
CH=T, Rest=PROLOG
1 Решение
Goal: frontchar("TPROLOG",'T',Rest)
Rest=PROLOG
1 Решение
Goal: frontchar("TPROLOG",'P',"ROLOG")
Нет
Goal: frontchar(X,'T',"PROLOG")
X=TPROLOG
1 Решение
frontstr/4
Назначение Разделяет строку на две части
Обращение frontstr(КолСимв,Строка,НачСтр,ОстСтр)
Домены (integer,string,string,string)
Шаблоны описания (вх,вх,вых,вых)
аргументов
Описание frontstr разделяет строку на две части. НачСтр
содержит первые символы строки Строка в количестве
КолСим, а ОстСтр содержит остальные символы строки
Строка.
Неудачное Смотри описание.
завершение
Ошибки Отсутствуют.
Пример
Goal: frontstr(3,"All boys do fine",Str1,Str2)
Str1=All, Str2= boys do fine
1 Решение
Goal: frontstr(9,"All boys do fine",Str1,Str2)
Str1=All boys , Str2=do fine
1 Решение
Goal: frontstr(0,"All boys do fine",Str1,Str2)
Str1=, Str2=All boys do fine
1 Решение
Goal: frontstr(-1,"All boys do fine",Str1,Str2)
0 Решений
Goal: frontstr(20,"All boys do fine",Str1,Str2)
0 Решений
fronttoken/3
Назначение Возвращает первое обозначение в строке
Обращение fronttoken(Строка,Знак,ОстСтр)
Домены (string,string,string)
Шаблоны описания (вх,вых,вых),(вх,вх,вых),(вх,вых,вх),(вх,вх,вх)
(вых,вх,вх)
аргументов
Описание деиствие fronttoken определяется равенством:
Строка = (сцепление Знак и ОстСтр)
Последовательность из одного или более символов
составляет обозначение в следующих случаях:
# Последовательность символов составляет <имя>,
соответствующее синтаксису Турбо Пролога.
# Последовательность символов составляет целое или
вещественное число, соответствующее синтаксису
Турбо Пролога (знак числа представляет собой также
отдельное обозначение).
# Последовательность состоит из одного символа, но
это не символ пробела ASCII (десятичный код 32).
# Слова русского языка не являются обозначениями,
соответствующими синтаксису Турбо Пролога.
(вх,вх,вх)
fronttoken согласовывается, если Знак связан с первым
обозначением в строке Строка и ОстСтр связан с
остальной частью строки Строка.
(вх,вых,вых)
fronttoken связывает второй аргумент с первым
обозначением в строке и третий аргумент с остальной
частью строки.
(вх,вх,вых),(вх,вых,вх),(вых,вх,вх)
fronttoken согласовывается при связывании подходящего
(вых) аргумента с соответствующей частью строки.
Неудачное Смотри описание.
завершение
Ошибки 2008 Результирующая строка concat или
fronttoken не может быть больше 64Кбайт.
Пример
Goal: fronttoken("all boys do fine",Tok,Rest)
Tok=all, Rest= boys do fine
1 Решение
Goal: fronttoken("all+boys do fine",Tok,Rest),
fronttoken(Rest,Tok1,_)
Tok=all, Rest=+boys do fine, Tok1=+
1 Решение
Goal: fronttoken("22all boys do fine",Tok,Rest)
Tok=22, Rest=all boys do fine
1 Решение
Goal: fronttoken("22.66all boys do fine",Tok,Rest)
Tok=22.66, Rest=all boys do fine
1 Решение
Goal: fronttoken("-22.66all boys do fine",Tok,Rest)
Tok=-, Rest=22.66all boys do fine
1 Решение
Goal: fronttoken(".66all boys do fine",Tok,Rest)
Tok=., Rest=66all boys do fine
1 Решение
- Справочное руководство по турбо прологу 2.0
- Глава 2. Элементы языка 50
- Глава 3. Интерфейс с другими языками 75
- Часть 2. Стандартные предикаты 91
- Часть 3. Приложения 250
- Введение
- Дистрибутивные диски
- Рекомендуемая литература:
- Часть 1. Руководство программиста по турбо прологу глава 1. Система меню турбо пролога
- Пользователям Турбо Пролога 1.X
- Структура меню Турбо Пролога
- Выбор элементов меню.
- "Горячие" клавиши.
- Системные окна и строки помощи
- Окно редактирования.
- Как войти в окно редактирования
- Компоненты окна редактирования
- Как выйти из окна редактирования.
- Окно трассировки
- Окно сообщений
- Диалоговое окно
- Строка помощи
- Главное меню.
- Окно редактирования.
- Окно вспомогательного редактирования (Xedit).
- Окно просмотра.
- Изменение размера окон.
- Просмотр окон
- Создание нового файла.
- Загрузка существующего файла.
- Команды редактора.
- Сохранение исходного текста в файле.
- Запись исходного текста на диск
- Вспомогательный редактор
- Меню и команды
- Меню файлов (Files)
- Загрузка файлов (Load)
- "Указка" (Pick)
- Новый (New)
- Выход (Quit)
- Команда редактирования (Edit)
- Команда запуска (Run)
- Меню компиляции (Compile)
- Память (Memory)
- Меню опций (Options)
- Опции компоновки (Link Options)
- Стек (Stack)
- Область ссылок (Trail Array)
- "Куча" (Heap)
- Контроль во время исполнения (Run-time check)
- Цвета (Colors)
- Размер окна (Window size)
- Каталоги
- Текущий каталог (Current directory)
- Авто-загрузка сообщений (Avto-Load Message)
- Режим экрана (Screen mode)
- Конфигурация клавиатуры (Keyboard Configuration)
- Перемещение курсора (Cursor movement)
- Глава 2. Элементы языка
- Ключевые слова.
- Специальные предикаты.
- Разделы программы.
- Раздел доменов (domains).
- Стандартные домены.
- Списковые домены.
- Домены составных объектов.
- Файловый домен.
- Специально заданные предопределенные домены.
- Сокращение объявлений доменов.
- Объявление ссылочных доменов.
- Раздел предикатов (predicates).
- Раздел базы данных (database).
- Раздел предложений (clauses).
- Простые константы.
- Переменные.
- Составные объекты.
- Списки - Специальный вид составных объектов.
- Раздел констант.
- Условная компиляция.
- Включение файлов в вашу программу.
- Директивы компилятора.
- Управление памятью в Турбо Прологе.
- Экономия ресурсов памяти.
- Управление распределением памяти.
- Генерирование выполняемых программ.
- Модульное программирование.
- Проекты.
- Глобальные объявления.
- Глобальные домены.
- Глобальная база данных.
- Глобальные предикаты.
- Компиляция и компоновка модулей.
- Пример.
- Глава 3. Интерфейс с другими языками
- Вызов других языков из Турбо Пролога.
- Что делать перед вызовом.
- Объявление внешних предикатов.
- Вызов соглашений и передача параметров.
- Соглашение об обозначениях
- Использование ключевого слова as
- Вызов процедуры, написанной на Си из Пролога.
- Опции компилятора Турбо Си и компоновка.
- Вызов программ на языке ассемблера из Турбо Пролога.
- Использование внутреннего ассемблера Турбо Си.
- Вызов Турбо Пролога из других языков.
- Динамическое распределение памяти.
- Передача составных объектов в другие языки.
- Передача списков.
- Передача структур.
- Примеры.
- Обработка списков.
- Программирование на низком уровне.
- Часть 2. Стандартные предикаты
- Arc/5 Графика
- Bar/4 Графика
- Bt_close/2 Внешняя База Данных
- Bt_create/5 Внешняя База Данных
- Bt_delete/2 Внешняя База Данных
- Bt_open/3 Внешняя База Данных
- Bt_statistics/8 Внешняя База Данных
- Chain_delete/2 Внешняя База Данных
- Chain_first/3 Внешняя База Данных
- Chain_inserta/5 Внешняя База Данных
- Chain_insertafter/5 Внешняя База Данных
- Chain_insertz/5 Внешняя База Данных
- Chain_last/3 Внешняя База Данных
- Chain_next/3 Внешняя База Данных
- Chain_prev/3 Внешняя База Данных
- Chain_terms/5 Внешняя База Данных
- Circle/3 Графика
- Cleardevice/0 Графика
- Clearviewport/0 Графика
- Closegraph/0 Графика
- Db_btrees/2 Внешняя База Данных
- Db_chains/2 Внешняя База Данных
- Db_close/1 Внешняя База Данных
- Db_create/3 Внешняя База Данных
- Db_delete/2 Внешняя База Данных
- Db_flush/1 Внешняя База Данных
- Db_garbagecollect/1 Внешняя База Данных
- Db_open/3 Внешняя База Данных
- Db_openinvalid/3 Внешняя База Данных
- Db_statistics/5 Внешняя База Данных
- Detectgraph/2 Графика
- Drawpoly/1 Графика
- Ellipse/6 Графика
- Fillellipse/4 Графика
- Fillpoly/1 Графика
- Floodfill/3 Графика
- Getarccoords/6 Графика
- Getaspectratio/2 Графика
- Getbkcolor/1 Графика
- Getcolor/1 Графика
- Getdefaultpalette/1 Графика
- Getdrivername/1 Графика
- Getfillpattern/1 Графика
- Getfillsettings/2 Графика
- Getgraphmode/1 Графика
- Getimage/6 Графика
- Getlinesettings/3 Графика
- Getmaxcolor/1 Графика
- Getmaxx/1 Графика
- Getmaxy/1 Графика
- Getmaxmode/1 Графика
- Getmodename/2 Графика
- Getmoderange/3 Графика
- Getpalette/1 Графика
- Getpalettesize/1 Графика
- Getpixel/3 Графика
- Gettextsettings/5 Графика
- Getviewsettings/5 Графика
- Getx/1 Графика
- Gety/1 Графика
- Graphdefaults/0 Графика
- Graphresult/1 Графика
- Imagesize/5 Графика
- Initgraph/5 Графика
- Key_current/4 Внешняя База Данных
- Key_delete/4 Внешняя База Данных
- Key_first/3 Внешняя База Данных
- Key_insert/4 Внешняя База Данных
- Key_last/3 Внешняя База Данных
- Key_next/3 Внешняя База Данных
- Key_prev/3 Внешняя База Данных
- Key_search/4 Внешняя База Данных
- Line/4 Графика
- Linerel/2 Графика
- Lineto/2 Графика
- Moverel/2 Графика
- Moveto/2 Графика
- Outtext/1 Графика
- Outtextxy/3 Графика
- Pieslice/5 Графика
- Pieslicexy/6 Графика
- Putimage/4 Графика
- Putpixel/3 Графика
- Rectangle/4 Графика
- Restorecrtmode/0 Графика
- Setactivepage/1 Графика
- Setallpalette/1 Графика
- Setaspectratio/2 Графика
- Setbkcolor/1 Графика
- Setcolor/1 Графика
- Setfillpattern/2 Графика
- Setfillstyle/2 Графика
- Setgraphmode/1 Графика
- Setgraphbufsize/1 Графика
- Setlinestyle/3 Графика
- Setpalette/2 Графика
- Setrgbcolor/4 Графика
- Settextjustify/2 Графика
- Settextstyle/3 Графика
- Setusercharsize/4 Графика
- Setviewport/5 Графика
- Setvisualpage/1 Графика
- Setwritemode/1 Графика
- Term_delete/3 Внешняя База Данных
- Term_replace/4 Внешняя База Данных
- Textheight/2 Графика
- Textwidth/2 Графика
- Часть 3. Приложения приложение а. Введение вdos
- Что такое dos
- Как загрузить программу?
- Каталоги
- Подкаталоги
- Avtoexec.Bat-файл
- Команда path
- Смена каталогов
- Приложениеb. Интерактивный редактор турбо пролога
- Быстрый вход, быстрый выход
- Служебная строка окна редактора
- Основные команды редактора
- Команды Редактора, совпадающие с командами WordStar Основные команды работы с курсором
- Команды быстрого движения курсора
- Команды вставки и удаления
- Команды работы с блоками
- Остальные команды редактора
- Старые команды
- Поиск и замена
- Редактор Турбо Пролога по сравнению с WordStar
- Корректировка файла на диске.
- Приложение c. Сообщения об ошибках
- Приложение d. Различия между версиями 1.1 и 2.0
- Файл определения проекта
- Новые ограничения по именам
- Новые предопределенные домены
- Контроль состава параметров шаблона (flow pattern)
- Поддержка старых командных клавиш редактора
- Ошибочные ситуации в стандартных предикатах
- Расширение Турбо Пролога 2.0
- Системные расширения
- Приложениеe. Словарь специальных терминов
- Приложение f. Географическая база данных (Geobase)
- Использование Geobase
- Системы с 2-мя флоппи-дисковыми устройствами
- Компиляция Geobase
- Создание автономной программы
- Главное меню Geobase
- Справка
- Команды dos
- Редактор
- Запросы к базе данных
- Просмотр языка
- Корректировка языка
- Принципы Geobase
- Использование принципа Geobase
- Создание вашей базы данных
- Преобразование Geobase
- Предикат "ent"
- Предикат "db"
- Трансляция запросов на естественном языке
- Внутренние имена объектов
- Внутренние имена связей
- Определение структуры предложений
- База данных языка
- Грамматический разбор с помощью разделения списков
- Заключение
- Приложение g. Анализатор предложений на турбо прологе
- Использование анализатора предложений
- Помощь пользователя
- Операционная система
- Редактирование базы данных
- Загрузка базы данных из файла
- Сохранение базы данных
- Анализ предложений
- «Показать/изменить словарь»
- Приложениеh.Geni: оболочка экспертной системы
- Использование geni
- Запросы geni
- Просмотр знаний
- Корректировка базы знаний
- Сохранение базы знаний
- Создание новой базы знаний
- Чистка текущей базы знаний
- Проектирование новой базы знаний
- Приложение I. Tlib: библиотека турбо
- Компоненты командной строки tlib
- Компонент «описание»
- Список операций
- Имена файла и модуля
- Операции tlib
- Создание библиотеки
- Использование файла ответа
- Расширенные возможности: опция /с
- Примеры
- Приложение j. Tlink: компоновщик турбо
- Активизация tlink
- Использование ответных файлов
- Компоновка модулей Турбо Пролога и Турбо Си.
- Модуль инициализации
- Библиотеки
- Опции tlink
- Опция /c
- Опция /d
- Опция /I
- Опция /l
- Опции /m, /s, /X
- Опция /m
- Опция /s
- Опция /X
- Опция /n
- Ограничения
- Сообщения об ошибках
- Предупреждения
- Нефатальные ошибки
- Фатальные ошибки
- Приложение k. Метапрограммирование Введение
- Пролог/Турбо: развитие и философские установки
- Конструкторские решения в Турбо Прологе
- Чем Турбо зарядило Турбо Пролог
- Интерпретатор правил с обратной цепочкой рассуждений
- Термы (горючее для интерпретатора правил)
- Статические термы: область sTerm (статических термов)
- Интерпретирование области термов.
- Что такое интерпретатор?
- Интерпретация правил в Прологе
- Использование sTerm и aTerm для моделирования интерпретатора правил
- Переменные и среда
- Процесс унификации
- Унификация статических и действительных термов
- Интерпретация тела правила
- Выполнение выполняемых термов: предикат call.
- Встроенные предикаты
- Сканнер и транслятор
- Операторы традиционного Пролога
- Использование операторов в Турбо Прологе
- Интерпретатор Пролога
- Реализация трассировки
- Теперь объединим все вместе
- Расширения экспертной системы
- Цепочка с прямым порядком рассуждений
- Стандартные предикаты, реализованные в pie
- Заключение