Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Манипулирование символами




Символ записывается в текущий выходной поток с помощью следующей цели: putt CJ

где С — код ASCII (число от С до 127) выводимого символа. Например, вопрос?- put(65}, put(66;, put(67) вызывает вывод следующих данных: ABC

где 65 — код ASCII символа "А",66 — символа "В" и 67 — символа "С".

Отдельный символ может быть считан из текущего входного потока с помощью цели getO(С]

Эта цель вызывает чтение текущего символа из входного потока и конкретизацию
переменной с значением кода ASCII этого символа. Вариантом предиката явля-

ется get, который используется для чтения непробельных символов (символов, от­личных от пробела, знака табуляции и т.п.). Поэтому цель get{ С)

вызывает пропуск всех непечатаемых символов (в частности, пробелов) от текущей позиции ввода во входном потоке вплоть до первого печатаемого символа. После это­го, как обычно, считывается данный символ и переменная С конкретизируется зна­чением его кода ASCII.

В качестве примера использования предикатов, передающих отдельные символы,
определим процедуру squeeze, предназначенную для выполнения следующей зада­
чи: вводить текст из текущего входного потока и выводить тот же текст, переформа­
тированный таким образом, что несколько пробелов между словами заменяются оди­
нарными пробелами. Для простоты предположим, что любой текст, обрабатываемый
процедурой squeeze, оканчивается точкой и что слова разделены одним или не­
сколькими пробелами, а не другими символами. В таком случае допустимые входные
данные имеют вид
The robot tried to pour wine out of the bottle.

Цель squeeze выведет этот текст в следующей форме: The robot tried to pour wine out of the bottle.

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

saueeze:-getOt С), putt О, dorest (С).

dorest t 46):-!. f «G - это код точки в кодировке ASCII; вся работа выполнена dorest. (32) :-\, % 32 - это код пробела в кодировке ASCII

get(С), * Пропустить остальные пробелы

put(С),

dorest С с). dorest(Letter):-

squeeze.

Глава 6. Ввод и вывод 143


Упражнение

6.3. Обобщите процедуру squeeze, чтобы она позволяла также обрабатывать запя­тые. Необходимо удалять все пробелы, которые непосредственно предшествуют занятым, а после каждой запятой должен находиться один пробел.





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 439 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если президенты не могут делать этого со своими женами, они делают это со своими странами © Иосиф Бродский
==> читать все изречения...

2517 - | 2393 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.