Вопрос 27.
1. Строковый тип данных.
Строка типа string
В Турбо Паскале тип-строка (стандартный тип string) -последовательность символов произвольной длины (до 255 символов). Строку можно рассматривать как массив символов, однако, в связи с некоторыми особенностями по сравнению со стандартными массивами, она выделена в отдельный тип данных.
Данные строкового типа могут быть объявлены в разделе описания типов или непосредственно в разделе описания переменных с помощью служебного слова string, после которого в квадратных скобках указывается длина строки. Если размер строки не указан, он считается равным 255. Строка может иметь различные длины в пределах объявленных границ.
Первый способ объявления переменной типа string (с использованием раздела типов Туре):
Туре <имя типа> = string [<длина строки>];
Var <имя переменной> : <имя типа>;
Второй способ объявления переменной типа string (в разделе переменных Var):
Var <имя переменной> : string [<длина строки>];
Значением строки может быть любая последовательность символов, заключенная в апострофы, например: Турбо Паскаль 7.0', ‘2a+d>0 ?', " - пустая строка,
‘Turbo Basic'.
Для того чтобы поместить в стринговую переменную какое-либо значение, можно применить любой из доступных в Турбо Паскале методов. На пример, присвоить переменной некоторое значение с помощью оператора присваивания:
si :='a bcn dl2*4';
или с помощью оператора ввода данных: Read (s2). При этом возможны следующие ситуации:
1) если длина вводимой строки меньше или равна длине строковой переменной, то длина строковой переменной становится равной длине текущей строки и значения их совпадают;
2) если длина вводимой строки больше длины строковой переменной (п - символов), то значением строковой переменной являются первые п символов вводимой строки.
Строка в Турбо Паскале трактуется как цепочка символов. К любому символу можно обратиться точно также, как к элементу одномерного строкового массива array [O..N] of char.
Пусть s - переменная типа string . Если ее рассматривать как одномерный массив, то значениями элементов s[l], s[2], ... будут соответствующие символы переменной s. Левее самого первого элемента массива всегда присутствует еще один, формально выступающий как литера в позиции 0, но фактически содержащий численное значение текущей длины данного стринга.
Операции над строками.
Для строк применимы операции конкатенации (+) и сравнения,
Операция конкатенации применяется для склеивания строк. Склеивать можно какое угодно число строк, при условии, что результирующее значение (тоже строка) будет содержать не более 255 символов. Например, sl:= '12345'; s2:= 'bacd'; s3:= 'каша'; c:= sl+s2; cl:= s2+' '+s3.
Сравнение двух строк осуществляется слева направо в соответствии с ASCII-кодами соответствующих символов. Строки равны, если имеют одинаковую длину и посимвольно эквивалентны. При сравнении строк разной длины, меньшая дополняется соответствующим числом пробелов и сравнение выполняется в обычном порядке. Если при посимвольном сравнении окажется, что один символ больше другого (его код больше), то строка, его содержащая, тоже считается большей. Остатки строк и их длины не играют роли. Любой символ всегда больше "пустого места".
Например, 'abed' = 'abed', 'abed' < > 'abcde', 'abed' < > ' abed', 'abed' > 'abcD', 'abed' > 'abc', 'aBcd' < 'ab','' > ".
Замечание. Строковый и символьный типы совместимы, т.е. они одновременно могут присутствовать в выражениях строкового типа. Однако, следует быть внимательными при их совместном использовании, например, переменной типа char нельзя присвоить стринговое значение.
В библиотеке Турбо Паскаля описаны стандартные процедуры и функции, предназначенные для работы со стрингами - переменными типа string и их отдельными элементами, а также текстовыми константами и символами. При составлении программ эти функции и процедуры не описываются, а вызываются из библиотеки.
Функция Concat. Параметрами этой функции являются строки SI, S2, ... ,Sn. Результатом ее работы является строка S, полученная в результате склеивания строк SI, S2,... , Sn (длина результирующей строки S не превышает 255 символов).
Формат обращения к функции в программе:
S :=Concat(S1, S2, ... , Sn).
Функция Length . Параметром этой функции является строка S. Результатом, ее работы является целое число L - длина строки S (количество литер, содержащихся в данный момент в этом стринге). Формат обращения к функции в программе: L := Length(S).
Функция Сору. Параметрами этой функции являются: строка ST; данные целого типа N и М. Результатом ее работы является подстрока S длины М, выделенная из строки ST, начиная с позиции N, при этом значение исходной строки ST не изменяется.
Формат обращения к функции в программе:
S := Copy(ST, N, M).
Функция Сору все свои параметры получает по значению, т.е. на их месте могут стоять любые переменные, константы и даже выражения соответствующих типов.
Замечания:
1) если значение переменной N больше длины строки ST, то S получит значение "пустая строка";
2) если число литер М (длина подстроки S) больше числа символов от позиции N до конца строки ST, то значением S является остаток строки ST, начиная с позиции N до конца.
3) если N принимает значение вне отрезка 1..255, то возникает ошибка выполнения программы.
Замечание. Результатом выполнения функции Copy(ST. 21,7) является подстрока, состоящая только из 4 символов ' 7.0', так как это количество символов является максимально возможным при вырезке из строки ST в данной ситуации.
Функция Роs. Параметрами функции являются стринги SUBST, ST, где SUBST - подстрока, которую нужно найти, a ST - строка, в которой ищем подстроку SUBST. Результатом ее работы является номер позиции К первого вхождения подстроки SUBST в строку ST или 0, если подстрока не найдена.
Формат обращения к функции в программе:
К := Pos(SUBST, ST).
Процедура Delete Параметрами процедуры являются: строка ST (параметр-переменная); данные целого типа М и г4 (параметры-значения). Процедура удаляет М символов из строки SТ, начиная с позиции N.
После удаления символов оставшиеся части строки ST склеиваются. Результатом работы процедуры является видоизмененная строка ST.
Формат вызова процедуры в программе:
Delete( ST, N, М );
Замечания:
1) если значение переменной N больше длины строки ST или значение переменной М равно 0 , то строка ST не изменится, так как ни одного символа не будет удалено;
2) если значение переменной N равно 0, то строка ST не изменится;
3) если N принимает значение вне отрезка 1..255, то возникает ошибка выполнения программы.
Замечание. Результатом выполнения функции Copy(ST. 21,7) является подстрока, состоящая только из 4 символов ' 7.0', так как это количество символов является максимально возможным при вырезке из строки ST в данной ситуации.
Процедура Insert. Параметрами процедуры являются: подстрока SUBST (параметр-значение), которую нужно вставить; строка ST (параметр-переменная), в которую вставляется подстрока SUBST; данное N целого типа, определяющее номер позиции вставки.
Процедура вставляет подстроку SUBST в строку ST, начиная с позиции N. Результатом работы процедуры является видоизмененная строка ST.
Формат вызова процедуры в программе:
lnsert( SUBST, ST, N ); '
Замечания:
1) если в результате вставки подстроки SUBST в строку ST полученная строка ST содержит больше символов, чем при объявлении этого стринга, то она автоматически укорачивается до его объявленной длины (т.е. все литеры, выходящие за пределы его длины (справа), будут отброшены).
2) если значение переменной N больше длины строки ST, то подстрока SUBST будет просто присоединена к концу строки ST (т.е. имеет место эффект конкатенации);
3) если значение переменной N находится вне отрезка 1..255, возникает ошибка выполнения программы.
Процедура Str Параметрами процедуры являются: выражение X (параметр - значение) вещественного или целого типа, строка ST (параметр-переменная) типа string . Параметр X можно задать в формате Х:М для целого типа и X:M:N для вещественного типа (аналогично процедуре Write). Процедура Str преобразует числовое значение параметра X в последовательность символов.
Результатом работы процедуры является строка ST, в которую записывается символьное представление параметра X.
Формат вызова процедуры в программе:
Str(X[:M[:N]];St);
Процедура Val Параметрами процедуры являются: строка ST (параметр-значение) типа string , переменная X (параметр-переменная) вещественного или целого типа, переменная Р (параметр-переменная) целого типа. Процедура Val преобразует строковое значение ST в его численное представление X. Если преобразование строки в число выполнено успешно, то результатом работы процедуры является число X, в которое преобразуется строка ST, а параметр Р примет значение 0. В противном случае переменная X принимает значение 0, а переменная Р имеет своим значением номер позиции в строке ST, где обнаружен ошибочный символ.
Формат вызова процедуры в программе:
Val(ST,X,P);
Замечание, Под ошибочными символами строки ST будем понимать все символы, отличные от цифр, десятичной точки, Е, +, -, а также символ пробела.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.