Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №5.docx
Скачиваний:
10
Добавлен:
16.11.2018
Размер:
25.49 Кб
Скачать

Лабораторная работа № 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 для обеспечения его совместимости с другими версиями (описывается ниже).