Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа_со_строками_разбор_задач_осень_2012.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
104.45 Кб
Скачать

10

СТРОКИ

Строчный тип используется для описания строк длиной от 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;

Строка может быть представлена (без дополнительного описания):

  1. как единое целое ( в операторах ввода/вывода, в строковых выражениях);

  2. как одномерный массив односимвольных элементов. Это даёт возможность обращаться к любому символу массива, используя его индекс. Например, если имя строки 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 в строке не разрешаются предшествующие преобразуемому числу и последующие за числом пробелы.