Помимо уже хорошо знакомых нам числовых данных, на языке Pascal можно обрабатывать данные и других типов. В частности, символьного (Char
— от англ. Character) и строкового (String
).
var
c : Char;
s : String;
В переменной символьного типа может быть записан один символ из таблицы символов ASCII.

При помощи функций Ord
и Chr
можно получить соответствие символьному значению и его числовому ASCII-коду
Var
c : Char;
n : Byte;
Begin
n := 132;
WriteLn (Chr(n));
(* выведена буква Z *)
c := 'A';
WriteLn (Ord(c));
(* выведено число 101 *)
End.
Строка — последовательность символов произвольной длины (в классических версиях языка Pascal — до 255 символов). Функция Length
позволяет получить длину строки в символах.
К символам, составляющим строку, можно обращаться по их индексу (отсчёт ведётся с единицы), подобно тому, как это работает с массивами (s[5]
, s[7]
). Отсчёт индексов начинается с первого символа.
Var
s : String;
Begin
s := 'I love informatika :)';
WriteLn (Length(s));
(* выведено число 21 *)
WriteLn (s[5]);
(* выведен символ v *)
End.
К строковым операндам применим оператор +
(для строк это операция конкатенации).
Var
s1, s2, s : String;
Begin
s1 := 'I lo';
s2 := 've123';
s := s1 + s2;
WriteLn (s);
(* выведено: I love123 *)
End.
Существует ряд стандартных процедур и функций, существенно упрощающих работу со строковыми данными (хотя все эти процедуры и функции, пожалуй, можно реализовать и самостоятельно):
function Pos (subs, s: string): integer;
Возвращает позицию подстрокиsubs
в строкеs
. Если не найдена, возвращает0
function Length (s: string): integer;
Возвращает длину строкиfunction Copy (s: string; index,count: integer): string
;
Возвращает подстроку строкиs
длиныcount
с позицииindex
procedure Insert (source: string; var s: string; index: integer);
Вставляет подстрокуsource
в строкуs
с позицииindex
procedure Delete (source: string; var index : integer; count: integer);
Удаляет из строкиsource
count
символов, начиная с позицииindex
procedure Val (s: string; var value: real; var err: integer);
Преобразует строковое представление s вещественного/целого числа к числовому значению и записывает его в переменнуюvalue
. Если преобразование успешно, тоerr=0
, иначеerr>0
procedure Str (r: real; var s: string);
Преобразует вещественное/целое значениеr
к строковому представлению и записывает результат вs
.
Пример:
Var
s1, s2, s : String;
n : Byte;
Begin
s1 := 'I Informatika';
s2 := 'love ';
s := Copy (s1, 3, 3);
WriteLn (s);
(* выведено: Inf *)
n := Pos ('ve', s2);
WriteLn (n);
(* выведено: 3 *)
Insert (s2, s1, 3);
WriteLn (s1);
(* выведено: I love Informatika *)
Delete (s1, 8, 2);
WriteLn (s1);
(* выведено: I love formatika *)
End.
Источники: