Обработка строк
Строка – это упорядоченная последовательность символов. Для работы с отдельными символами вводится тип данных char. Обработка строк обычно связана с перебором всех символов от начала до конца. Признаком конца такого перебора является обнаружение нулевого символа.
В Pascal для обозначения строки используется string, и ввод происходит следующим образом:

Vаr s : string;

Чтобы записать определенное значение в переменную строкового типа выполняют команду:

s:= 'информация';

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

rеаdln(s);

Команда lеnght служит для вычисления длины строки. Она возвращает целое число типа intеgеr, которую можно присвоить переменной того же типа:

Vаr n : intеgеr;

n:=lеngth(s);

Работа с элементами строки аналогична работе с массивом. Для обращения к определенному символу необходимо заключить его номер в квадратные скобки.

s[4]:='а';

Важно также быть знакомым с таблицей ASCII-кодов символов, где в каждой паре левый элемент - это десятичный (основание системы счисления - десять) номер в спецификации, а правый элемент - это привязанный к этому номеру символ. Нужно обратить внимание на несколько интересных свойств таблицы, они облегчают программирование.

Нужно обратить внимание на:

- Вычисление длины строки.

- Копирование строки.

- Запись строки в обратном порядке. Простейшей реализацией этого будет скопировать строку справа налево во второй массив.

- Функции библиотек для работы со строками.

Примером задачи на строки может служить, например такая задача:

Распространенный, но ненадежный метод шифровки текста состоит в перемене букв алфавита. Другими словами, каждая буква алфавита последовательно заменяется в тексте какой-то другой буквой. Чтобы шифровка была обратимой, никакие две буквы не заменяются одной и той же буквой.

Мощным методом криптоанализа является атака с известным открытым текстом (known plain text attack). При атаке с известным открытым текстом дешифровщик знает фразу или предложение, зашифрованное противником, и путем изучения зашифрованного текста выясняет метод кодировки. Ваша задача - расшифровать несколько зашифрованных строк текста, полагая, что каждая строка использует один и тот же набор замещений и что одна из закодированных строк является шифровкой открытого текста

Стандартные операции для работы со строками в Pascal

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

Например:

s1:='Привет';
s1:='Вася';
s:=s1 + ', ' + s2 + '!';
В результате выполнения приведённой программы в строку s будет записано значение 'Привет, Вася!'.

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

Пример:

'строка'<>'строки' (верно, т.к. не совпадают последние символы);

'Abc'<'abc' (отношение истинно, т.к. код символа 'A' равен 65 в десятичной системе счисления, а код символа 'a' – 97);

'год'>'век' (отношение верно, т.к. буква 'г' в алфавите стоит после буквы 'в', а, следовательно, имеет больший код).


Стандартные функции для работы со строками в Pascal


Copy (S, poz, n) выделяет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – любое строковое выражение, poz, n – целочисленные выражения.

Concat (s1, s2,...,sn) выполняет слияние строк s1, s2,...,sn в одну строку.

Length(S) определяет текущую длину строкового выражения S. Результат – значение целого типа.

Pos(subS, S) определяет позицию первого вхождения подстроки subS в строку S. Результат – целое число, равное номеру позиции, где находится первый символ искомой подстроки. Если вхождение подстроки не обнаружено, то результат функции будет равен 0.


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

Delete (S, poz, n) удаляет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – строковая переменная (в данном случае нельзя записать никакое другое строковое выражение, кроме имени строковой переменной, т.к. только с именем переменной связана область памяти, куда будет помещен результат выполнения процедуры); poz, n – любые целочисленные выражения.
Insert(subS, S, poz) вставляет в строку S, начиная с позиции poz, подстроку subS. Здесь subS – любое строковое выражение, S – строковая переменная (именно ей будет присвоен результат выполнения процедуры), poz – целочисленное выражение.

Процедуры преобразования типов в Pascal

Str(x, S) преобразует число x в строковый формат. Здесь x – любое числовое выражение, S – строковая переменная. В процедуре есть возможность задавать формат числа x. Например, str(x: 8: 3, S), где 8 – общее число знаков в числе x, а 3 – число знаков после запятой.
Val(S, x, kod) преобразует строку символов S в число x. Здесь S – строковое выражение, x – числовая переменная (именно туда будет помещен результат), kod – целочисленная переменная (типа integer), которая равна номеру позиции в строке S, начиная с которой произошла ошибка преобразования, если преобразование прошло без ошибок, то переменная kod равна 0.
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website