|
Обучение начальных курсов методам программирования на языке
Программа написана студентом МГГТК группы 432
Гарбузовым Константином Сергеевичем
Программа предназначена для обучения начальных курсов
методам программирования на языке Turbo Pascal, и в частности работе со
строками.
1
Краткая теория
Строковые
типы
Значением строкового типа является последовательность
символов с динамическим атрибутом длины (в зависимости от действительного
числа символов при выполнении программы) и постоянным атрибутом размера в
диапазоне от 1 до 255. Текущее значение атрибута длины можно получить с помощью
стандартной функции Length.
--------
строковый тип
--->|string---------------------------------->
-------- | ^
| -----
------- ----- |
-->| [
--->|целое--->| ] ---
----- | без |
-----
|знака|
-------
Отношение между любыми двумя строковыми значениями устанавливается
согласно отношению порядка между значениями символов в соответствующих
позициях. В двух строках разной длины каждый символ более длинной строки без
соответствующего символа в более короткой строке принимает значение
"больше"; например, 'Xs' больше, чем 'X'. Нулевые строки могут быть
равны только другим нулевым строкам, и они являются наименьшими строковыми
значениями.
К идентификатору строкового типа и к ссылке на переменную
строкового типа можно применять стандартные функции Low и High. В этом случае
функция Low возвращает 0, а High возвращает атрибут размера (максимальную
длину) данной строки.
Параметр-переменная, описанная с помощью
идентификатора OpenString и ключевого слова string в состоянии $P+, является
открытым строковым параметром. Открытые строковые параметры позволяют
передавать одной и той же процедуре или функции строковые переменные
изменяющегося размера.
Конкретный элемент массива обозначается с помощью ссылки
на переменную массива, за которой указывается индекс, определяющий
данный элемент.
Конкретный символ в строковой переменной обозначается
с помощью ссылки на строковую переменную, за которой указывается индекс,
определяющий позицию символа.
----- ----------- -----
индекс -->| [
-------->|выражение-------->| ] --->
----- ^ ----------- | -----
| ----- |
--------- ,
|<--------
-----
Индексные выражения обозначают компоненты в соответствующей размерности
массива. Число выражений не должно превышать числа индексных типов в описании
массива. Более того, тип каждого выражения должен быть совместимым по
присваиванию с соответствующим индексным типом.
В случае многомерного массива можно использовать
несколько индексов или несколько выражений в индексе. Например:
Matrix[I][J]
что тождественно
записи:
Matrix[I,J]
Строковую переменную можно проиндексировать с помощью одиночного
индексного выражения, значение которого должно быть в диапазоне 0...n, где n -
указанный в описании размер строки. Это дает доступ к каждому символу в
строковом значении, если значение символа имеет тип Char.
Первый символ строковой переменной (индекс 0) содержит
динамическую длину строки, то есть Length(S) тождественно Ord(S[0]). Если
атрибуту длины присваивается значение, то компилятор не проверяет, является ли
это значение меньшим описанного размера стро-
ки. Вы можете указать
индекс строки и вне ее текущей динамической
длины. В этом случае считываемые символы
будут случайными, а
присваивания вне текущей
длины не повлияют на действительное значение строковой переменной.
Когда с помощью директивы компилятора $X+ разрешен
расширенный синтаксис, значение PChar может индексироваться одиночным
индексным выражением типа Word. Индексное выражение задает смещение, которое
нужно добавить к символу перед его разыменованием для получения ссылки на
переменную типа Char.
Открытые параметры позволяют передавать одной и той же
процедуре или функции строки и массивы различных размеров.
Открытые строковые параметры могут описываться двумя
способами:
- с помощью
идентификатора OpenString;
- с помощью ключевого слова string в
состоянии $P+.
Идентификатор OpenString описывается в модуле System. Он обозначает
специальный строковый тип, который может использоваться только в описании
строковых параметров. В целях обратной совместимости OpenString не является
зарезервированным словом и может, таким образом, быть переопределен как
идентификатор, заданный пользователем.
Когда обратная совместимость значения не имеет, для
изменения смысла ключевого слова string можно использовать директиву
компилятора $P+. В состоянии $P+ переменная, описанная с ключевым словом
string, является открытым строковым параметром.
Для открытого строкового параметра фактический
параметр может быть переменной любого строкового типа. В процедуре или функции
атрибут размера (максимальная длина) формального параметра будет тем же, что у
фактического параметра.
Открытые строковые параметры
ведут себя также как парамет-
ры-переменные строкового
типа, только их нельзя передавать
как
обычные переменные другим
процедурам или функциям.
Однако, их
можно снова передать
как открытые строковые параметры.
В следующем примере параметр S процедуры AssignStr - это открытый
строковый параметр:
procedure
AssignStr(var S: OpenString);
begin
S := '0123456789ABCDEF'; end;
Так как S - это открытый строковый параметр, AssignStr можно передавать
переменные любого строкового типа:
var
S1: string[10];
S1: string[20]; begin
AssignStr(S1); S1 :=
'0123456789'
AssignStr(S2); S2 :=
'0123456789ABCDEF'
end;
В AssingStr максимальная длина параметра S та же самая, что у
фактического параметра. Таким образом, в первом вызове AssingStr при
присваивании параметра S строка усекается, так как максимальная длина S1 равна
10.
При применении к открытому строковому параметру
стандартная функция Low возвращает 0, стандартная функция High возвращает
описанную максимальную длину фактического параметра, а функция SizeOf
возвращает размер фактического параметра.
В следующем примере процедура FillString заполняет строку заданным
символом до ее максимальной длины. Обратите внимание на использование функции
High для получения максимальной длины открытого строкового параметра.
procedure FillStr(var
S: OpenString; Ch: Char);
begin
S[0]
:= Chr(High(S));
задает длину строки
FillChar(S[1], High(S), Ch); устанавливает число символов
end;
Значения и параметры-константы, описанные с
использованием идентификатора OpenString или ключевого слова string в состоянии
$P+, не являются открытыми строковыми параметрами. Они ведут себя также, как
если бы были описаны с максимальной длиной строкового типа 255, а функция
Hingh для таких параметров всегда возвращает 255.
Для передвижения по тексту используются клавиши управления
курсором и клавиши PgUp и PgDown.
Необходимую информацию о программе можно получить
воспользовавшись пунктом меню "О программе".
Выход из программы производится выбором пункта меню
"Выход".
Для просмотра теории по теме "Строковый тип
данных" производится выбором пункта меню "Теория".
|
|
|