
Символьные переменные.
Бывают 2-х типов:
char - символьные (1 б.);
string - строковые (255 б.);
Тип char.
Доступны только 2-е операции: сравнение и присваивание. При сравнении символов сравниваются их ASCII - коды.
Например:
'A'65
'B'
66
'a'97
'b'
98
Функции обработки символьных переменных.
chr (x: BYTE): SHAR
тип аргумента тип функции
-
возвращает символ, соответствующему коду x (ASCII - код).
ord (x: SCAR): BYTE
-
возвращает число, соответствующее коду символа x.
upcase (x: CHAR): CHAR
-
преобразует строчные (мал.) в прописные (бол.) символы, только для латинского алфавита.
другой символ остается непреобразованым.
pred (x: CHAR): CHAR
-
возвращает символ, предшествующий x (pred('B')='A')
succ (x: CHAR): CHAR
-
возвращает символ, следующий за x (succ('A')='B')
Пример: вывести на экран таблицу кодов и символов ASCII - таблицы.
program ASCII;
var
i: byte;
begin
for i:=1 to 255 do
writeln (chr(i), '=', i);
end.
Коды букв латинского и русского алфавита.
Латинские.
A |
65 |
a |
97 |
B |
66 |
b |
98 |
… |
… |
… |
… |
Z |
90 |
z |
122 |
Строчные от прописных отличаются на 32.
Русские.
A B … П |
128 129 … 143 |
а б … п |
160 161 … 175 |
P … Я |
144 … 159 |
р … я |
244 … 239 |
Е |
240 |
е |
241 |
Тип char в программах на Паскале часто используют для хранения вводимых с клавиатуры ответов на запросы меню.
Для этого используют функцию readkey. Работу этой функции обеспечивает модуль Crt.
Приведем пример использования:
Program char;
uses crt;
begin
цикл:
repeat
…
ch:= readkey
until (ch='n') or (ch='N');
end.
Цикл действий продолжается до тех пор, пока не будет введено с клавиатуры 'n' или 'N'.
Тип string.
Переменные типа string состоят из цепочки символов, т. е. Элементов типа char. Ввод-вывод переменных string осуществляется с помощью:
read и write.
Объявление строковых переменных:
var
a:= string; - по умолчанию длина строки - 255 символов.
b:= string [20]; - длина ограничена 20 символами.
Существует два способа обработки строковых переменных:
-
обработка всей строки как единого целого;
-
рассматривать строку как объект, состоящий из отдельных символов, т.е. элементов типа char.
word:= 'Москва - столица' - строковая переменная.
Со строковыми переменными возможны операции слияния:
a:= 'России'
word + a = 'Москва - столица России'
Задача.
Задана последовательность символов S1 … Sn Подсчитать количество "!" знаков.
Program pr;
var
s: array [1…100] of char;
p, i, n: integer;
begin
readln (n);
for i:=1 to n do
readln (s[i]);
for i:=1 to n do
if s[i]= '!' then p:=p+1;
writeln (p);
end.
Ввод каждого символа завершается ENTER.
Задача.
Задана последовательность символов S1…Sn Подсчитать сколько цифр (09) в этой последовательности.
Program pr;
var;
s: array [1…100] of char;
i, n, p: integer;
begin
readln (n);
for i:=1 to n do resdln (s[i]);
for i:=1 to n do
if (ord (s[i])>=ord ('0')) and
(ord (s[i])<=ord('9')) then
p:=p+1;
writeln (p);
end.
Ord - выдает код символа.
'0', '9' - символьные константы.
Каждый символ в строковой переменной можно рассматривать как переменную типа char, доступ к ним через индекс в квадратных скобках, можно применить все функции типа char
word [1]:='M'
word [2]:='0'.