Меню

Обратная связь

Сейчас на сайте

•Сейчас• •43 гостей• •онлайн•

Авторизация



Назад...


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

 

Для работы с символами в языке PascalABC предусмотрен специальный тип данных, который называется символьным и обозначается char (от слова character - символ). Значениями переменных этого типа являются отдельные символы: буквы, цифры, знаки.

 

Символьные переменные описываются так:

Var

имя_переменной: char;

Примеры описания переменных:

VAR

a, b, ch: char;

 

Каждый символ имеет свой уникальный двоичный код. В оперативной памяти один символ занимает 1 байт. Переменные символьного типа могут принимать значения одного из символов с кодами от 00000000 до 11111111 ( от 0 до 255 в десятичном представлении). Допускаются буквы национальных алфавитов и некоторые специальные символы так называемой псевдографики (линии, штриховки, стрелки). Символы с кодами от 0 до 31 (управляющие) в тексте воспринимаются как пробел, а в операторах вывода как символ или соответствующая команда.

 

Все символы упорядочены в соответствии с их кодом: 0 .. 255. Этот код в виде целого числа возвращает функция ord(x) в качестве результата, если параметром является символ алфавита. Коды всех символов принято размещать в таблицу (приложение 1). Первая половина таблицы стала международным стандартом, который называется ASCII - American Standard Code Information Interchange (читается "аски код"). В ней содержится цифры, латинский алфавит и служебные символы. Во второй половине таблицы размещают символы национальных алфавитов. Размещение символов кириллицы имеет несколько вариантов. Для работы в Windows часто используют кодировку Windows-1251 (CP-1251).

 

Над символьными переменными можно выполнять следующие действия: присваивание, ввод и вывод, сравнение.

 

Значения символьных констант и переменных заключаются в апострофы (одинарные кавычки), например, 'A', 'B', 'C', '4', '7', ' ' (пробел). Если нужен сам апостроф, то он удваивается: В := ’’’’ . Символьные значения можно задавать и их числовыми кодами. В этом случае перед кодом записывают знак #.

 

Примеры присваивания символьных значений (они предварительно должны быть описаны Var a, aa, b, bb c, d: char; ):

a:= 'A'; { прописная латинская буква A вводится непосредственно },

aa:= #65; { прописная латинская буква A задается значением ее кода },

b:= '!'; { символ восклицательный знак вводится непосредственно },

bb:= #33; { символ восклицательный знак "!" задается значением его кода },

c:= #13; { задание кода клавиши Enter }

d:= #27; { задание кода клавиши Esc }

Вывод символьных переменных выполняется с помощью стандартных процедур Write и Writeln. Примеры вывода:

Write(a) или Write(aa); {выводится буква "A" },

Write(b) или Write(bb); {выводится символ " ! " },

Write(c); { команда перевода курсора на новую строку },

Write(d); { выводится специальный символ, соответствующий коду #27 }

 

Ввод символьных переменных выполняется с помощью стандартных процедур Read и Readln. Обратим внимание на следующую особенность ввода нескольких символов. Нажатие клавиши Enter при вводе приводит к присвоению символьной переменной значения кода клавиши Enter (код #13), поэтому значения символьных переменных вводятся одна за другой без нажатия  клавиш Enter или Пробел (код #32).

Например, процедура Readln(a,b,c) ожидает ввода значений символьных переменных a, b, с, т. е. набора на клавиатуре символов, например: "У", "Р", "А" и нажатия Enter. В результате процедура Write (a, b, с); выведет на экран надпись: “УРА”.

 

Пример 1. Составить программу, в которой выполняется присваивание, ввод и вывод символов. Прежде всего объявляем тип char (символьный) переменных a, b, c, d.

Значения переменных a, b, c будем вводить c клавиатуры. Пусть значение переменной d присваивается программой, например: d:='!';

Программа может выглядеть так:

Program Primer61_1;

Var

a, b, c, d : char;

Begin

d:='!'; { присваивание значения }

read(a,b,c); { ввод трех символов }

writeln(a,b,c,d); { вывод четырех символов }

End.

 

PascalABC содержит несколько стандартных функций для работы с символами (приложение 2). Рассмотрим на примерах использование функций:

ord(s) – определяет код символа s ,

chr(n) - возвращает символ с кодом n,

 

Пример 2. Составить программу, которая определяет код введенного с клавиатуры символа.

Код введенного символа s определяем с помощью функции ord(s).

Программа может выглядеть так:

Program Primer61_2;

Var

s: char;

begin

readln(s); { ввод символа }

writeln(ord(s)); { вывод кода }

end.

 

Пример 3. Составить программу, которая выводит символ по его коду, введенному с клавиатуры. Символ с кодом n возвращается функцией chr(n).

Программа может выглядеть так:

Program Primer61_3;

var

n: integer;

begin

readln(n); { ввод кода }

writeln(chr(n)); { вывод символа }

end.

 

Пример 4. Составить программу, которая определяет, какой символ введен с клавиатуры: цифра, большая или малая латинская буква.

Введенный символ a преобразуем в код функцией ord(a). Цифры имеют коды от 48 до 57, заглавные латинские буквы от 65 (A) до 90 (Z), строчные от 97 (a) до 122 (z).

Программа может выглядеть так:

Program Primer61_4;

Var

a: char;

Begin

Read(a);

if (ord(a)>=48) and (ord(a)<=57) then Writeln(a,' цифра');

if (ord(a)>=65) and (ord(a)<=90) then Writeln(a,' заглавная буква');

if (ord(a)>=97) and (ord(a)<=122) then Writeln(a,' малая буква');

End.

Благодаря тому, что в компьютере символы представляются в виде числовых кодов, к ним можно применять операции сравнения (отношения).

Допустимы шесть операций сравнения: =, <=, >=, <, >, < > .

Из двух символов большим считается тот, код которого больше.

Символы упорядочены в соответствии с их кодами следующим образом:

'0' < '1' <...< '9'

'A' < 'B'<...< 'Z' 'a '< ' b' <.. .< 'z' 'А' < 'Б' <...< 'Я' 'а' < 'б' <...< 'я'

 

Пример 5. Составить программу, которая выполняет сравнение введенного с клавиатуры символа с заданным.

Прежде всего объявляем тип char (символьный) переменных x и y. Переменной y присваиваем некоторое значение, например y:='h'. Записываем процедуру ввода значения переменной x. Записываем условие сравнения переменных: if x<y. Если оно выполняется, то выводим значения, соединенные знаком меньше: x, '<', y , иначе выводим x, '>=', y.

Программа может выглядеть так:

Program Primer61_5;

Var

x, y: char; { переменные символьного типа }

Begin

y:='h'; { присваивание значения символа }

Read(x); {ввод символа}

If x<y then writeln(x, '<', y) else writeln(x, '>=', y); {сравнение символов}

End.

 

 

•Информация о профиле•

Application afterLoad: 0.001 seconds, 0.29 MB
Application afterInitialise: 0.037 seconds, 0.96 MB
Application afterRoute: 0.045 seconds, 1.20 MB
Application afterDispatch: 0.066 seconds, 2.02 MB
Application afterRender: 0.098 seconds, 2.40 MB

•Использование памяти•

2554128

•Зарегистрировано запросов: 22•

  1. SELECT *
      FROM jos_session
      WHERE session_id = 'qlee5hde3gheo3kd4fvmub4in5'
  2. DELETE
      FROM jos_session
      WHERE ( time < '1733298080' )
  3. SELECT *
      FROM jos_session
      WHERE session_id = 'qlee5hde3gheo3kd4fvmub4in5'
  4. INSERT INTO `jos_session` ( `session_id`,`time`,`username`,`gid`,`guest`,`client_id` )
      VALUES ( 'qlee5hde3gheo3kd4fvmub4in5','1733301680','','0','1','0' )
  5. SELECT *
      FROM jos_components
      WHERE parent = 0
  6. SELECT folder AS type, element AS name, params
      FROM jos_plugins
      WHERE published >= 1
      AND access <= 0
      ORDER BY ordering
  7. SELECT *
      FROM jos_migration_backlinks
      WHERE url LIKE 'component/content/article/90.html%' OR sefurl LIKE 'component/content/article/90.html%'
  8. SELECT template
      FROM jos_templates_menu
      WHERE client_id = 0
      AND (menuid = 0 OR menuid = 0)
      ORDER BY menuid DESC
      LIMIT 0, 1
  9. SELECT a.*, u.name AS author, u.usertype, cc.title AS category, s.title AS section, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END AS slug, CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END AS catslug, g.name AS groups, s.published AS sec_pub, cc.published AS cat_pub, s.access AS sec_access, cc.access AS cat_access 
      FROM jos_content AS a
      LEFT JOIN jos_categories AS cc
      ON cc.id = a.catid
      LEFT JOIN jos_sections AS s
      ON s.id = cc.section
      AND s.scope = "content"
      LEFT JOIN jos_users AS u
      ON u.id = a.created_by
      LEFT JOIN jos_groups AS g
      ON a.access = g.id
      WHERE a.id = 90
      AND (  ( a.created_by = 0 )    OR  ( a.state = 1
      AND ( a.publish_up = '0000-00-00 00:00:00' OR a.publish_up <= '2024-12-04 08:41:20' )
      AND ( a.publish_down = '0000-00-00 00:00:00' OR a.publish_down >= '2024-12-04 08:41:20' )   )    OR  ( a.state = -1 )  )
  10. UPDATE jos_content
      SET hits = ( hits + 1 )
      WHERE id='90'
  11. SELECT id, title, module, position, content, showtitle, control, params
      FROM jos_modules AS m
      LEFT JOIN jos_modules_menu AS mm
      ON mm.moduleid = m.id
      WHERE m.published = 1
      AND m.access <= 0
      AND m.client_id = 0
      AND ( mm.menuid = 0 OR mm.menuid = 0 )
      ORDER BY position, ordering
  12. SELECT *
                           
      FROM jos_menu
                           
      WHERE menutype='mod_maximenu_CK'
      AND published=1
                           
      ORDER BY sublevel DESC,ordering
                            ;
  13. SELECT *
                           
      FROM jos_modules
                           
      WHERE published=1
                           
      ORDER BY id
                            ;
  14. SELECT *
                           
      FROM jos_menu
                           
      WHERE menutype='uth_proc'
      AND published=1
                           
      ORDER BY sublevel DESC,ordering
                            ;
  15. SELECT *
                           
      FROM jos_modules
                           
      WHERE published=1
                           
      ORDER BY id
                            ;
  16. SELECT *
                           
      FROM jos_menu
                           
      WHERE menutype='Olimp'
      AND published=1
                           
      ORDER BY sublevel DESC,ordering
                            ;
  17. SELECT *
                           
      FROM jos_modules
                           
      WHERE published=1
                           
      ORDER BY id
                            ;
  18. SELECT *
                           
      FROM jos_menu
                           
      WHERE menutype='obr_sv'
      AND published=1
                           
      ORDER BY sublevel DESC,ordering
                            ;
  19. SELECT *
                           
      FROM jos_modules
                           
      WHERE published=1
                           
      ORDER BY id
                            ;
  20. SELECT *
                           
      FROM jos_menu
                           
      WHERE menutype='raznoe'
      AND published=1
                           
      ORDER BY sublevel DESC,ordering
                            ;
  21. SELECT *
                           
      FROM jos_modules
                           
      WHERE published=1
                           
      ORDER BY id
                            ;
  22. SELECT guest, usertype, client_id
      FROM jos_session
      WHERE client_id = 0

•Языковые файлы загружены•

  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.plg_system_debug.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.com_content.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.plg_content_pagebreak.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.tpl_MY_sh.ini
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/en-GB/en-GB.tpl_MY_sh.ini
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.mod_maximenu_CK.ini
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/en-GB/en-GB.mod_maximenu_CK.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.mod_whosonline.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.mod_login.ini 1
  • /var/www/user13295/data/www/ssa.lel-gimnazia.by/language/ru-RU/ru-RU.mod_breadcrumbs.ini 1

•Диагностика непереведённых строк•

•Нет•

•Дизайнер непереведённых строк•

•Нет•