Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
К1_Допматериалы(02дек12).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
3.2 Mб
Скачать

Символьные типы

Используются для представления непустых символов из алфавита ЭВМ.

  • ИМЯ ТИПА

    Borland Pascal

    Char

    1 байт, кодировка ASCII

    -

    -

    Delphi

    Char

    Синоним типа AnsiChar

    AnsiChar

    1 байт, кодировка ANSI

    WideChar

    2 байта, кодировка UNICODE

  • ПРЕДСТАВЛЕНИЕ ЗНАЧЕНИЙ

  1. Символ, заключенный в одинарные кавычки:

'a',…,'z','A',…,'Z', '0',…,'9', 'Ю', '}' и.т.п.;

  1. Представление с префиксом # (#<код_символа>, только числовая константа):

#97('a'), …, #122('z'), #65('A'), …, #90('Z'), #48('0'), …, #57('9'), #158('Ю'), #125('}'), #7(сигнал), #9(табуляция), #27(Esc), #32(пробел);

  1. Управляющие символы (с кодом #1..#31):

^A(#1)..^Z(#26), ^[(#27), ... ,^_(#31)

  • ЗАДАНИЕ 1. РАСПЕЧАТАТЬ СИМВОЛЫ КОДОВОЙ ТАБЛИЦЫ

  • ОПЕРАЦИИ НАД СИМВОЛАМИ

  1. Присваивание (:=)

  2. Сравнение (<,>,<=,>=,=,<>): сравниваются коды символов

Символ больше, если имеет больший код: 'a'>'A' (#97>#65)

  1. Проверка вхождения элемента в множество (in).

  • ИСПОЛЬЗУЕМЫЕ ФУНКЦИИ И ПРОЦЕДУРЫ:

UpCase(C:Char):Char - перевод символов 'a'..'z' в верхний регистр: 'А'..'Z'.

Chr(X:byte):Char - возвращает символ с кодом X;

Ord(C:Char):Byte - возвращает код символа C;

Pred(C:Char):Char - возвращает символ, предшествующий C;

Succ(C:Char):Char - возвращает символ, следующий за C;

Inc(var C:Char) – увеличивает код символа на 1 (изменяется сам символ);

Dec(var C:Char) – уменьшает код символа на 1 (изменяется сам символ).

  • ЗАДАНИЕ 2. Написать функцию, обратную UpCase (для кодировки DOS|Win).

  • ЗАДАНИЕ 3. Написать функцию, аналогичную UpCase, для букв русского алфавита (для кодировки DOS|Win).

  • РАБОТА С БУФЕРОМ КЛАВИАТУРЫ (для среды Borland Pascal | Free Pascal | PascalABC)

Символы хранятся в буфере клавиатуры, пока они не будут считаны или буфер не будет очищен программой.

  • KeyPressed:Boolean (модуль CRT)

Функция опроса буфера клавиатуры. Возвращает True, если в буфере имеется хотя бы один символ, и False, если буфер пуст.

  • Очистка буфера клавиатуры:

  • Readkey:Char (модуль CRT)

Считывает ОДИН символ из буфера клавиатуры.

  • Read/Readln

После выполнения этих операторов происходит полная очистка буфера.

  • Расширенный код:

При нажатии некоторых клавиш/комбинаций клавиш (F1..F12, <стрелки>, Alt+A(..Z), Ctrl/Shift+<клавиша>) в буфер клавиатуры заносится ДВА символа, код первого из которых равен 0.

  • ПРИМЕР 1. Очистка буфера клавиатуры (фрагмент)

Uses Crt;

Var Ch:Char;

Begin

...

While KeyPressed do

Ch:=ReadKey;

...

End.

  • ПРИМЕР 2. Продолжение выполнения программы в зависимости от ответа пользователя (фрагмент)

Uses Crt;

Var

Ch:Char;

Begin

...

Repeat

...

Writeln(‘Прекратить выполнение программы?(Д/Н)’);

Ch:=Readkey;

Until Ch in [’д’,’Д’];

...

End.

  • ПРИМЕР 3. Вывод кода нажатой клавиши

Uses Crt;

Const

Esc=#27; {выход по нажатии Esc}

Var

ch:char;

Begin

ClrScr;

Writeln('Код клавиши(символ). Выход-ESC');

Repeat

While KeyPressed do

begin

ch:=Readkey;

write(Ord(ch):4);

if not KeyPressed then

Write('('+ch+')','':4,#13);

end;

Until ch=Esc

end.