В Pascal есть два типа данных для работы с текстом:
char: символьный тип;
string: строка.
Символьный тип.
Значением символьного типа char является один символ. Каждому символу соответствует код символа – число в диапазоне от 0 до 255. Т.е. в памяти компьютера все символы хранятся как числа, а уже компилятор отображает их как символы. Тоже самое и с типом boolean. Т.е. все простые типы компьютер хранит как числа.
Над символьными переменными можно проводить операции отношений (=, <>, <,>, <=, >=), так как все символы соответствуют какому-то числу, и, соответственно, одно число может быть больше другого. Например, любая заглавная буква меньше чем строчная, так как заглавные идут первыми по порядку от 0 до 255, потом идут строчные.
Для данных символьного типа определены следующие стандартные функции:
chr(x) – возвращает значение символа по его коду;
ord(ch) – возвращает код заданного символа;
pred(ch) – возвращает предыдущий символ;
succ(ch) – возвращает следующий символ,
upcase(ch) – преобразует строчную букву в заглавную. Обрабатывает буквы только латинского алфавита.
Например:
chr(‘А’) = 65;
ord(128) = ‘Б’;
pred(‘Б’) = ‘А’;
succ(‘Г’) = ‘Д’,
upcase(‘n’) = ‘N’.
Давайте для примера напишем программу которая выводит символ на экран.
Как видите, здесь ничего сложного. Переходим к строкам.
Строковой тип
Строка – это последовательность (или набор) символов, т.е. в Pascal (да и в других языках) строка является одновременно простым типом (можно выводить значение, написав имя переменной в операторе Write()) и массивом (т.е. структурным типом, так как это набор символов). Я же все таки отношу его к структурным типам.
При создании переменной типа string (строка), тоже нет ни сложного:
Операции над строками.
Как я уже писал в одной из предыдущих лекциях знак “+” соединяет строки между собой. Также доступны операции отношений. В этом случае две строки сравниваются между собой слева направо, например, если мы сравниваем две строки: “привет, Мир!” и “привет, мир!”, то сравниваться будут каждый символ слева на право: “п” с “п”, “и” с “и”, пока сравнение не дойдет до первого несовпадающего символа, у нас это “М” и “м”. И там уже будут сравниваться кода этих символов. Если все символы одинаковы, то при сравнение этих строк с помощью операции “=”, в результате даст “true”.
Процедуры для работы со строками.
Процедуры удаления и вставки символов в строке вызываются следующим образом:
delete(st, poz, n) – удаление n символов строки st, начиная с позиции poz. Если значение poz больше размера строки, то ничего не удалится.
insert(str1, str2, poz) – вставка строки str1 в строку str2, начиная с позиции poz.
Функции для работы со строками.
length(st) – вычисляет длину строки в символах. Возвращает число.
copy(st, poz, n) – выделяет из строки st подстроку длинной в n символов, начиная с позиции poz.
conсat(st1,st2, …, stn) – выполняет сцепление строк st1, st2, stn в том порядке, в каком они указаны в списке параметров.
pos(st1, st2) – обнаруживает первое появление в строке st2, подстроки st1. Возвращает число.
Процедуры преобразования типов
str(number, st) – преобразование числа number в строку и присвоение ее st.
val(st, number, code) – преобразует значение st в число и присваивает ее number. Code – это целочисленная переменная, которая будет содержать число в случае ошибки или ее отсутствии. Например, если все пройдет успешно, и st переведется в число, то code будет содержать значение 0, а если нет, то code будет содержать позицию первого ошибочного символа.