Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФОРМАТИКА_Паскаль.doc
Скачиваний:
7
Добавлен:
08.05.2019
Размер:
1.77 Mб
Скачать

8.2. Объявление символьной переменной

Объявление символьной переменной осуществляется следующим образом:

VAR Litera1, LITERA2: CHAR;

При этом в памяти будет выделено две области по 1 байту каждая с символическими именами соответственно Litera1 и Litera2.

Задать символ можно с использованием оператора присваивания одним из трех возможных способов:

- записью символа, заключенного в одиночные кавычки (апострофы). Например: '7', '+', 'A', ' ' ' ' , 'a'. Для представления самого апострофа его изображение удваивается;

- использованием десятичного кода (номера) символа с предшествующим ему символом '#' (решеткой, диезом). Фактически, символ решетки является указанием транслятору о представлении числового кода как тип Char. Например, #97 = CHR(97) = ‘A’; #0 = CHR( 0 ) { символ нуля}; #32 = CHR(32) = ‘ ‘ (пробел). Функция CHR по заданному коду возвращает графическое представление символа;

- использованием шестнадцатеричного номера символа в таблице. В этом случае к литере # следует добавить литеру "$". Например, для символа пробела ' ' = #$20.

Символы, имеющие коды от 1 до 31, являются управляющими. Их можно представить значком «^» и буквой алфавита с тем же номером (диапазон кодов 1…26) или служебным знаком (диапазон кодов 27…31). Символы и знаки для управляющих столбцов 1 и 2 расположены в тех же строках таблицы ASCII столбцов с номерами 4 и 5 соответственно:

^A = #1 = CHR(1) – код 1,

^B = #2 = CHR(2) – код 2,

. . . . . . . . . . .

^Z = #26 = CHR(26) – код 26,

^[ = #27 = CHR(27) – код 27,

. . . . . . . . . . .

^ =#31 = CHR(31) - код 31.

Задание констант для улучшения читабельности и облегчения коррекции программ осуществляется с использованием любого из названных способов.

CONST

THREE = ‘3’;

BEL = ^G.

Однако следует иметь в виду, что задание управляющих кодов возможно при выполнении операции присваивания, при объявлении констант или записи констант в операциях вывода. Ввести эти коды с клавиатуры невозможно.

8.3. Операции с символами

А). Операция присваивания. Выполняется по общим правилам. Например:

VARsimv1: char;

. . . . .

Simv1:='A'; {символьной переменной присваивается код символа "А"}

Simv1:=^G; {присваивается управляющий код звукового сигнала 7}

Simv1:=CHR(32) {присваивается результат работы функции преобразования кода в символ. В данном случае это код пробела}

Б). Операция сравнения. При сравнении символов фактически сравниваются не символы, а их ASCII-коды. При этом один символ считается больше другого, если он имеет больший ASCII-код. Поэтому справедливы следующие отношения:

'R' = 'R'

'r'>'R' , так как код строчного символа равен114, а заглавного – 82.

Ввод данных. Ввод символов возможен при выполнении операции присваивания или выполнении оператора ввода с клавиатуры READLN. При этом символы допускается вводить подряд без пробелов по числу переменных типа CHAR в операторе с последующим нажатием клавиши ENTER. Лишние набранные с клавиатуры символы будут утрачены. В случае нехватки символов – оператор READLN будет ожидать ввода недостающих символов.

Вывод данных. Операция осуществляется стандартными операторами вывода с учетом способов задания символьных переменных, констант и параметров форматирования:

VARSimv1, simv2: char;

. . . . .

WRITELN(Simv2:4); {по месту установки курсора будет выведен символ, соответствующий текущему значению символьной переменной Simv2, причем перед ним будет напечатано 3 символа пробела}

WRITELN (Simv2,^G^G^G^G,Simv1); {выводится значение символьной переменной Simv2, 4 раза код звукового сигнала, затем переменная Simv1}

9.4. Стандартные функции для работы с символами

Синтаксис и формат функции

Назначение функции, примеры

Аналог в Basic

CHR(N)

CHR(N:BYTE):CHAR

Возвращает символ (графическое представление) по десятичному ASCII-номеру (коду) N (преобразует тип)

Simv3:=CHR(65) {символьной переменной Simv3 присваивается значение латинского символа "А"}

CHR(X)

ORD(X)

ORD(Х:CHAR):BYTE

Возвращает число (порядковый номер, код), соответствующее ASCII-коду символа X (преобразует тип)

Ord(A) <Ord(B) – условие истинное

Date1:=ORD(A) {Числовой переменной Date1 присваивается значение 65=41h}

Date2:=ORD(^G) {Числовой переменной Date2 присваивается значение 7}

ASC(X)

PRED(X)

PRED(Х:CHAR):CHAR

Возвращает символ, предшествующий символу Х в ASCII. PRED(#0) не определен, выдается ошибка. Функция удобна для последовательного перебора символов

Pred(C) = Chr(Ord(С) - 1) – условие истинное;

Simv4:=PRED(A) {символьная переменная Simv4 приобретает значение символа @}

Нет

SUCC(X)

SUCC(Х:CHAR):CHAR

Возвращает символ, следующий за символом Х в ASCII. SUCC (#255) не определен, выдается ошибка. Функция удобна для последовательного перебора символов

Succ(С) = Chr(Ord(С) +1) – условие истинное;

Simv4:=SUCC(A) {символьная переменная Simv4 приобретает значение символа B}

Нет

UPCASE(X)

UPCASE(Х:CHAR):CHAR

Преобразует строчный латинский символ Х в верхний регистр (прописные буквы) латинского алфавита. Остальные символы оставляет без изменения, в том числе и прописные латинские символы.

Simv5:=UPCASE('я') - оставляет без изменения;

Simv6:=UPCASE('f') - выполняет, результат – 'F'

UCASE$(S$)

LCASE$(S$)

Каждый символ можно рассматривать как элемент множества SETOFCHAR, поэтому возможна проверка на вхождение IN. Принцип построения такой проверки показан на примере:

VAR

CH:CHAR;

. . . . .

CH:=’D’;

IF CH IN[‘A’. .’Z’] THEN . . .