ЛАБОРАТОРНАЯ РАБОТА № 5. Цель занятия:Изучение способов представления символов и строк, а также реализаций операций над строками.
По дисциплине: СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА Тема занятия:ОБРАБОТКА СТРОК Цель занятия:Изучение способов представления символов и строк, а также реализаций операций над строками. Количество часов: 4 Содержание работы: Разработать программу реализующую различные способы представления символов и строк, а также выполнения операций над строками.
Методические указания по выполнению:
СТРОКА (string) - это один из типов данных, с которыми работает Prolog. Это набор символов английского или русского алфавита, цифры, специальные символы %, $, @ и многие другие, а также управляющие символы. Строка является самым распространенным объектом в программировании. Это последовательность символов, набираемых на клавиатуре, команды управления программами и обрабатываемые данные.
Поэтому очень важно освоить все многообразие операций, выполняемых над строками.
ПРЕДСТАВЛЕНИЕ СИМВОЛОВ И СТРОК Система числовых кодов, используемая при программировании, имеет единый стандарт и называется Американским стандартным кодом для обмена информацией (American Standard Coding for Information interchange (ASCII)). Обычно таблица кодов ASCII подразделяется на две части, две половины. Первая из них содержит коды от 0 до 127 и, как правило, не изменяется. Во второй, с кодами от 128 до 255, помещены буквы национальных алфавитов и специальные символы.
Первые 32 кода (от 0 до 31) являются управляющими и служат, как правило, для передачи команд управления, например: код 3 - прерывание выполнения программы (Ctrl-C), код 10 - конец строки (Ctrl-J), код 13 - возврат каретки (Ctrl-M), код 20 - включение и выключение трассировки (Ctrl-T), код 27 - Esc и т.д. С 32-го кода кодируются служебные символы (пробел -32, запятая - 44 и т.д.), затем цифры от 0 до 9 с кодами от 48 до 57. С 65 по 90 кодируются прописные буквы латинского алфавита от A до Z. С 97 по 122 - строчные буквы от a до z. Русские строчные буквы - А, Б, В,..., Я - коды 128, 129, 130,..., 159, прописные русские буквы а, б, в,..., м, н, о, п - 160-175, р, с, т, ..., я - 224 - 239, е - 240.
Для представления с помощью кодов ASCII одиночного символа используется его код (N), перед которым ставится обратный слэш (\), и все заключается в одиночные кавычки: ‘\N’. А для представления строки символов коды каждого символа записываются один за другим и вся последовательность заключается в двойные кавычки: «\N\N\N\N».
Например, десятичный код символа Я есть 159, поэтому этот единичный символ представляется так: ‘\159’, строка РОССИЯ - «\144\142\145\145\136\159», PDC Prolog - «\80\68\67\32\80\114\111\108\111\103». Десятичное число 1937.48 - «\49\57\51\55\46\52\56».
Все эти записи символов и строк с помощью кодов ASCII могут широко использоваться в различных задачах.
ОПЕРАЦИИ НАД СТРОКАМИ Все многообразие операций над строками можно условно разделить на две группы: операции над структурой самих строк (определение длины строки, конкатенация, создание подстрок, преобразование строк в списки) и операции преобразования типов.
Для реализации первой группы операций используется несколько встроенных предикатов.
Большинство стандартных предикатов могут использоваться для выполнения нескольких функций в зависимости от того, как эти предикаты вызываются. В зависимости от ситуации определенный параметр может иметь известное значение. В другой ситуации некоторые параметры могут быть неизвестны. А для определенных целей некоторые параметры должны иметь значение в момент вызова предиката. Известные параметры называют входными (in), а неизвестные – выходными (out). Сочетание входных и выходных параметров в момент вызова предиката определяет характер его выполнения. Это сочетание параметров называют текущим состоянием параметров (flow pattern). Если предикат имеет два параметра, то возможны четыре текущих состояния: (i,i), (i,o), (o,i), (o,o). Где “i” означает входной параметр, а “o” – выходной. Не имеет смысла использовать каждый предикат для всех возможных состояний входных параметров. Например, не следует вызывать предикат readchar(X) c переменной Х, имеющей значение, т.е. со входным (i) параметром.
В этой работе описание стандартных предикатов будет сопровождаться указанием возможных текущих состояний.
ОПРЕДЕЛЕНИЕ ДЛИНЫ СТРОКИ
Длина строки - это количество символов в строке. Для этого используется встроенный предикат str_len (String_value, String_length), (i,i),(i,o),(o,i) где String_value - переменная со строковым значением, а String_length - длина этой строки.
Например, при обработке предиката str_len(«Россия»,Z) переменная Z означивается значением длины строки «Россия» (Z=6). Результат обработки предиката str_len(S,L) успешен, если S=ABC, а L=3 и неуспешен, например, если S=1999, а L=2.
Пример 5.1 демонстрирует использование этого предиката.
/*Пример 5.1.*/
|