Искусственный интеллект. Строки, контекст и волны на Паскале. Сергей Соболенко
Чтение книги онлайн.

Читать онлайн книгу Искусственный интеллект. Строки, контекст и волны на Паскале - Сергей Соболенко страница 11

СКАЧАТЬ элементы как вложенная процедура Deldbspace – удаления двойных и тройных пробелов, а также пробелов, стоящих перед началом и в конце строки:

      Илл.24. Процедура «очистки» строки от двойных-тройных пробелов, а также пробелов в начале и в конце строки.

      Теперь постараемся подытожить то, что мы получили.

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

      Вернемся к нашей проблеме с кодировкой, но теперь будем во всеоружии:

      Илл. 25. Обработка ненормализованной строки из кодировки Win, которая содержит лишние пробелы.

      Здесь исходная строка написана в кодировке Win и содержит лишние пробелы. Мы перекодируем ее в кодировку DOS, с помощью процедуры Decodetodos, переводим в верхний регистр (и убираем лишние пробелы) с помощью процедуры Getups, и получаем последнее слово строки «раму».

      Илл. 26. Нормализация данных привела к требуемому результату, нужному слову в нужном написании.

      Следует упомянуть еще о нескольких базовых процедурах работы со строками в Паскале.

      Преобразования строк

      Str (N, S); – преобразует число N в строку S.

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

      Для наглядности, рассмотрим процедуру, которая генерирует строку информации о завтрашней дате в читаемом формате. Результат должен выглядеть, допустим, так: «1 марта 2019 года». Все что у нас есть, это информация о дате сегодняшней, полученной посредством оператора GetDate. Эта информация кажется банальной, но в ней мы должны учесть в случае необходимости, содержит ли текущий месяц 30 или 31 день. Также стоит знать, является ли год високосным, если сегодня 28 февраля; стало быть завтрашний день может быть как первым днем календарной весны, так и 29 февраля. Как осуществить этот выбор?

      Оператор Str здесь используется дважды в конце: для преобразования числа года и дня и последующей их конкатенации (иначе говоря, объединения) в одной строке.

      Илл. 27. Листинг процедуры Gettomorrow, получающей точную завтрашнюю дату в формате строки.

      Что происходит? В качестве выходной переменной процедуры мы указали единственную переменную S, в которую будет необходимо отправить результат – строку с датой. Далее, внутренними переменными мы описали Year (год), Month (месяц), Day (день) и Day_of_week (день недели); а также их строковые версии: Years, Months, Days. (Поскольку день недели в данном случае нам не интересен, мы не будем заниматься его описанием и преобразованием).

      Первоначально, получив из операционной системы информацию о дате в формате чисел «GetDate СКАЧАТЬ