- •Тема 1 Основные понятия и определения
- •Тема 3 Проектирование программных продуктов.
- •Основные группы методов
- •Эвристические методы
- •Метод итераций (последовательного приближения)
- •Метод декомпозиции
- •Метод контрольных вопросов
- •Тема 4 Структура и формат, статические и динамические данные.
- •Тема 5 Стандартизация программных продуктов
- •Стандартизация программных продуктов
- •Система качества пп
- •Тема 6 Модульное программирование
- •Тема 6 Модульное программирование
- •2. Минимизации количества передаваемых параметров
- •Тема 7 Эффективность и оптимизация программ
- •1. Эффективность и технологичность. Способы экономии памяти. Способы уменьшения времени выполнения
- •2. Правила оптимизации программ
- •Жертвуем памятью ради скорости
- •Жертвуем скоростью ради памяти
- •Логические правила
- •Составление процедур
- •Составление выражений
- •Тема 8 Требования и спецификация качества к программных продуктов
- •Тема 9 Защита программ
- •Тема 10 Инструментальные средства разработки программ
- •Тема 11 Коллективная разработка программных средств
- •1.1 Структура управления разработкой программных средств.
- •Тема 12 Объектный подход к разработке программных продуктов
- •Тема 13 Факторы надежности программных продуктов
- •Тема 14 Структурное программирование программных продуктов
- •Тема 15 Объектно-ориентированное программирование (ооп)
- •Тема 15 Объектно-ориентированное программирование (ооп)
- •Тема 16 Стиль программирования
- •Тема 16 Стиль программирования
- •Тема 17 Отладка, тестирование, сопровождение программ
- •2.Тестирование «белым ящиков»
- •6.Виды сопровождения и отладок пп.
- •Тема 18 Экономические аспекты создания и использования программных средств
- •Тема 20 Пакеты прикладных программ
- •Тема 21 Язык программирования Турбо-Пролог
- •Язык Пролог
- •Тема 22 Списки и структуры в Прологе.
- •Списки в Прологе
- •Тема 23 Работа с файлами и динамическими базами данных в Прологе
- •Работа с файлами
- •Работа с файлами
- •3.6.3. Динамические базы данных
Тема 23 Работа с файлами и динамическими базами данных в Прологе
Работа с файлами. Формирование термов. Обработка символов. Средства для реализации программы.
Работа с файлами
Текущим входным потоком данных по умолчанию является клавиатура (user). Предикат see(X) открывает файл X, если он еще не открыт, и файл X становится текущим входным потоком данных. Цель seeing(X) успешна, если имя текущего входного потока сопоставимо с X. Предикат seen закрывает текущий входной поток и переключается на интерактивный ввод данных от пользователя.
Текущим выходным потоком данных по умолчанию является экран (user). Предикат tell(X) открывает файл X, если он еще не открыт, и файл X становится текущим выходным потоком данных Цель telling(X) успешна, если имя текущего выходного потока сопоставимо с X. Предикат told закрывает текущий выходной поток и переключается на интерактивный вывод данных пользователю.
Выше перечислены классические предикаты, используемый в Эдинбургской нотации.
Следует отметить, что SWI-Пролог содержит избыточное множество встроенных предикатов для работы с файловой системой (часть которых представлена ниже), и даже поддерживает ряд команд, заимствованных из ОС Unix (например, вызов ls. - выдаст список всех файлов в текущей рабочей директории, а команда cd('../'). - сменит текущий рабочий каталог на его родительскую директорию).
Работа с файлами
Текущим входным потоком данных по умолчанию является клавиатура (user). Предикат see(X) открывает файл X, если он еще не открыт, и файл X становится текущим входным потоком данных. Цель seeing(X) успешна, если имя текущего входного потока сопоставимо с X. Предикат seen закрывает текущий входной поток и переключается на интерактивный ввод данных от пользователя.
Текущим выходным потоком данных по умолчанию является экран (user). Предикат tell(X) открывает файл X, если он еще не открыт, и файл X становится текущим выходным потоком данных Цель telling(X) успешна, если имя текущего выходного потока сопоставимо с X. Предикат told закрывает текущий выходной поток и переключается на интерактивный вывод данных пользователю.
Выше перечислены классические предикаты, используемый в Эдинбургской нотации.
Следует отметить, что SWI-Пролог содержит избыточное множество встроенных предикатов для работы с файловой системой (часть которых представлена ниже), и даже поддерживает ряд команд, заимствованных из ОС Unix (например, вызов ls. - выдаст список всех файлов в текущей рабочей директории, а команда cd('../'). - сменит текущий рабочий каталог на его родительскую директорию).
В диалекте SWI-Пролога в частности заслуживают внимания следующие предикаты (их подробное описание можно найти в программной справке):
edit/1 - редактирование файла
open/3 - открытие файла (создание потока)
append/1 - добавление данных в конец файла
include/1 - подключить файл с объявлениями
load_files/2 - загрузка исходных кодов программ с опциями
read_file_to_terms/3 - чтение содержимого файла в виде термов
exists_file/1 - проверить существование файла (по заданному пути)
delete_directory/1 - удаление заданной директории
delete_file/1 - удаление заданного файла
absolute_file_name/2 - получить абсолютный путь к файлу
file_base_name/2 - получить имя файла из полного пути
file_directory_name/2 - получить путь к файлу (вплоть до последней директории)