
- •Строковые функции.
- •Строковые процедуры.
- •Прочие процедуры и функции (избр).
- •I, {номер обрабатываемого символа }
- •I, {номер обрабатываемого символа }
- •If ( not (st[I] in razd))
- •I, {номер обрабатываемого символа }
- •I, {номер обрабатываемого символа }
- •I, {номер обрабатываемого символа }
- •I, {номер обрабатываемого символа }
- •Inv_wrd {инвертированное слово }
СТРОКИ
Строчный тип используется для описания строк длиной от 0 до 255 символов. Максимальная длина строки указывается в квадратных скобках. Если она не указана, максимальная длина полагается 255.
Строковые переменные, как и строковые константы, занимают в оперативной памяти количество байтов, равное максимальной длине строки плюс 1 байт (нулевой), предназначенный для хранения текущей длины этой строковой переменной.
Строка – как бы «резиновая», сколько байтов в неё записано, такова и длина.
TYPE
идент-тор_типа = String [максимальная длина];
идент-тор_типа2 = String ;
VAR
Имя_переменной : идент-тор_типа ;
Имя_переменной_2 : String ;
Например,
TYPE
TString = String[100];
TS = String;
VAR
S,S1 : Tstring;
S2 : String[20];
SS : TS;
S3 : String;
Строка может быть представлена (без дополнительного описания):
как единое целое ( в операторах ввода/вывода, в строковых выражениях);
как одномерный массив односимвольных элементов. Это даёт возможность обращаться к любому символу массива, используя его индекс. Например, если имя строки S3, то обращение имеет вид S3[ i ], где i – номер (индекс) элемента в строке.
Например, распечатка символов строки в столбик (фрагмент программы).
Var
St : string;
. . .
Begin
. . .
Readln(st);
For I := 1 to Length (st) do
Writeln (st [ I ] );
Readln;
. . .
End.
Строковые выражения.
Порядок вычисления строковых выражений – операнды формируют результат в том порядке, в котором они перечислены в выражении
Пример выполнения выражения:
S1:=‘A’+’BC’+’_1’ ;
Результат в S1 = ’ABC_1’
Строковые функции.
Имя функции |
Назначение функции |
Concat(<строка1>,<строка2>,..) |
Сцепление строк S1:=Сoncat(‘A’,’BC’,’_1’) ; В результате S1 = ’ABC_1’
|
Copy(<строка>,<позиция>,<количество>) |
Копирование части строки с заданной позиции S2:=Copy (‘INFORMATION’,3,5) ; В результате S2 = ’FORMA’ |
Length(<строка>) |
Определение текущей длины строки N:=Length('строка’); в результате N=6 |
Pos(<подстрока>,<строка>) |
Определение позиции первого вхождения подстроки в строку Pos(‘e’,‘Определение’) даёт 4 Pos(‘к’,‘Определение’) даёт 0 |
Для функции Concat общая длина полученной строки не должна превышать 256 байт.
Знак «+» в выражении для строковых данных также означает операцию конкатенации.
Для функции Copy, если позиция в строке превышает длину этой строки, то результатом будет пустая строка. Если <позиция>+ <количество> больше длины строки, то копируются лишь последние символы. Если же <позиция> не принадлежит интервалу [1,255], то возникает ошибка при выполнении программы.
Строковые процедуры.
Имя процедуры |
Назначение процедуры |
Delete(<строка>,<позиция>,<количество>) |
Удаление части строки с заданной позиции 1) S:=’abcdefgh’; Delete(S,2,4); Результат: S=’afgh’ 2) S:=’abcdefgh’; Delete(S,2,10); Результат: S=’a’ |
Insert(<подстрока>,<строка>,<позиция>) |
Вставка подстроки в строку с заданной позиции S:=’abcdefgh’; Insert(‘XXL’,S,3); Результат: S=’abXXLcdefgh’ |
Str(<число>,<строка>) |
Преобразование числового значения в строку символов 1) Str(567,A); Результат: A=’567’ 2) )B:=567; {B:integer} Str(B:5,A); Результат: A=’_ _567’ 3) B:=5.67E+3; {B:real} Str(B:8:0,A); Результат: A=’_ _ _ _5670’
|
Val (<строка>,<число>,<код>) |
Преобразование строки в числовое значение (если нет ошибки, то < код>=0) 1)A:=’135’; Val(A,R,Code); Результат: R=135; Code=0 2)A:=’_135’; Val(A,R,Code); Результат: R=не определено; Code=1 3)A:=’2.5Е+4’; Val(A,R,Code); Результат: R=25000; Code=0
|
Для процедуры Delete, если <позиция> больше длины строки, то строка не меняется. Если <позиция> + <количество> больше длины строки, то удаляется конец строки с указанной позиции. Если же <позиция> не принадлежит интервалу [1,255], то возникает ошибка при выполнении программы.
Для процедуры Insert, если в результате вставки получается строка, длина которой превышает максимальную длину исходной строки, то последние символы вставляемой строки не добавляются. Если <позиция> превышает фактическую длину исходной строки, определяемой функцией Length, то результатом является сцепленная строка.
Для процедуры Val в строке не разрешаются предшествующие преобразуемому числу и последующие за числом пробелы.