Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Програмирование. Структурное програмирование, подпрограммы, строки. Учебное пособие
.pdf
Значение строкового типа AnsiString
Значение типа AnsiString – строка символов расширенного кода
ANSI. Строка может содержать от 0 до ~2
31
символов, которые заклю-
чены в одиночные кавычки (апострофы). Количество символов в строке называется длиной строки или динамическим атрибутом длины
строки.
Строка, не содержащая ни одного символа, называется пустой.
Стандартная функция Length возвращает значение динамического атрибута длины строки.
Строковое значение в тексте программы на Object Pascal может
быть представлено в одной из
следующих форм:
литеральной строковой константой (литеральной строкой);
простой константой;
переменной строкового типа AnsiString;
указателем функции, возвращающей строку;
выражением строкового типа.
Пример 3. Значение строкового типа AnsiString
{$APPTYPE CONSOLE}
uses
SysUtils,
Windows;
const
n = 'константа';{Простая константа n, представляет литерал 'константа'.}
y = 'Простая'; {Простая константа y, представляет литерал 'Простая'.}
var
s: AnsiString; { s - переменная строкового типа AnsiString }
begin
SetConsoleOutputCP(1251);{Кириллизация вывода.}
s:= y + ' ' + n; {Переменной s присваевается значение
строкового выражения}
writeln(s);{Будет выведено: Простая константа}
writeln(Length(s));{Будет выведено: 17 - длина
строки s.}
41

writeln(Copy(s,1,7));{Будет выведена строка - 'Простая'. Функция Copy возвращает значение строкового типа.}
readln;
end.
Длина строки – количество символов, содержащихся в строке.
Пустая строка – строка, не содержащая ни одного символа, длина
которой равна 0.
Строковые переменные
Строковая переменная – это одна из форм представления строки
(строкового значения) в программе.
В тексте программы строковая переменная представлена своим
идентификатором.
В процессе выполнения программы строковая переменная представлена областью памяти
, в которой хранится ее текущее значение.
Текущее значение строковой переменной – строка (строковое значение).
Пользуясь идентификатором (именем) строковой переменной, вы
можете сослаться как на ее текущее значение, так и на адрес области
памяти, выделенной под нее:
вы ссылаетесь на адрес памяти под переменную всякий раз, ко-
гда записываете ее
идентификатор в левой части оператора присваива-
ния;
вы ссылаетесь на текущее значение переменной всякий раз, ко-
гда записываете ее идентификатор в составе выражения.
До первого использования в тексте программы строковая переменная должна быть описана.
Строковые переменные допустимо использовать в программе там,
где допустимо использование переменных других типов.
В переменную
можно записать новое значение или скопировать те-
кущее значение переменной.
Пример 4. Строковые переменные
var
s: AnsiString; {s - переменная строкового типа AnsiString.}
42

L: Longint;
begin
s:= 'NEW YEAR'; {Переменная s, представляет значение
'NEW YEAR'.}
s:= s+’ 2000’;
{ Слева s - ссылка на адрес памяти, справа s ссылка на
текущее значение переменной }
L:= Length(s); { L = 13, так как в строке 'NEW YEAR
2000', представленной переменной s - 13 символов.}
L:= Sizeof(s); { L = 4, указатель на длинную строку
типа AnsiString.}
end.
Описание строковых переменных
Строковая переменная должна быть описана до первого использования ее идентификатора в тексте программы. Описание строковой
переменной производится в разделе описания переменных, который
начинается в тексте программы ключевым словом var.
Описать переменную – значит связать ее идентификатор с ее типом. Описав переменную типом AnsiString, вы сообщаете компилятору
следующее:
под
переменную необходимо выделить область памяти размером
4 байта;
текущим значением переменной будет строковое значение;
строка будет храниться в памяти посимвольно: ее максимальная
31
длина – 2
байт;
на значениях строковой переменной определены строковые опе-
рации.
Пример 5. Описание строковых переменных
var
s: AnsiString; {s - переменная строкового типа AnsiString.}
begin
s:= 'NEW YEAR';{Переменная s, представляет значение
'NEW YEAR'.}
43

Строковые константы
Строковая константа (строка) – это форма представления строкового значения.
В ObjectPascal строковые константы разделяют:
на литеральные;
простые.
Строковая константа – это значение строкового типа, которое не
может быть изменено в процессе выполнения программы. Память, выделенная под нее, доступна только для считывания (копирования).
Строковая константа имеет единственный атрибут –
длину строки,
которая определяется числом символов в строке.
Строковую константу допустимо использовать в программе в составе выражений.
Строковая константа сама представляет собой простейшее строковое выражение.
Пример 6. Строковые константы
const
y = ''; { y - простая строковая константа представляет
пустую строку}
n = 'TURBO'; { n - простая строковая константа;
'TURBO' – литеральная строковая константа }
Литеральные строковые константы
Литеральная строковая константа (строка) – это форма представления строкового значения.
Непосредственное изображение строкового значения в программе на
Object Pascal возможно только с помощью литеральной строковой константы. Это последовательность символов расширенного кода ANSI,
заключенная в апострофы.
Сами апострофы в состав строкового значения не входят. Если вы
хотите поместить апостроф в
строковое значение, то его необходимо
записать дважды.
Пустая строка – это строка, не содержащая ни одного символа.
В тексте программы она изображается как два подряд стоящих апострофа.
‘Turbo Pascal’ – литеральная строковая константа
‘’ – пустая строка
44

Пример 7. Литеральные строковые константы
const
n = 'TURBO';
Литеральная
g= 'Borland''TURBO Pascal';
var s: string;
строковая
константа
begin
s:= '1999 год';
end.
Простые строковые константы
Простая строковая константа – это форма представления строкового значения.
Она дает вам возможность ссылаться на строковое значение в тексте программы, используя его идентификатор (имя).
Однако для этого предварительно идентификатор необходимо связать со строковым значением в разделе описания констант программы,
который
начинается ключевым словом const.
Такой идентификатор представляет собой простую строковую константу. Его можно использовать везде, где допустимо использовать
строковое значение.
Изменять значение простой строковой константы в процессе выполнения программы нельзя.
Пример 8. Простые строковые константы
const
y = ''; {y - простая строковая константа представляет
пустую строку}
n = 'TURBO'; {n - простая строковая константа представ-
ляет строку 'TURBO', содержащую семь символов.}
g = 'Borland''Object Pascal';{ простая строковая кон-
станта g представляет строку 'Borland''Object Pascal',
содержащую двадцать один символов, один из которых апостроф.}
s = g; {s - простая строковая константа представляет
строку 'Borland''Object Pascal'.}
var w, k:String;
45

begin
w:= y; { w получает значение равное пустой строке}
k:= g + ' 2015'; { k = 'Borland''Object Pascal 2015'}
writeln(k);{Будет выведено: Borland'Object Pascal
2015}
end.
ОПЕРАЦИИ НА СТРОКАХ
На множестве значений всех строковых типов (ShortString, An-
sistring, WideString) определены следующие операции:
сложение строк (+);
отношение на строках.
В операциях со строками значение типа Char рассматривается как
строка длиной в один символ.
Пример 9. Операции на строках
const
n = 'Object'; { простая строковая константа со значением
равным 'Object'}
var
y,w,k: String;
ch: Char;
b: boolean;
begin
y:= n + ' Pascal'; { y получает значение равное 'Object
Pascal'}
ch:= ' ';
k:= y + ch + '2015'; { k = 'Object Pascal 2015'}
b:= 'Start' < 'Style'; { b = True }
b:= 'Start' > 'Style'; { b = False }
b:= 'St ' > 'St'; { b = True }
end.
Отношения на строках
Отношение между любыми двумя строковыми значениями устанавливается согласно отношению порядка между значениями кодов
символов в соответствующих позициях.
46

Перед сравнением строки выравниваются по левому краю.
Если сравниваемые строки разной длины, то строка, которая короче, дополняется справа до размера более длинной строки символами с
кодом 0.
Пустые строки могут быть равны только другим пустым строкам, и
они являются строками с наименьшим значением.
Операции отношения приведены в таблице.
Изображение Описание
=
<>
>
<
>=
<=
Отношение равенство
Отношение неравенства
Отношение больше
Отношение меньше
Отношение больше или равно
Отношение меньше или равно
Строковая операция =
Две строки считаются равными тогда и только тогда, когда:
они содержат одинаковое число символов и
символы в позициях с одинаковым номером имеют одинаковые
коды ANSI.
Пример 10. Строковой операции =
const
y = ''; {Простая строковая константа - пустая строка }
n = 'Object'; {Простая строковая константа с
начальным значением равным 'Object'}
g = 'Borland''ObjectO Pascal'; { Строка содержит апостроф.}
begin
if 'Object' <> g then writeln(‘строки не равны’) { стро-
ки не равны }
else writeln(‘строки равны’);
if '' <> n then writeln(‘строки не равны’) строки не
равны }
else writeln(‘строки равны’);
end.
47

Строковая операция <>
Две строки считаются не равными, когда:
они содержат не одинаковое число символов и/или;
символы в позициях с одинаковым номером имеют не одинако-
вые коды ANSI.
Пример 11. Строковая операция <>
const
y = ''; { простая строковая константа - пустая строка }
n = 'Object'; {Простая строковая константа с
начальным значением равным 'Object '}
g = 'Borland''Object Pascal'; { Строка содержит апостроф.}
begin
if 'Object' > g then writeln(‘левая строка больше’)
else writeln(‘левая строка меньше’); { левая строка
больше }
if g > '' then writeln(‘левая строка больше’)
else writeln(‘левая строка меньше’); { левая строка
больше }
end.
Строковая операция >
Из двух строк та считается большей, в которой символ с большим
кодом ANSI находится на позиции с меньшим номером.
Пример 12. Строковая операция >
const
y = ''; {Простая строковая константа - пустая строка }
n = 'TURBO'; {Простая строковая константа с
начальным значением равным 'TURBO'}
g = 'Borland''TURBO Pascal'; { Строка содержит апостроф.}
begin
if g < 'TURBO' then writeln(‘левая строка меньше’)
else writeln(‘левая строка больше’); { левая стро-
ка меньше }
48

if '' < g then writeln(‘левая строка больше’)
else writeln(‘левая строка меньше’); { левая стро-
ка меньше }
end.
Строковая операция <
Из двух строк та считается меньшей, в которой символ с меньшим
кодом ANSI находится на позиции с меньшим номером.
Пример 13. Строковая операция <
const
y = ''; {Простая строковая константа - пустая строка }
n = 'TURBO'; {Простая строковая константа с
начальным значением равным 'TURBO'}
g = 'Borland''TURBO Pascal'; { Строка содержит апостроф.}
begin
if g < 'TURBO' then writeln(‘левая строка меньше’)
else writeln(‘левая строка больше’); { левая строка меньше }
if '' < g then writeln(‘левая строка больше’)
else writeln(‘левая строка меньше’); { левая строка меньше }
end.
Строковая операция >=
Из двух строк та считается большей или равной, которая
больше другой строки или
равна ей.
Пример 14. Строковая операция >=
const
y = ''; {Простая строковая константа - пустая строка }
n = 'TURBO'; {Простая строковая константа с
начальным значением равным 'TURBO'}
g = 'Borland''TURBO Pascal'; { Строка содержит апо-
строф.}
49

begin
if 'TURBO' >= g then writeln(‘левая строка больше или
равна’)
else writeln(‘левая строка меньше’); { левая строка больше или равна }
if g >= '' then writeln(‘левая строка больше или рав-
на’)
else writeln(‘левая строка меньше’); { левая строка больше или равна }
end.
Строковая операция <=
Из двух строк та считается меньшей или равной ей, которая:
меньше другой строки:
равна ей.
Пример 15. Строковая операция <=
const
y = ''; { простая строковая константа - пустая строка }
n = 'TURBO'; { типированная строковая константа с
начальным значением равным 'TURBO'}
g = 'Borland''TURBO Pascal'; { Строка содержит апо-
строф.}
begin
if g <= 'TURBO' then writeln(‘левая строка меньше или
равна’)
else writeln(‘левая строка больше’); { левая строка меньше или равна }
if 'TURBO' < n then writeln(‘левая строка или равна’)
else writeln(‘левая строка больше’); { левая строка меньше или равна }
end.
Сложение строк +
Операция сложения строк – двухоперандная операция. Она определена на значениях операндов любых строковых типов и типе Char. Результатом операции является строка, полученная из исходных строк
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
