СТРОКОВЫЙ ТИП ДАННЫХ Строка это последовательность символов. Каждый символ занимает 1 байт памяти ( код ASCII). Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255. Строковые величины могут быть константами и переменными. Особенностью строки в Turbo Pascal является то, что с ней можно работать как с массивом символов, с одной стороны, и как с единым объектом, с другой. За счет этого обработка строк достаточно гибка и удобна. Строковая константа есть последовательность символов, заключенная в апострофы.
Строковая переменная занимает в памяти на 1 байт больше, чем указанная в описании длина. Дело в том, что один ( нулевой ) байт содержит значение текущей длины строки. Если строковой переменной не присвоено никакого значения, то ее текущая длина равна нулю. По мере заполнения строки символами ее текущая длина возрастает, но она не должна превышать максимальной по описанию величины. Строковая переменная занимает в памяти на 1 байт больше, чем указанная в описании длина. Дело в том, что один ( нулевой ) байт содержит значение текущей длины строки. Если строковой переменной не присвоено никакого значения, то ее текущая длина равна нулю. По мере заполнения строки символами ее текущая длина возрастает, но она не должна превышать максимальной по описанию величины.
Символы внутри строки индексируются ( нумеруются ) от единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки. Символы внутри строки индексируются ( нумеруются ) от единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки. Например : N[5], S[i], slovo[k+l]. Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания. Например : N[5], S[i], slovo[k+l]. Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.
Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операции сцепления и операции отношения. Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операции сцепления и операции отношения.
1. Операция сцепления ( конкатенации ) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные. Пример: 'Мама ' + 'мыла ' + 'раму'. В результате получится строка: 'Мама мыла раму'. Длина результирующей строки не должна превышать 255.
2. Операции отношения : =,, =, . Позволяют произвести сравнение двух строк, в результате чего получается логическое значение (true или false). Операция отношения имеет приоритет более низкий, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы. Пример: Выражение Результат True1MOTHER True Мама Мама True Cat=Cat True
1.Copy (S, poz, n) 2.Concat (s1, s2,...,sn) 3.Length (S) 4.Pos (subS, S)
1.Copy (S, poz, n) выделяет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – любое строковое выражение, poz, n – целочисленные выражения. Значение SВыражениеРезультат строка символов Copy(S,3,3) рок рок Например:
ВыражениеРезультат Concat(язык,,Pascal)язык Pascal 2. Concat (s1, s2,...,sn) выполняет слияние строк s1, s2,...,sn в одну строку. Например:
3. Length(S) определяет текущую длину строкового выражения S. Результат – значение целого типа. Значение SВыражениеРезультат (а+в)*сLength(s)7 Например:
4. Pos(subS, S) определяет позицию первого вхождения подстроки subS в строку S. Результат – целое число, равное номеру позиции, где находится первый символ искомой подстроки. Если вхождение подстроки не обнаружено, то результат функции будет равен 0. Значение SВыражениеРезультат предложениеPos(е, S)3 предложениеPos(a, S)0 Например:
1. Delete (S, poz, n) 2. Insert (subS, S, poz)
1. Delete (S, poz, n) удаляет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – строковая переменная ( в данном случае нельзя записать никакое другое строковое выражение, кроме имени строковой переменной, т. к. только с именем переменной связана область памяти, куда будет помещен результат выполнения процедуры ); poz, n – любые целочисленные выражения. Значение SОператор процедуры Конечное зн-е S abcdefgDelete(s, 2, 3)aefg Например:
2. Insert(subS, S, poz) вставляет в строку S, начиная с позиции poz, подстроку subS. Здесь subS – любое строковое выражение, S – строковая переменная ( именно ей будет присвоен результат выполнения процедуры ), poz – целочисленное выражение. Значение SОператор процедуры Конечное зн-е S рис. 2Insert(, S, 6)рис. 2 Например:
1.Str (x, S) 2.Val (S, x, kod)
1. Str(x, S) преобразует число x в строковый формат. Здесь x – любое числовое выражение, S – строковая переменная. В процедуре есть возможность задавать формат числа x. Например, str (x: 8: 3, S), где 8 – общее число знаков в числе x, а 3 – число знаков после запятой Оператор процедурыКонечное зн-е S Str (sin (1):6:4, S) Str (3456, S)3456 Например:
2. Val(S, x, kod) преобразует строку символов S в число x. Здесь S – строковое выражение, x – числовая переменная ( именно туда будет помещен результат ), kod – целочисленная переменная ( типа integer), которая равна номеру позиции в строке S, начиная с которой произошла ошибка преобразования, если преобразование прошло без ошибок, то переменная kod равна 0. Тип XОператор процедуры Значение X Значение kod RealVal(12.34, x, kod) IntegerVal(12.34, x, kod) 123 Например: