Приветствую Вас Гость |

Админ:a.khubiev@bk.ru
все уроки создания вирусов недоступны.Для доступа обратитесь к админу
Меню сайта

Пройди регистрацию,добавь 5 статей и получи статус

VIP

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

Статистика

Главная » Статьи » Мои статьи

Символьный тип (Char) И Тип pchar(паскаль)

Символьный тип (Char)

 

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

В программе вместо символа можно использовать его код, состоящий из # и номера кодируемого символа (например, #51). Обычно символы, имеющие экранное представление, записывают в явном виде, заключив в апострофы (например, 'A', 'b', '*').
Две стандартные функции позволяют поставить в соответствие данную последовательность символов множеству целых неотрицательных чисел (порядковым номерам символов последовательности).

Эти функции называются функциями преобразования:

ord(ch) – выдает номер символа (нумерация с нуля),
chr(i) – выдает i-ый символ из таблицы символов.

Пример. ord(H) выдает номер символа Н в последовательности всех символов, используемых транслятором. chr(15) выдает 15-ый символ этой последовательности.

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

pred(ch) – возвращает предыдущий символ;
succ(ch) – возвращает следующий символ;
upcase(ch) – преобразует строчную букву в заглавную. Обрабатывает буквы только латинского алфавита.

Также можно использовать процедуры inc и dec.

Тип pchar

 

В язык программирования Pascal введен тип pchar, который описывает так называемые длинные (или ASCIIZ) строки. В переменных типа string длина строки записывается в нулевом байте, а т.к. в 1 байт нельзя записать значение, превосходящее 255, то и длина переменной типа string не может превосходить 255 символов. Переменная типа pchar – это строка, которая может иметь длину до 65534 символов. Длина таких строк не указывается явно: строка начинается с первого символа и замыкается символом #0. Поскольку тип pchar определяется как указатель на символ, ASCIIZ-строки создаются в динамической памяти. С типом pchar совместим любой символьный массив, левая граница которого равна нулю. ASCIIZ-строки индексируются с отсчетом значений индекса от 0. Строковые константы также могут быть записаны в переменные типа pchar. Для вывода ASCIIZ-строк применимы операторы write и writeln.

Пример использования ASCIIZ-строк:

const ch_arr: array[0..20] of char = 'Hello World!'var p_str: pchar; beginp_str := ch_arr; writeln(p_str); p_str[4] := #0writeln(ch_arr)readln end.

 

В программе символьный массив объявлен в виде типизированной константы. Поскольку под него отведены 21 байт, его содержимое нужно было бы задавать строкой из 21 символа; однако в языке программирования Паскаль строковая константа, длина которой меньше количества элементов символьного массива, также записывается в символьный массив с автоматическим заполнением конца массива символом #0. В приведенной программе осуществляется коррекция переменной p_str, что меняет содержимое массива ch_arr, т.к. переменная p_str после присваивания p_str := ch_arr просто ссылается на этот массив и оперирует областью памяти, которую он занимает. Поэтому выражение p_str[4] := #0 изменяет длину строки ch_arr до четырех символов.

ASCIIZ-строка может быть объявлена типизированной константой, но ее длина в этом случае не может превосходить 255 символов. Например:

const pch: pchar = 'My name is ';

 

К данным типа pchar с помощью операции сложения можно добавлять целые значения, что соответствует смещению начала ASCIIZ-строки на указанное число позиций. Аналогично выполняется операция вычитания. Введена также операция вычитания между двумя ASCIIZ-строками, результатом которой является целочисленное значение, соответствующее смещению в памяти начала одной ASCIIZ-строки по отношению к началу другой.

const pch1: pchar = 'hello world'; pch2: pchar = 'привет мир'var p_str: pchar; n: longintbegin p_str := pch1 + 6writeln(p_str)// world writeln(pch2 + 7)// мир   p_str := 'This is world'writeln(p_str);   n := pch2 - pch1; writeln(n)readlnend.
Категория: Мои статьи | Добавил: aslan09 (02.11.2014)
Просмотров: 326 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
  Aslan Hubiev   Главная   Регистрация   Вход  
Вход на сайт

Поиск


© 2024