Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Програмирование. Структурное програмирование, подпрограммы, строки. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
Значение строкового типа 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 - переменная строкового типа An­siString } 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 - переменная строкового типа An­siString.}
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 - переменная строкового типа An­siString.} 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]