Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по паскалю экзамен 10-25.docx
Скачиваний:
9
Добавлен:
23.09.2019
Размер:
139.84 Кб
Скачать

Вопрос20. Тип данных char. Операции над символами

Символьный тип данных

Идентификатор типа Допустимые значения

Char Множество символов кодовой таблицы ASCII.

Каждому символу приписывается целое число в диапазоне от 0 до 255.

Пример описания величины символьного типа:

var

letter, symbol, ch: char;

В программе значения для переменных типа Char должны быть заключены в апострофы: ch := '*'; a := '3'; letter := 'G'.

Кроме того, имеется возможность задавать значения указанием непосредственного числового значения ASCII-кода:

kd:= #65 {символ 'A'}; s:= #10 {клавиша <Enter>}.

Операции для данных символьного типа

Над данными символьного типа определены операции сравнения: =, <>, <, >, <=, >=, вырабатывающие результат логического типа. Операция сравнения осуществляется следующим образом: из двух символов меньше тот, который встречается в таблице ASCII раньше.

Так как символьный тип является порядковым типом данных, то для него справедливо все, что было сказано о порядковых типах.

Функции для данных символьного типа

Для данных символьного типа определены следующие стандартные функции:

Функция Назначение

chr(x) Преобразует выражение x типа byte в символ и возвращает значение символа

ord(ch) Преобразует символ ch в его код типа byte и возвращает значение кода.

pred(ch) Возвращает предыдущий символ.

succ(ch) Возвращает следующий символ.

Примеры использования функций:

ord(':') = 58

ord('A') = 65

chr(128) = Б

pred('Б') = A

succ('Г') = Д

Пример 1. Определение кода по символу и символа по коду.

Program primer_1;

var

c: char;

code: integer;

begin

writeln('Введитесимвол: ');

readln(c);

code := Ord(c);

writeln('Код символа ',c,' равен ',code);

writeln('Введите код символа: ');

readln(code);

c := Chr(code);

writeln('Символ с кодом ',code,' - это ',c);

end.

Пример 2. Напишите программу для вывода на экран всех символов таблица ASCII.

program primer_2;

var

ch: char;

i: byte;

begin

for i := 0 to 255 do begin

if (i mod 5) = 0 then writeln;

write (i:3,' - ', chr(i), '; ')

end;

end.

Пример 3. Вывести в одну строку:

ABBCCC...ZZ...Z

Переменные:

i - переменная цикла; определяет, какая буква будет выводиться;

k - количество повторений буквы;

j - переменная цикла, счетчик количества уже выведенных букв.

program primer_3;

var

i: char;

k, j: integer;

begin

k:=1;

for i := 'A' to 'Z' do

begin

for j:=1 to k do write(i);

k:=k+1;

end;

writeln;

end.

Внешний цикл определяет, какую букву выводим на печать, внутренний - сколько раз будет печататься буква. После вывода всех букв переходим в начало следующей строки.

В большинстве применений компьютера алфавитно-цифровая информация используется наряду с числовой информацией. Прежде чем мы сможем написать программу, которая манипулирует алфавитно-цифровыми знаками (литерами), нам потребуется тип данных для их представления.для этих целей в языке Паскаль предусмотрен тип данных char.

Так же, как переменная типа integer может хранить одно целое число, переменная типа char может хранить один символ.

Например,Var

Alpha : char;

Begin

Alpha :='p';

Alpha :='+';

Alpha :='3';

Alpha :=' ';

Alpha :='''';

Первый оператор присваивания записывает в переменную Alpha литеру р.

Второй делает Alpha равной литере плюса (+).

Третий делает Alpha равной символу 3. Заметим, что чисвол 3 отличается от целого числа 3 тем, что она не может быть использована в арифметических операциях.

Четвертый оператор присваивания делает Alpha равной литере пробела. Хотя литера пробела при печати не изображается, она является обыкновенным значением типа char.

Последний оператор присваивания делает Alpha равной литере апострофа, это специальный случай, так как знак апострофа используется для ограничения значения типа char.

Мы будем пользоваться множеством литер, находящимся в таблице кодов, называемой ASCII - американский стандартный код обмена информацией.

Все символы упорядочены, т.к. имеют свой личный номер. Важно, что соблюдаются следующие отношения:

'A' < 'B' < 'C' < ... < 'X' < 'Y' < 'Z' '0' < '1' < '2' < ... < '7' < '8' < '9'

Для проверки равенства или неравенства переменных типа char могут использоваться операторы булевого сравнения.

Задача. Написать программу, которая считывает две литеры и печатает больше, равна или меньше первая литера второй.ProgramSravnenie;

Var

First, Second : char;

Begin

write ('Введите две литеры через пробел ');

readln (First, Second);

write ('Первая литера ');

if First > Second

then

write ('больше второй. ');

else

if First = Second

then

write ('равна второй. ');

else

write ('меньше второй. ');

Еnd.

Так как char - порядковый тип, то к его значениям применимы следующие функции.

Succ - возвращает следующий символ литерного множества;

Pred - возвращает предыдущий символ литерного множества;

Ord - возвращает значение кода литеры;

Chr - возвращает значение литеры, является обратной по отношению к функции Ord.

Например,

Succ('0')='1' - символ, следующий за символом 0, равен символу 1.

Pred('3')='2' - символ, предшествующий символу 3, равен 2;

Chr(65)='A' - символ, соответствующий коду 65, равен А;

Ord('A')=65 - код символа А равен 65