Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпорг..doc
Скачиваний:
12
Добавлен:
16.03.2015
Размер:
347.65 Кб
Скачать

Строки в языке паскаль. Основные операции над строками. Наиболее употребительные процедуры и функции для работы со строками. Связь строк с массивами.

Строковый тип данных. Стандартные функции для строк (length, Pos, Copy), примеры их применений.

Строка – последовательность символов. При использовании в выражениях строка заключается в апострофы. Количество символов (длина строки) от 0 до 255 символов.

Type имя типа = string [максимальная длина строки];

Var идентификатор : имя типа ;

или

Var идентификатор : string [максимальная длина строки];

Функция Length ( S : String ) : word; вычисляет текущую длину строки S (количество символов в строке). Строка может быть задана идентификатором или непосредственно, в апострофах.

b := 'Петербург'

п := Length( S ) {n=}

k := Length ( 'Мы изучаем Паскаль' ) {k=18}

l := Length ( " ) {l=0}

Функция Сору ( S : String; Start, Leп : Integer ) : string; позво­ляет выделить из строки последовательность из Leп символов, начи­ная с номера Start. Если Start больше длины всей строки S, то функ­ция вернет пустую строку, а если Leп больше, чем число символов от Start до конца строки S, то вернется остаток строки S, от Start до конца. Например:

S: `картография`;

S1 := copy (S, 6, 4);

S1 = `граф`

Функция Pos ( ВиЬв, S : String ) ; Byte вычисляет номер символа в строке S, с которого начинается включение в S подстроки Subs. Ес­ли же S не содержит в себе Sиbs, то функция даст результат О.

В := 'Компьютер';

п := Pos( 'ю', S );{ n=5 } 81 :='комп';

k := Pos( 81, 8); {k=l }

Очевидным недостатком функции Pos является то, что она воз­вращает ближайшую стартовую позицию Sиbs в S от начала строки, т. е. вызов

р := Pos ('nсо', 'Boonoonoonoos' );

завершит свою работу, вернув значение 4, хо'гя есть еще и 7, и 10.

Строковый тип данных. Стандартные процедуры для строк (Insert, Delete), процедуры преобразования (VaL, Str, примеры их применений.

Строка – последовательность символов. При использовании в выражениях строка заключается в апострофы. Количество символов (длина строки) от 0 до 255 символов.

Type имя типа = string [максимальная длина строки];

Var идентификатор : имя типа ;

или

Var идентификатор : string [максимальная длина строки];

Процедура Delete ( var S : String; Start, Leп : lnteger ) удаляет из строки S Leп символов, начиная с символа с номером Start:

В := 'СТРОКА'; Delete (В, 2, 3 ); (B='СКА' )

После стирания подстроки ее оставшиеся части как бы склеива­ются.

Если Start=O или превышает длину строки В, то строка не изме­нится. Также не изменит строку значение Len=O. При Leп большем, чем остаток строки, будет удалена подстрока от Start и до конца S. Это можно использовать при "подрезании" строк до заданной величи­ны:

Delete ( 8, 16, 255 )

3десь строки S длиною менее 17 символов пройдут через процеду­ру неизменными, а все остальные будут укорочены до длины в 16 символов.

Если Start > 255, возникнет ошибка при выполнении.

Процедура Insert ( Sиbs : String; уаг S : String; Start : Integer ) вставляет подстроку Sиbs в строку S, начиная с позиции Start:

В : = 'Начало-конец'; Insert ('середина-', В, 8 );

{ теперь В = 'Начало-середина-конец' }

Если измененная строка S оказывается слишком длинной, то она автоматически укорачивается до объявленной длины S (при этом, как всегда, "теряется" правый конец).

Процедура Str ( Х [: Width [: deс ] ]; var S : String ) служит для преобразования числовых значений в строковые. Х может быть переменной или значением целого или вещественного типов. Можно зада­вать поля формата, указывая ширину поля для числа и число знаков после десятичной точки. Для целых значений можно задать только поле Width, для вещественных - либо оба поля (формат с фиксиро­ванной точкой), либо одно - Width. В последнем случае задается экс­поненциальный формат общей длиной Width.

Если число имеет меньше знаков, чем дано в поле, то оно будет выровнено по правому краю, пустое место заполнится пробелами. Можно задать поле Width отрицательным, в этом случае выравнивание происходит по левому краю, а излишки как бы стираются:

Str ( 6.66: 8; 2 , 8 ); { 8=' 6.66' }

Str ( 6.66 ;-8 ; 2 , S ); { 8='6.66 ' }

Str ( 6.66; 8; О , 8 ); { 8=' 7' }

Можно задавать значения полей формата целочисленными пере­менными или константами:

var F, n : integer;

s : String;

F:=-5; п:=1;

Str ( - 123.456 : F : п, S );

Последнее замечание: если формат с точкой ограничивает число знаков в дробной части, то она будет округлена при преобразовании:

Str ( 1.234567 : 6 : 4, В); ( S='1.2346' )

Само значение числа при этом не изменится.

Процедура Vаl ( s : StriIlg уаг V : Т; уаг ErrCode : Integer ) пр( образует числовые значения, записанные в строке S, в числовую переменную V (Т-описание типа этой переменной: целый или вещественный ). Если преобразование возможно, то переменная ErrCode равна нулю, в противном случае она содержит номер позиции в S, содержащей ошибочный символ, в этом случае содержимое V не меняется. Тип Т переменной V должен соответствовать содержимому строки S. Если в S имеется точка или степень числа Е+пп, то V должна быт вещественного типа, в остальных случаях может быть и целой.

21.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]