- •5.5.2. Стандартные функции для данных типа char
- •5.5.3. Определение переменных строкового типа. Особенности типа string
- •5.5.4. Строковые выражения
- •5.5.5. Строковые процедуры и функции
- •5.6. Пример программы
- •Var X : array [1..10] of string[8]; {Массив слов}
- •V : real; {Параметр для процедуры Val}
- •I, j : byte; {Переменные цикла}
- •5.7. Варианты заданий
- •5.8. Содержание отчета (см. П. 1.10)
- •5.9. Контрольные вопросы
Лабораторная работа № 5
Разработка программ обработки символьных и строковых данных
5.1. Цель работы
Приобретение навыков разработки программ отработки символьных и строковых данных на языке Turbo Pascal.
5.2. Задание на лабораторную работу
Составить программу обработки строковых данных заданной структуры (в соответствии с вариантом задания (п. 5.7)) и преобразования исходных данных.
5.3. Требования к программе
Программа должна выполнять следующие действия:
– ввод данных и вывод сообщений-подсказок перед вводом данных;
– вывод результатов:
– преобразования: выражения типа байт в символ (Chr); изображения символа в код типа байт (Ord); числа (целого или вещественного) в строку (Str) и вывод строки; строки в число целого или вещественного типа (Val) и вывод результатов преобразований.
5.4. Порядок выполнения работы
1. Составить вариант задания (п. 5.7, таблицы 5.4, 5, 5.6)
2. Изучить операторы определения переменных символьного и строкового типа (п. 5.5).
3. Разработать и отладить программу обработки строковых данных, преобразования данных.
4. Устно ответить на контрольные вопросы (п. 5.9).
5. Оформить отчет (см. п. 1.10).
5.5. Справки по операторам определения и обработки символьных и строковых данных на языке Turbo Pascal
5.5.1. Операторы определения и обработки символьных данных
Тип данных CHAR обозначает множество символов ASCII, коды которых представлены в таблице (см. приложение 1). Диапазон значений кодов от 0 до 255. Первые 32 символа таблицы кодов ASCII являются управляющими символами, используемыми при работе с внешними устройствами и передаче данных.
Переменная типа CHAR имеет длину 1 байт. Символьные константы задаются путем заключения отдельного символа в апострофы.
Например,
в разделе констант: const sym1 = ‘A’ ;
или в операторах присваивания: S: = ’B’;
или в выражениях: S > ‘A’.
Переменные символьного типа, например S1 и S2, определяются в разделе переменных по правилу:
var S1, S2: char;
5.5.2. Стандартные функции для данных типа char
Информация о функциях для переменных типа Сhar дана в таблице 5.2.
Таблица 5.2
Назначение функции |
Идентификатор |
Тип аргумента |
Тип функции |
Пример |
Преобразование выражения типа байт в символ |
Chr |
Byte |
char |
x:=68; y:= chr(x); {y='D'} y:=chr(2*x-5); {y='Г'} |
Преобразование изображения символа в код типа байт |
Ord |
Char |
Byte |
x:='A'; y:=ord(x); {y=128} |
Возвращение предыдущего символа |
Pred |
Char |
Char |
x:='Б'; y:=pred(x); {y='A'} |
Возвращение следующего символа |
Succ |
Char |
Char |
x:='Г'; y:=succ(x); {y='Д'} |
Преобразование строчной буквы в прописную |
Upcase |
Char |
Char |
Ch:=’d’ Y:=Upcase(Ch) {Y=’D’} |
5.5.3. Определение переменных строкового типа. Особенности типа string
Строка – это последовательность символов кодовой таблицы персонального компьютера.
Доступ к отдельному символу может быть получен путем ссылки на него при помощи индекса. Байт в позиции 0 (доступный лишь при отмене проверки диапазона) хранит число, представляющее длину текущего значения переменной типа STRING.
Применение строковых переменных в качестве селектора в операторе CASE недопустимо.
Формат определения констант строкового типа:
Const <идентификатор>=<значение>;
Например,... С1 = ‘строка 1’; ...
Формат определения переменных строкового типа:
{Описание переменной типа String с помощью заданного программистом типа}
Type
<имя типа> = string[максимальная длина строки];
Var
<идентификатор,...>:<имя типа>;
{Описание переменной типа String без заданного программистом типа}
<идентификатор,...>:string[максимальная длина строки];
Максимальная длина строки не более 255; значение 255 можно не задавать.
Пример описания строк и считывания строки:
Program StrTest;
const
S1='Начало работы программы’ {Пример константы строкового типа};
var
S2: string[10];
Begin
WriteLn(S1); {Вывод значения строковой константы}
Write(' Введите строку:');
ReadLn(S2);
WriteLn(' Длина введенной строки ',S,' равна ',ord(S2[0]));
End.
Запись S[0] дает доступ к нулевому байту, содержащему значение текущей длины строки.
Значение нулевого байта не должно превышать 255, но нарушение этого правила не вызывает программного прерывания, так как директива компилятора R по умолчанию находится в пассивном состоянии {$R-}. Для обеспечения строгого контроля за диапазоном допустимых значений индекса следует перевести директиву R в активное состояние {$R+}. Активный режим R устанавливается на стадии отладки программ.
5.5.4. Строковые выражения
Выражения, в которых операндами служат строковые данные, называются строковыми. Они состоят из строковых констант, переменных, указателей функций и знаков операций над ними.
Над строками могут выполняться операции отношения и сцепления (конкатенации):
1. Операции отношения : <,>, =, <>, >=, <=. Результат операции отношения будет иметь тип BOOLEAN. Строки сравниваются посимвольно слева направо. При обнаружении первого несовпадающего символа принимается решение о <больше> или <меньше> в соответствии с таблицей кодов ASCII. Если две сравниваемые строки имеют различную длину, но совпадают вплоть до последнего символа более короткой строки, то более короткая строка считается меньшей.
Например:
'Pascal'='pascal' -> false
'prim'<'primer' -> true
'+'<'-' -> true
2. Сцепление : +. Использование знака + позволяет разместить строки одну за другой.
Например:
'Новый'+' '+'год'='Новый год';
Операция + дает тот же результат, что и функция CONCAT, присутствующая в языке Turbo Pascal для обеспечения его совместимости с другими версиями (описывается ниже).