В памяти компьютера могут обрабатываться не только числа, но и символы. Символ занимает в памяти компьютера один байт и описывается в тексте программы служебным словом char. Символы, как и любые однотипные данные могут быть объединены в массивы. Обработка символьных массивов практически не отличается от обработки числовых. Удобнее всего обрабатывать символьную информацию, представленную в виде строк. Для этого в современные версии языка программирования введён дополнительный стандартный тип - String.
Тип string oпределяется описанием string = array [Index] of Char, но являясь встроенным, явного описания в тексте программы не требует. Этот тип относится к так называемым массивам с нулевой базой, для которых тип индексов определяется как Index =0.. N, где N – количесво символов, размещаемое в массиве. Таким образом, в нем содержится одна “лишняя” компонента, значение которой равно реальному количеству заполненных компонент. Максимально возможная длина строковой переменной равна 255. Существует и другая форма определения типа string и описания соответствующих переменных, в которой явно указывается верхняя граница типа индексов.
Подобные переменные с точки зрения их обработки могут рассматриваться двояко:
· допускается обработка всей строки как единого целого (возможность присвоить переменной строковую константу или выполнять объединение нескольких строк при присваивании);
· переменную можно рассматривать как обычный массив, состоящий из компонент типа char, которые доступны при обработке каждая в отдельности.
Для строк определены также операции сравнения (=, <>, >, <, <=, >=). Сравнение строк производится слева направо до первого несовпадающего символа: длиннее считается та строка, в которой первый несовпадающий символ имеет больший номер в таблице кодов (буквы в таблице кодов расположены по возрастанию). Если строки имеют различную длину, но в общей части символы совпадают, считается, что короткая строка меньше.
С типом string связывается определенный набор стандартных процедур и функций:
Функция Length возвращает фактическую длину текстовой строки, передаваемой ей в качестве фактического параметра. При подсчете фактической длины строки учитываются все входящие в нее символы, в том числе и пробелы.
Функция Upcase – функция, преобразующая одиночный символ из строчной формы в прописную (ее параметр – переменная строкового типа). Она предполагает обработку отдельных символов, в связи с чем, для обработки строки символов, размещенной в переменной типа string, приходится использовать цикл.
Функция Cору. С помощью функции Cору можно скопировать фрагмент некоторой строки. Для этого при вызове функции в круглых скобках через запятую необходимо указать три параметра: имя строковой переменной, из которой должен извлекаться копируемый фрагмент; позицию, с которой в этой переменной начинается фрагмент; число копируемых компонент. В результате функция возвращает указанный фрагмент.
Функция Pos. С помощью функции Pos можно найти в строковой переменной заданный фрагмент. Если заданный фрагмент в ней присутствует, то функция возвращает номер позиции, с которой этот фрагмент начинается. При отсутствии фрагмента функция возвращает ноль. При вызове функции в качестве параметров необходимо указать имя строковой переменной, в которой отыскивается фрагмент, и имя переменной-фрагмента или соответствующую строковую константу. Функция "Pos" требует полного совпадения искомого фрагмента и фрагмента строки, в которой производится поиск. При этом нужно учитывать, что большие и малые буквы, а также совпадающие по начертанию буквы латинского алфавита и кириллицы считаются различными символами.
Процедуры Insert и Delete. С помощью этих процедур можно вставить одну строку в другую и удалить фрагмент из строки.
Оператор процедуры Insert(Str1,Str2,N) указывает, что в строку Str2 перед N-ой позицией необходимо, вставить строку Str1.
Оператор процедуры Delete(Str,M,N) позволяет удалить в строке Str фрагмент, начинающийся с позиции M и имеющий длину N.
Процедуры STR и VAL
Str(x[:f] [:n],s) – преобразует числовое значение x (тип real) в строку s (возможно задание формата; в этом случае f – число позиций в числе, n – количество позиций после точки).
Val (s,x,err) – превращает строковое значение s (тип string) в числовую переменную x (тип real), err (тип integer) возвращает номер позиции, в которой произошла ошибка преобразования, или 0, если ошибки не было.