Операции над строками

Строки

Begin

Var

Begin

Begin

Var

A : array of integer;

i : integer;

Setlength(A,5);

For i:=0 to 4 do

{Присвоить элементу массива случайное число из отрезка [-10,10]}

A[i]:= Random(21)-10;

{Вывести элементы массива}

Edit2.Text:=Edit2.Text+' '+IntToStr(A[i]);

end;

end;

 

При работе с двумерными массивами используются вложенные циклы с параметром. Например

 

{Создать двумерный массив 3х5 и заполнить его случайными значениями целых чисел из диапазона [-100,100]}

A : array [1..3,1..5] of integer;

i, j : integer;

for i:=1 to 3 do

for j:=1 to 5 do

a[i,j]:= Random(201)-100;

end;

 

В реальных задачах часто встречаются объекты символьного типа – строки. Строка в Pascal трактуется как последовательность символов. В состав строки могут входить буквы латинского алфавита, кириллица, цифры, всевозможные знаки, скобки, пробел и др. Каждый символ строковой величины занимает 1 байт памяти (десятичный код от 0 до 255, зафиксированный в кодовой таблице ASCII).

Количество символов в строке называется ее длиной. Длина строки может динамически изменяться от 0 до 255. Пустая строка имеет нулевую длину.

Строковая константа – последовательность символов, заключенных в апострофы. Например:

’Это строковая константа’, ’123’.

Таким образом, при использовании в выражениях строка обязательно заключается в кавычки. Два следующих друг за другом апострофа (’’), обозначают пустую строку, т.е. строку с нулевой длиной.

 

Строковая переменная описывается в разделе описания переменных:

 

Var

Имя_переменной : string [максимальная длина строки];

 

Например:

Var

Name: string[20];

St: string;

 

Если максимальная длина не указана, то она принимается равной 255 (по умолчанию).

Элементы строки идентифицируются именем строки с индексом, заключенным в квадратные скобки. Т.е. к любому символу в строке можно обратиться точно также, как к элементу одномерного массива по его номеру.

Например:

 

N[5], S[i], slovo[k+1]

 

Индекс может быть положительной константой, переменной, выражением целого типа. Значение индекса не должно выходить за границы описания.

Для хранения и обработки отдельных символов используют переменные типа char. Значением переменной такого типа может быть любой один символ.

Например:

var

a: char; ch: char;

Выражения, в которых операндами служат строковые данные, называются строковыми. Над строковыми данными допустимы операции сцепления и операции отношения.

Операция сцепления (конкатенации) (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и строковые переменные.

Например:

 

’Бейсик’ + ’Паскаль’ + ’Си’ + ’–’ + ’языки программирования высокого уровня’.

 

В результате получится строка:

 

’Бейсик Паскаль Си – языки программирования высокого уровня’.

 

Длина результирующей строки не должна превышать 255 символов.

Операции отношения =, <, >, <=, >=, <> позволяют произвести сравнения двух строк, в результате чего получается логическое значение (True или False). Операции отношения имеют более низкий приоритет, чем операции сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки. Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы.

Например:

Выражение Результат
’True1’ < ’True2’ True
’Student’ > ’STUDENT’ True
’Студент’ <> ’ Студент’ True
’Группа’ = ’Группа’ True

Все остальные действия над строками и символами реализуются с помощью встроенных процедур и функций.

Функции для работы с данными строкового типа

Обращение к функции Действие Пример
Copy(S,Poz,N) Выделяет из строки S подстроку длиной N символов, начиная с позиции Poz. Здесь N и Poz - целочисленные выражения. S:=’IBM-PC’; S1:=Copy(S,5,2); Результат: S1=’PC’
Length(S) Определяет текущую длину строки S. Результат – значение целого типа. S:=’Test-5’; n:=Length(S); Результат: n=5
Chr(X) Возвращает символ, указанный его ASCII-кодом. Здесь Х – значение целого типа. Результат – значение типа Char. for i:=65 to 71 do S:=S+Chr(i); Результат: S=’ABCDEFG’
Ord(S) Возвращает ASCII-код указанного символа. Здесь S – переменная типа Char. Результат – значение целого типа. S:='F'; Cod:=Ord(S); Результат: Cod=70
Pos(S1,S2) Обнаруживает первое появление в строке S2 подстроки S1. Результат – целое число, равное номеру позиции, где находится первый символ подстроки S1. Если такое появление не обнаружено, то результат равен 0. S:=’abcdef’; n:=Pos(’cd’,S); Результат: n=3

Процедуры для работы с данными строкового типа

Обращение к процедуре Действие Пример
Delete(S, Poz, N); Удаление N символов из строки S, начиная с позиции Poz. S:=’abcdef’; Delete(S,3,2); Результат: S=’abef’
Insert(S1,S2,Poz); Вставка строки S1 в строку S2, начиная с позиции Poz. S:=’ЭВМ PC’; Insert(’IBM-’,S,5); Результат: S=’ЭВМ IBM-PC’