Строки
Основной вид информации, которую использует человек – это текстовая информация!
Рассмотренный ранее тип char не совсем удобен, т.к. позволяет в переменной хранить только один символ.
А слова и предложения – это цепочка символов.
Для цепочки символов используется тип данных – STRING
(строковая переменная).
О писание строковой переменной: var ST: string;
И под переменную ST резервируется 256 байт, но в неё можно помещать произвольное количество символов, однако <=255 ( 0-ой байт хранит указания фактич.длины, остальные - для 255 символов).
Если не нужны большие строки, то длину строки можно указывать в квадратных скобках рядом со служебным словом string.
Пример: var st: string[25];
И под переменную st зарезервируется 26 байт, ( 1 байт хранит указания фактической длины, остальные - для 25 символов).
Т.е., если длина строки не указана, она принимается максимально возможной, т.е. N=255.
Строки рассматриваются как цепочки символов (‘КАНИКУЛЫ’).
Поэтому к любому символу в строке можно обратиться, указав рядом с именем переменной квадратные скобки с индекс символа в строке (адрес, порядковый номер): s[i] — i-тый символ в строке st;
П ример: var s: string[25];
begin
s := ‘КАНИКУЛЫ ‘;
Write ( s[2] ) ; { на экране 2-ой символ из строки s , т.е. буква А}
Самый первый байт в строке имеет индекс равный 0 и содержит текущую длину строки.
Работа со строками
Тип данных STRING (строка)
Переменная типа string состоит из цепочки символов, т.е. элементов типа CHAR.
Описание строковых переменных:
Var <имя переменной>: string[< кол-во символов>];
где
<имя переменной> - идентификатор переменной
string - тип переменной (строковый)
[< кол-во символов>] - количество символов в строке (если данный компонент отсутствует, то берется по умолчанию 255 символов в строке).
Пример:
Описать строку с именем STROKA, которая состоит из 20 символов,
Var stroka: string [20];
Основные действия со строками:
Var Stroka1: string [7];
Stroka2: string [7];
Rez1: string [7];
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Stroka1 |
|
|
|
|
|
|
|
|
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Stroka1 |
4 |
О |
л |
е |
г |
|
|
|
Stroka1 := ‘Олег‘;
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Stroka2 |
4 |
Д |
и |
м |
а |
|
|
|
{Сравнение:}
If Stroka1 > Stroka2 then Write (‘Олег больше‘) else Write (‘Дима больше‘);
{Объединение:}
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Rez1 |
7 |
О |
л |
е |
г |
Д |
и |
м |
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
Rez2 |
8 |
О |
л |
е |
г |
Д |
и |
м |
а |
Замечание:
Максимальная длина строки - 255 символов (256 байт).
Фактическая длина строки хранится в нулевом байте этой строки (т.е. под строку в памяти отведено на 1 байт больше).
Задача1:
Программа выводит в алфавитном порядке три введённых пользователем имени.
ДЗ: Тема 10 (стр.171-176)
Задача2:
Программа вычисляет количество пробелов в строке ST[10]
Для строк применимы следующие операции:
1. Операция объединения строк (конкатенация). Обозначается эта операция знаком + (но это не сложение!)
|
Результат |
St1:= ‘Лицей '; St2:= 'Информационных '; St3= 'Технологий'; st:=st1+st2+ st3; |
Лицей Информационных Технологий |
Примечание: если длина результирующей строки превысит допустимую (255) длину, то "лишние" символы отбрасываются.
2. Операции сравнения =, >=, >, <, <=.
Сравнивать можно строки разной и одинаковой длины. Сравнение осуществляется слева направо в соответствии с ASCII-кодами символов. Считается, что отсутствующие символы в более короткой строке имеют код, меньше кода любого действительного символа.
Например.
-
?
Результат
Как делать
'АВ' > 'А'
True
'АВ'
'А'
‘MS-DOS’ < ‘MS-Dos’
True
‘MS-DOS’
‘MS-Dos’
‘program’ > ‘PROGRAM’
True
‘program’
‘PROGRAM’
‘intel’=’intel’
True
‘intel’
’intel’