5.2.1. Вывод литер

5.2.1. Вывод литер

Если переменная X имеет в качестве значения некоторую литеру (ее код ASCII), то эта литера будет напечатана при обработке целевого утверждения put(X). Предикат put всегда выполняется и не может быть пересогласован (это приводит к неудаче). В качестве «побочного эффекта» put печатает литеру на дисплее терминала. Например, мы можем напечатать слово hello довольно необычным способом:

?- put(104),put(101),put(108),put(108),put(111).

hello

Результатом такой конъюнкции целей является печать Прологом литер h, е, l, l, о непосредственно под вопросом, как показано выше. Мы уже видели, что имеется возможность начать печать текста с начала следующей строки, использовав для этого предикат без аргументов nl. В действительности nl «печатает» некоторые управляющие литеры, что вызывает перевод курсора на дисплее терминала на начало следующей строки. Вопрос

?- put(104),put(105),nl,put(116),put(104),put(101),put(114), put(1O1).

вызвал бы следующую печать:

hi

there

Другой предикат, с которым мы уже познакомились, - это tab(X), печатающий X пробелов (ASCII код равен 32). Разумеется, переменной X должно быть присвоено целое число. Отметим, что предикат tab(X) мог бы быть определен так:

tab(0):- !.

tab(N):- put(32), M is N-1, tab(M).

Теперь мы можем определить предикат, который мы назовем печать_строки. Если значением переменной X является список кодов литер (строка), то целевое утверждение печать_строки напечатает этот список (строку), используя put для печати каждого элемента списка. Как и во всех подобных программах, граничным условием является появление пустого списка. Это условие мы и используем для завершения рекурсии. При непустом списке с помощью put печатается голова списка, а затем используем печать_строки – хвост списка:

печать_строки([]).

печать_строки([Н|Т]):- put(H), печать_строки(Т).

?- печать_строки(«Чарлз V отрекся от престола в Брюсселе»).

Чарлз V отрекся от престола в Брюсселе

Если мы решили представлять краткое содержание исторических событий как строки литер, а не как списки атомов, то такого определения вполне достаточно, чтобы печатать строки из базы данных для предиката событие.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

1.1.1 Вывод

Из книги C++ автора Хилл Мюррей

1.1.1 Вывод Прежде всего, давайте напишем программу, выводящую строку выдачи:#include «stream.h»main() (* cout «„ «Hello, world “; *)Строка #include «stream.h» сообщает компилятору, чтобы он включил стандартные возможности потока ввода и вывода, находящиеся в файле stream.h. Без этих описаний выражение cout


8.2 Вывод

Из книги Давайте создадим компилятор! автора Креншоу Джек

8.2 Вывод В этом разделе сначала обсуждаются средства форматного и бесформатного вывода встроенных типов, потом приводится стадартный способ спецификации действий вывода для определяемых пользователем


Ввод/Вывод

Из книги Программирование на языке Пролог автора Клоксин У.


5.2. Ввод и вывод литер

Из книги Криптоанархия, кибергосударства и пиратские утопии автора Ладлоу Питер

5.2. Ввод и вывод литер Наименьшей единицей данных, которая может участвовать в операциях ввода-вывода, является литера. Мы уже знаем, что литеры интерпретируются как небольшие целые числа в соответствии с кодом ASCII. В Прологе имеется несколько встроенных предикатов для


5.2.2. Ввод литер

Из книги Pinnacle Studio 11 автора Чиртик Александр Анатольевич

5.2.2. Ввод литер Для ввода литер, набираемых на клавиатуре терминала, могут быть использованы предикаты get0(X) и get(X). Эти предикаты всегда согласуются с базой данных, если их аргументы неконкре-тизированы, а попытка повторного согласования всегда неудачна. При обработке


Вывод

Из книги Интернет решения от доктора Боба автора Сворт Боб

Вывод Криптоанархия — это международная угроза, распространение которой стимулируется развитием систем коммуникаций, в том числе телефонии и Интернета. Чтобы бороться с этой угрозой, необходим интернациональный подход к обеспечению безопасности международных


Вывод в файл

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Вывод в файл Вывод в файл целесообразно применять, если проект предназначен для публикации в Интернете, а также если для его просмотра предполагают использовать исключительно компьютер или устройство с возможностями воспроизведения видеофайлов (к примеру, мобильные


Вывод на диск

Из книги Антимозг [Цифровые технологии и мозг] автора Шпитцер Манфред

Вывод на диск Pinnacle Studio можно использовать для вывода проекта в формате VCD, S-VCD, DVD, HD-DVD и AVCHV (Blu-ray). При этом Studio может записать видео сразу на диск, экономя пользователю время на работу с утилитами записи дисков. Видеокурс Как выводить видео на диск, показывается в видеоуроке


Вывод текста

Из книги автора

Вывод текста Было бы странно, если канва не позволяла выводить произвольный текст. Существуют два метода и несколько свойств для вывода текста.Метод strokeText выводит заданный текст в указанное место. Текст рисуется в виде контура, без заливки; цвет контура задается


Вывод

Из книги автора

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


Вывод

Из книги автора

Вывод Компьютеры обрабатывают информацию. Люди, которые учатся — тоже. Из этого делается неверный вывод, что компьютеры — идеальные инструменты для обучения. Однако именно потому, что компьютеры, ноутбуки и смартборды делают умственную работу за нас, для обучения они не


Вывод

Из книги автора

Вывод Тот, кто хранит плоды своего умственного труда на цифровых носителях или на «облаке» в Интернете, наряду с уменьшением непосредственной нагрузки на головной мозг получает еще одну проблему. У этого человека полностью исчезает мотивация для запоминания новой


Вывод

Из книги автора

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


Вывод

Из книги автора

Вывод Удивительно, как международные концерны снова и снова умудряются водить за нос целые поколения людей во многих странах мира. Создаются телепередачи и видеодиски, рекламируется их положительное воздействие на детей (почти всегда речь идет об обучении) и их успешно