рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Команды операционной системы

Команды операционной системы - раздел Программирование, Логическое программирование   Для Выполнения Команд System И Dir Необходимо, Чтобы ...

 

Для выполнения команд system и dir необходимо, чтобы

Турбо-Прологу была доступна дискета с COMMAND. СОМ.

 

system(команда)

(string):(i)

 

Передает указанную команду операционной системе.

 

date(год.месяц,день)

(integer,integer,integer): (i,i, i)(0,0,0)

 

Устанавливает (i,i,i) или возврапрет (i,i,i) системную дату.

time( часы, минуты, секунды, сотые_секунды)

(integer,integer,integer,integer): (i,i,i,i)(0,0,0,0)

 

Устанавливает (i,i,i,i) или возвращает (0,0,0,0) системное

время.

 

mеmbyte(сегмент,смещение,байт)

(integer,integer,integer):(i,i,i) (i,i,о)

 

Пишет (i,i,i) или возвращает (i,i,о) байт, адрес памяти которого

равен сегмент * 16 + смещение (offset). Адреса в диапазоне

[32768,65536] рассматриваются как отрицательные целые числа.

 

menword(сегмент,смещение,слово)

(integer,integer,integer):(i,i,i) (i,i,o)

 

Пишет (i,i,i) или возвращает (i,i,o) слово, адрес памяти

которого равен сегмент * 16 + смещение. Адреса в диапазоне

[32768,65536] рассматриваются как отрицательные целые числа.

 

portbyte(номер_порта,байт)

(integer,integer): (i,i)(i,о)

 

Пишет (i,i) байт в указанный порт, или возвращает (i,о) байт от

него.

 

ptr_dvord( строка_переменная,сегмент,смещение)

(string,integer,integer):(i,о,о)(о,i,i)

 

Возвращает (i,o,o) внутренние адреса сегмента и смешения указанной

конкретизированной строкой_переменной, или возвращает (о,i,i)

строку (.чонец при байте NUL) указанных адресов.

 

diг(маршрут,спецификация_файла,имя_файла)

(string,string,string):(i,i,о)

 

Выдаются специфированные файлы из подкаталога (по маршруту).

Возможно выбрать один файл с помощью стрелок. При нажатии <ВК>

возвращается имя выбранного файла.

Например, файл выбрать, читать, редактировать и писать обратно:

 

goal

makewindow(1.7,7,"",0,0,25,80),

dir("a: ","*. *",F), /* выбрать файл */

file_str(F,S), /* читать его */

edit(S,N), /* редактировать */

file_str(F,N). /* писать обратно */

 

stогаgе(стек,хип,трейл) .

(real,real,real): (о,о,о)

 

Возвращает размеры стека, "кучи" (heap) и "хвоста" (trail).

 

blos(номер_прерывания,вх_регистр,вых_регистр)

(integer, regdom, regdom): (i, i, о)

 

Активизирует прерывание биоса с указанным номером, с указанными

в вх_регистр значениями регистров и возвращает значения

регистров после выполнения прерывания в вых_регистр. Вх_регистр

и вых_регистр относятся к сгенерированной внутри Турбо-Пролога

области определения regdom, которая определена как

regdom=reg(AX,ВХ,СХ,DX,SI,DI,DS,ES), где AX... ES типа lnteger.

 

Дополнительные предикаты для работы Турбо-пролога

 

bound(переменная)

 

Истинно, если переменная является конкретизированной.

 

free(переменная)

 

Истинно, если переменная является неконкретиаированной.

Например, предикат для сложения, который реализует конкретизации

(i,i,0), (i,0,i), (0,i,i) И (i,i,i):

 

predicates

plus( real, real, real)

clauses

plus(X,Y,Z):-

free(Z),bound(X),bound(Y),Z=X+Y,I. /* сложение */

plus(X,Y,Z):-

 

free(Y),bound(X),bound(Z),Y»Z-X,I. /* вычетание */

plus(X,Y,Z):-

 

free(X),bound(Y),bound(Z),X»Z-Y,l. /* вычетание */

plus(X,Y,Z):- .

bound(X),bound(Y),bound(Z),Z"X+Y. /* проверка */

 

После 'запуска можно указать внешние цели:

 

Goal: ответ (без количества решений)

plus(3,2,X) .X=5

plus(3,X,5) X=2

plus(X,2,5) X=3

plus(3,2,5) True

plus(3,2,6) False

 

isname(строка)

(string) :(i)

 

Истинно, если строка является именем встроенного предиката

Турбо-Пролога.

 

fail

Всегда ложно. Вызывает возврат.

 

Отсечение. Ограничивает возврат .

 

findall(переменная,предикат(...),список_решений)

 

В списке решений возвращается все решения для указанной

переменной в указанном предикате. Для списка решений должна быть

указана подходящая область определения.

Например, из множества адресов выбрать определенные:

 

domains

familija=string

gorod =string

spisok_rai'nllij-familija* /* / области определения для */

spisok_gorodov=gorod* /* ответных списков findall */

predicates

adres(familija,eorod)

clauses

adres("Иванов","Киев").

adres("Гринхофс","Рига").

adres("Шевченко","Киев").

adres("Иванов","Рига").

goal

findall(Gor,adres("Иванов",Gor).Spisok1),

nl,write(Spisokl), /* выводит ["Киев","Рига"] */

findall (Fam, adres( Fam, ) , Spisok2),

nl,wrlte(Splsok2).

 

/* выводит ["Иванов", "Гринхофс", "Шэвченко", "Иванов"] */

 

exit

 

Останавливает выполнение пользовательской программы и передает

управление меню Турбо-Пролога.

 

not(подцель)

Истинно, если подцель ложна.

 

trace .

 

Общее включение режима отладки. Указывается в начале исходной

программы.

 

trace(статус)

(symbol) :(i)(0)

 

Устанавливает (i) или возвращает (0) текущий режим отладки. В

начале исходной программы должен быть указан предикат trace. В

качестве статуса возможно указать on - для включение, off - для

выключения отладки. Этот предикат позволяет выборочно отладить

программу.

 

diagnostics

 

Комприлятор выдает анализ программы, в который входит:

-- имена использованных предикатов;

- являются ли дизъюнкты для определенного предиката фактами или

нет;

- является ли предикат детерминированным или нет;

- размер кода каждого предиката;

- конкретизированность предиката;

- области определения аргументов.

 

nowarnings

 

При компиляции исходной программы не будут выдаваться

предупреждения.

 

project "имя_файла"

Указывает, что данная программа является частью проекта.

 

include "имя_файла"

В компиляцию включается файл с указанным именем.

 

– Конец работы –

Эта тема принадлежит разделу:

Логическое программирование

Логическое программирование... После многолетних теоретических работ по математической логике в году в... Для программиста особенность языка Пролог состоит в том что он на основе выражений логики предикатов может заниматься...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Команды операционной системы

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Логика высказываний
Формально-логические высказывания представляются с помощью букв, с которыми производятся логические операции. Например, предложение: Машина находится у дома. Является выс

Логика предикатов
С помощью логики предикатов можно выразить связи между различными вещами. Формально высказывания в логике предикатов имеют вид: P(t1,t2,…tn), Где t1, t2, …, tn – аргументы,

Живущей в монастыре.
Строгая аббатиса дает Марии точные указания, какие правила необходимо соблюдать в монастыре, в частности, что туда нельзя пропускать мужчин. Но однажды аббатиса обнаружила в монастыре мужчину и ста

Дизъюнкты
База данных составляется с помощью предикатов, каждый из которых описывается множеством дизъюнктов: Функтор(аргумент1, аргумент2, …):-условие1,условие2,… . Где функтор- имя предик

Константы и переменные
Константы должны начинаться с маленькой буквы, либо стоять в одинарных или бинарных кавычках, либо они являются числами: -mother -price -list‘f’ 169 1.4e-3  

Секции программы
Секция domains-(объявление областей определения). 1 Способ. имя области = d где d- любой тип. Например person=string nomer=integer

Обработка программ Турбо Прологом
Обработка программ ведется по принципу “поиска вглубь”.Это означает, что ТП всегда пытается доказать утверждение в дизъюнктах слева направо с помощью фактов и правил из базы данных. Целево

Возврат и отсечение
ТП в случае, если есть больше одного дизъюнкта для одного предиката, отмечает этот дизъюнкт точкой решения, чтобы он мог вернутся в эту точку и продолжить работу со следующим дизъюнктом, даже есла

Рекурсия
Вычисление факториала: .f(0)=1 f(n+1)=(n+1)*f(n) .predikrtes fak(integer, real) .clauses fak(0,1):-!. /* 0!=1 */ fak(N, Fak):- N>0, /*только

Работа с файлами
/* telefon book + file */ trace domains name,adr= string datad=c(name,adr) file=d predicates person(name,adr) getdata(file)

Изменения в базе данных
  asserta(факт) (dbasedom): (i)   Добавляет новый факт перед остальными фактами того жe предиката в оперативную базу данных. Факт должен быть

Арифметика
  Арифметические утверждения присваивания имеют следующий общий вид:   результат = операнд1 оператор операнд2   В качестве опера

Работа с данными типа string
  concat( строка1, строка2, строкаЗ) (string,string,string):(i,i,i)(i,i,o)(i,o,i)(o,i,i)   В зависимости от конкретизации выполняется лексикографическа

Преобразование типов
  Все предикаты преобразования типов действуют в обе стороны ((i,о) и (o,i)), а случай (i,i) проверяет истинность (не для предиката real). Преобразование между типам

Версии Турбо-Пролога
  Данные методические указания описывают версию 1.0. Уже доступная версия Турбо-Пролог 1.1 имеет следующие дополнительные возможности: - предикат makewindow

Внешняя среда системы Турбо-Пролог
  Турбо-Пролог после запуска предпологает определенную конфигурацию своих и пользовательских файлов. Различаются пять каталогов: 1. Турбо-каталог. Здесь дол

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги