Символы и строки в PascalABC.NET
Символы имеют тип char, занимают 2 байта и хранятся в кодировке Unicode (UTF-16).
Для преобразования символа c в код используется функция Ord(c) , для обратного преобразования кода i в символ используется функция Chr(i) .
Классический способ определить символ, следующий за данным в кодовой таблице, — это преобразовать символ в код, прибавить к коду число и потом преобразовать полученный код снова в символ:
Аналогично определяется предыдущий символ
Методы типа char
Методы, встроенные в тип char, делятся на две категории:
- проверяющие, принадлежит ли символ указанной категории: c.IsDigit , c.IsLetter , c.IsLower , c.IsUpper
- преобразующие символ: c.ToUpper , c.ToLower , c.ToDigit .
Отметим, что c.IsDigit эквивалентно (c >= ‘0’) and (c <= ‘9’) и эквивалентно c in ‘0’..’9′ Для c.IsLower , c.IsLower , c.IsUpper такой простой аналогии нет. Дело в том, что в этих методах проверяются все символы, являющиеся буквами в каком-то алфавите народов мира (в частности, английские и русские)
Отметим также, что c.IsLower возвращает True только если это буква в нижнем регистре — для не букв возвращается False .
Строки
Введение
Отметим, что для строк имеется много операций и методов, не все из которых мы рекомендуем для школьников.
Основная причина — многие методы строк в .NET считают, что строки индексируются с нуля, а в Паскале строки индексируются с 1.
Для устранения этой дилеммы при работе со школьниками мы не используем методы строк, которые работают с индексами, индексируемыми с нуля. Для них существуют эквивалентные замены внешними функциями, которые предполагают, что строки индексируются с 1.
Индексация строк
Строки в Паскале индексируются с 1. К символам строк можно обращаться по индексам — s[i] .
Символы строк можно менять:
Можно использовать индексацию с конца: s[^i] обозначает i-тый символ с конца
Тип данных Char. Функции Ord, Chr.
Мы с Вами уже рассмотрели типы данных, которые позволяют хранить и обрабатывать целые числа (integer) и дробные числа (real). Теперь рассмотрим тип данных, позволяющий хранить и обрабатывать различные символы. Символы – это все буквы и значки, которые мы можем увидеть на клавиатуре. Для того чтобы ввести в программу символьные переменные необходимо указать для них символьный тип данных Char.
Строка №4. Записываем переменную «X» и указываем для нее тип данных Char. Char – тип данных, который позволяет хранить символы. В данном случае в переменную «X» мы будем записывать не какие-то числа, а символы.
В строке №7 мы присвоили переменной «X» значение латинской буквы L. Сам символ, который необходимо записать в переменную, обязательно берется в апострофы. Напомню, что когда мы присваиваем переменной числовое значение, то число в апострофы не берется.
В строке №8 выводим на экран значение, которое мы присвоили переменной X, т.е. фактически на экран выведется буква L.
Строка №9. Функция Ord, преобразовывает букву в ее числовой код. Коды всех букв и символов можно посмотреть в кодовой таблице ASCII, которая приведена ниже. ASCII (American Standard Code for Information Interchange) — международный стандарт, принятый для кодирования текстовой информации. По этой таблице, любые символы имеют свой уникальный числовой код. В нашем примере переменной N присваивается значение функции Ord (L) т.е. (код) буквы «L» (по таблице ASCII код буквы «L» — 76).
В строке №10 выводим значение переменной «N» (т.е. числовой код буквы «L») на экран.
Строка №11. Функция Chr противоположна функции Ord. Эта функция будет преобразовывать числовой код символа в сам символ. В переменной N у нас записан код буквы «L». C помощью функции Chr мы преобразуем этот код в букву и запишем её в символьную переменную X. Таким образом, в строке №12 на экран выведется буква «L»


Дополнение к материалу.
В приведенном выше примере функция Ord возвращает в качестве значения код переменной «X», которой присвоено значение латинской буквы «L». После записи функции Ord переменная «X» стоит в круглых скобках (строка №9). Вместо записи переменной можно напрямую записать символ, код которого необходимо получить. Этот символ необходимо заключить не только в круглые скобки, но и в апострофы. Таким образом программу можно записать так:
Как узнать код символа в паскале

Пришло время разобраться с символами и строками.
Символьный тип данных: сhar
Все символы закодированы в таблице символов и именно с ее помощью и распознаются значения нажатых клавиш. Каждый символ занимает 1 байт памяти.
Для работы с символами нам достаточно двух функций: СHR и ORD.
CHR— определяет символ по коду. Пример: write(chr(65)); выведет букву А.
ORD-определяет код по символу. write(ord(‘A’)); выведет 65 (номер буквы А в таблице)
Строка — это последовательность символов. Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255.
Описываем строку с явным или неявным заданием ее длины, вводим и выводим как обычно. Для работы со строками будем использовать 4 функции и 4 процедуры.
Как узнать код символа в паскале
Работа программы будет выглядеть следующим образом: 
В этой программе можно произвольно задавать диапазон выводимых символов. Например for n:=1 to 50 . При запуске программы можно посмотреть первые 50 символов.
В Turbo Pascal есть ещё один тип символьных данных, это тип String — строка символов. Строка символов в Pascal может содержать до 255 символов. Фактически, строка это линейный массив из символов. Забегая вперёд (о массивах подробно в следующих разделах), можно сказать, что у каждого символа в строке есть порядковый номер — индекс. По индексу можно обратиться к любому символу в строке. Строковые переменные, так же как и символьные, при вызове должны заключаться в апострофы.
Операции с символами и строками. Рассмотрим все возможные действия, которые можно производить символами и строками.
Строковые переменные объявляются так же, как и любые другие переменные, и имеют тип String. Например:
Var
S1, mystr: string;
Sym1, ch100 : char;
При присваивании переменной определённых значений, значения берутся в апострофы, например:
Sym1:= ‘G’;
Mystr := ‘Hello Word’;
S1:= ‘. ‘;
Символы и строки можно складывать:
S:= Mystr + S1; < в результате строка S будет 'Hello Word. '; >
Можно получить любой символ из строки по индексу символа в строке, например:
Ch := Mystr[7];
В Turbo Pascal есть встроенные процедуры и функции для работы со строками:
Length(s:string):integer; — функция возвращает число символов в строке. Например: ns:= Length(‘Hello’); числовой переменной ns будет присвоено значение 5.
Copy(s:string; index:integer; count:integer):string; — Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index. Например:
s := ‘Turbo Pascal’;
s1 := copy(s, 1, 5);
s2 := copy(s, 7, 6);
Delete(var s:string; index,count:integer); Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index. Например:
s := ‘Turbo Pascal’;
delete(s,1,6);
Insert(source:string; var s:string;index:integer);
Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки. Например:
s := ‘Pascal Version 7’;
insert(‘Turbo ‘,s,1);
Pos(substr,s:string):byte;
Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0. Например:
s := ‘Turbo Pascal’;
x1 := pos(‘Pascal’, s);
x2 := pos(‘Basic’, s);
Str(X: арифметическое числовое выражение; var st: string);
Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.
Val(st: string; x: числовая переменная; var code: integer);
Процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x. x — может быть как целой, так и действительной переменной. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равно 0, то это свидетельствует об успешно произошедшем преобразовании.
В заключение этой темы напишем программу подсчёта числа заданных символов в строке:
uses crt;
var
n: integer; <переменная для цикла>
z: integer; <переменная для подсчёта числа символов>
s: string; <вводимая строка>
c: char; <вводимый символ>
cx: char; <символ, который будет браться из строки>
begin
clrscr;
z:= 0;
write(‘Wwedi stroku: ‘);readln(s); <вводим строку для исследования>
write(‘Wwedi symwol: ‘); readln(c); <вводим символ для поиска в строке>
for n:= 1 to length(s) do
begin
cx:= s[n]; <<берём из строки очередной символ с индексом n>
if cx = c then inc(z); <если введённый и взятый символ совпадают, то увеличиваем счётчик z на 1>
end;
writeln(‘Chislo simwolow ‘,c, ‘=’, z); <Выводим результат на экран>
readln;
end.