Как уже указывалось в лекции 5, все символы в ЭВМ представлены в виде целых чисел. Порядок соответствия литер символов целым числам называется кодировкой (или кодовой таблицей,
Вначале возникли кодировки, включающие в себя десятичные цифры, буквы (прописные и строчные) латинского алфавита, сокращения английского языка (такие как "" и "@"), знаки препинания и специальные символы. На основе этих символов возникли кодировки
Кодировки
Однако в кодировке ASCII отсутствуют даже некоторые символы (умляуты) западноевропейских алфавитов. Что же говорить о кириллических символах... Для решения этой проблемы были созданы расширенные кодировки ASCII, в которых для представления символов используются все восемь бит. Это доводит количество закодированных символов до 256. Среди реализаций кириллических символов в расширенных ASCII кодировках можно отметить кодировки
Относительно полно концепция "сплошной нумерации" применяется в кодировке USSR GOST и
Исторически первой кодировкой с кириллическими символами была кодировка
Следом за этой кодировкой на российские компьютеры вначале пришла болгарская, а затем - и альтернативная русская кодировка ДОС, впоследствии переименованная в
Недостатками этой кодировки являются:
Кодировка
Однако у этой кодировки есть недостатки:
К "многоразрядным" кодировкам относятся кодировки Unicode и UTF. Рассмотрим историю их возникновения.
Уже в начале 90-х годов XX века стало ясно, что 256 чисел для
При всей полезности
Примечание. Кодировка UTF-8 стала стандартом в операционной системе Linux и в Интернете. При разработке приложений в Microsoft Window, начиная с версии 98, также широко используются кодировки UTF-8 и UTF-7.
В качестве "примитивных" символьных данных чаще всего используются массивы "символьных" типов данных. При этом максимальная длина этого массива (то есть максимальный индекс, который может принимать этот массив) фиксируется либо программистом, либо
В таблице 6.1 даются описания символьных данных, их размерности и обозначение.
| Тип данных | Префикс/Окончание | Разрядность регистров/длина | Примечание |
|---|---|---|---|
| Quick Basic | |||
| STR <идентификатор>$ | Переменная длина (до 255 символов) | Для хранения 1 символа в кодировке ASCII. | Не защищен от изменений. |
| VB Script | |||
| в зависимости от конкретного значения | Переменная длина | Используется для хранения всех видов данных. | |
| Java | |||
| char | с | 2 байта | Для хранения одного символа в кодировке Unicode |
| String | str | Переменная длина | Класс для хранения символов в кодировке Unicode. Защищено от изменений! |
| javascript | |||
| в зависимости от конкретного значения | Переменная длина | Используется для хранения всех видов данных. | |
| C/C++ | |||
| char | с | 1 байт | Для хранения одного символа в кодировке ASCII (со знаком) |
| uc | 1 байт | Для хранения одного символа в кодировке ASCII (без знака) | |
| char * | pc | от 2 до 4 байт | Указатель на массив (переменной длины) |
| от 2 до 4 байт | Указатель на массив (переменной длины) | ||
| C/C++ Windows API | |||
| BYTE | b | 1 байт | Эквивалентен |
| NPSTR | npsz | 2 байта | Эквивалентен char near * |
| LPSTR | lpch | 4 байта | Эквивалентен char far * |
| LPCSTR | lpsz | 4 байта | Эквивалентен const char far * |
| C++ MFC | |||
| cstr, str | Переменная длина | Класс для хранения символов в кодировке Unicode. Защищено от изменений! | |
| C++ Classlib | |||
| string | str | Переменная длина | Класс для хранения символов в кодировке ASCII (и Unicode?). Защищено от изменений! |
Обычно, в начале работы программы, весь массив символьных данных заполняют нулевой константой (она обозначается на языке Си как " \0 "). Это делается в расчете на то, что признаком конца символьных данных является не признак конца строки, не
Что касается максимальной длины символьной строки, то она может принимать значения от 255 (языки "Паскаль", "Quick Basic", СУБД dBase III+), 2047 (Multi Edit и часть редакторов) и даже ~ 64 Кбайт (величина сегмента памяти процессора x86). Но, следующий нехитрый расчет показывает, что использовать длину строки более 2000 (80*25) символов нерационально (она все равно не уместится на экране).
Также автор советует не доверять своей памяти в использовании максимальной длины строки, а определить ее в виде константы целого значения (например, константного типа const на языке Си).
Следующим "джентльменским соглашением" при работе с символьными данными является неизменность значений массивов символьных данных (кроме, возможно, первого массива в выражении) при символьных вычислениях. Вот почему большинство символьных функций принимает тип аргументов как const char * (указатель на начало массива
Итак, организация работы с "примитивными" символьными массивами данных следующая:
malloc ) или объявляется (в начале блока программ) необходимое количество символьных массивов-переменных;memset );free ).mem *** и полностью исключить использование функций str*** (за исключением функции strlen ), заменив их функциями: strn*** (на языке Си). Звездочками обозначено окончание функций.Собственно стандартные функции для работы с
| Функция/Метод | Описание | Пример |
|---|---|---|
| Язык Си. Функции |
||
#include <string.h> |
Заголовочный файл для этих функций | |
int |
Возвращает длину строки str1 (позицию его символа \0). | |
char* strerror( char *str ); |
||
char * |
Конкатенация строки str1 и str2, но в строку n записывается не более n символов. Возвращается значение строки str1 или NULL при неудаче конкатенации. | |
int |
Сравниваются не более чем n символов в строке str1 со строкой str2 в лексикографическом порядке. Возвращает: "0" - если строки совпали, "-1" - если str1 < str2, "1" - если str1 > str2. | |
char * |
Копирует строку str2 в строку str1, но не более чем n символов. Возвращается значение строки str1 или NULL при неудаче копирования. | |
char * |
Ищется первое вхождение символа из строки str2 в строке str1. Возвращает указатель на этот символ или NULL, если символы не обнаружены. | |
char * |
Ищется последнее вхождение символа из строки str2 в строке str1. Возвращает указатель на этот символ или NULL, если символы не обнаружены. | |
char * |
Ищется первое вхождение символа, которого нет в строке str2, в строке str1. Возвращает указатель на этот символ или NULL, если символы не обнаружены. | |
char * |
Ищется первое вхождение подстроки str2 в строке str1. Возвращается указатель на заданную подстроку или NULL в случае ее необнаружения. | |
char *strtok( char *str1; char *str2 ); |
Функция разбивает строку str1 на слова, вставляя после каждого из них символ '\0'. Символы, являющиеся разделителями слов, перечислены в строке str2. При первом вызове функция возвращает указатель на str1. При последующем вызове (с параметром str1 == NULL) она возвращает указатели на другие слова в строке str1. Функция возвращает NULL, если все слова закончились. | |
char *memchr( char *buf, char |
Функция ведет поиск первого вхождения символа |
|
int memcmp( char *buf1, char *buf2, |
Сравниваются не более чем |
|
char *memcpy( char *dst1, char *src2, |
Копирует строку src2 в строку dst1, но не более чем n символов. Возвращается значение строки dst1. Реализация функции гарантирует, что перекрывающие участки будут правильно обработаны. | |
| Функции TURBO C и |
||
#include <string.h> |
Заголовочный файл для этих функций | |
int memicmp(char *buf1, char *buf2, |
Сравниваются не более чем |
|
char *memmove(char *buf1, char *buf2, |
Функция полностью идентична функции memcpy. При копировании перекрывающихся участков гарантируется, что эти участки скопируются правильно. | |
char *memset( char *dest, char |
Функция присваивает буферу dest повторяющиеся |
|
char *strnset( char *str1, char |
Функция присваивает буферу str1 повторяющиеся не более чем n число раз значения символа |
|
int strnicmp(char *str1, char *str2, |
Сравниваются не более чем n символов в строке str1 со строкой str2 в лексикографическом порядке. Возвращает: "0" - если строки совпали, "-1" - если str1 < str2, "1" - если str1 > str2. Регистр символов игнорируется. | |
char *strlwr( char *str ); |
Переводит все символы в строке str в нижний регистр. Возвращает значение указателя на строку str. | |
char *strrev( char *str ); |
Функция меняет порядок следования символов в строке str. Возвращает значение указателя на строку str. | |
char *strupr( char *str ); |
Переводит все символы в строке str в верхний регистр. Возвращает значение указателя на строку str. | |
| Функции TURBO C (дополнительно) | ||
#include <string.h> |
Заголовочный файл для этих функций | |
char *strerror( int number ); |
||
| Язык Си. Функции |
||
#include <stdio.h> |
Заголовочный файл для этих функций | |
int sprintf( char * |
Функция форматирует и записывает в строку |
В таблице 6.3 приведены функции работы со скалярами и массивами скаляров на языке Perl.
| Функция/Метод | Синтаксис | Описание | Пример |
|---|---|---|---|
| Perl Функции для работы со скалярами | |||
chomp |
chomp СПИСОК |
Удаляет из каждого |
|
chop |
chop СПИСОК |
Удаляет из каждого |
|
|
|
Возвращает символ по заданному числовому коду |
|
crypt |
crypt ТЕКСТ, ШИФР |
Шифрует ТЕКСТ с использованием заданного параметра шифра. |
|
|
|
Интерпретирует строковое ВЫРАЖЕНИЕ как шестнадцатеричное число и вычисляет его десятичный эквивалент. При использовании без параметров вызов аналогичен вызову |
|
index |
index СТРОКА, ПОДСТРОКА[, ПОЗИЦИЯ] |
Возвращает позицию первого вхождения указанной подстроки в заданную параметром СТРОКА строку или "-1", если подстрока не найдена. Если задан параметр ПОЗИЦИЯ, то поиск начинается с заданной позиции в строке (нумерация символов в строке начинается с "0"). | |
lc |
lc ВЫРАЖЕНИЕ, |
Функция преобразует все прописные буквы строкового параметра ВЫРАЖЕНИЕ в строчные буквы и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров функция аналогична вызову lc $_ . | |
lcfirst |
lcfirst ВЫРАЖЕНИЕ |
Преобразует первый символ строкового параметра ВЫРАЖЕНИЕ в нижний регистр и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров вызов функции аналогичен вызову lcfirst $_ . | |
length |
length ВЫРАЖЕНИЕ |
Возвращает количество байтов в строке, являющегося значением параметра ВЫРАЖЕНИЕ. При использовании без параметров функция эквивалентна вызову length $_ . | |
oct |
oct ВЫРАЖЕНИЕ |
Интерпретирует строковое ВЫРАЖЕНИЕ как восьмеричное число и вычисляет его десятичный эквивалент. Если строка начинается с символов 0x, то его содержимое интерпретируется как шестнадцатеричное число. При использовании без параметров вызов функции аналогичен вызову oct $_ . | |
ord |
ord ВЫРАЖЕНИЕ |
Возвращает числовой ASCII код первого символа строки, являющегося значением параметра ВЫРАЖЕНИЕ. При использовании без параметров вызов функции аналогичен вызову ord $_ . | |
pack |
pack ШАБЛОН, СПИСОК |
Упаковывает массив или список значений в двоичную структуру в соответствии с заданным шаблоном, представляющим собой последовательность символов, которые задают порядок и тип значений. Возвращает строку, содержащую полученную структуру. | |
|
|
В списковом контексте возвращает список значений, состоящий из элементов, заданным параметром СПИСОК списка, но в обратном порядке, начиная с последнего символа. В скалярном контексте соединяет все элементы списка в одну строку, состоящую из символов полученной строки, но в обратном порядке. | |
rindex |
rindex СТРОКА, ПОДСТРОКА[, ПОЗИЦИЯ] |
Возвращает позицию последнего вхождения указанной подстроки в заданную параметром СТРОКА строку или "-1", если подстрока не найдена. Если задан параметр ПОЗИЦИЯ, то поиск начинается до заданной позиции в строке (включая символ в этой позиции). | |
sprintf |
sprintf ФОРМАТ, СПИСОК |
Возвращает строку, представляющую собой форматный вывод |
|
|
|
Находит и возвращает из параметра СТРОКА, подстроку длиной, равной значению параметра ДЛИНА, начиная с символа, заданного параметром СМЕЩЕНИЕ. Если значение СМЕЩЕНИЕ отрицательно, то извлечение начинается с последнего символа строки. Если значение ДЛИНА отрицательно, то от конца строки отсекаются количество символов, равное абсолютному значению этого параметра. Если задан строковый параметр ЗАМЕЩЕНИЕ, то найденная подстрока замещается ею в параметре СТРОКА, который в этом случае должен быть l-Значением. | |
uc |
uc ВЫРАЖЕНИЕ, |
Функция преобразует все строчные буквы строкового параметра ВЫРАЖЕНИЕ в прописные буквы и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров вызов функции аналогичен вызову uc $_ . | |
ucfirst |
ucfirst ВЫРАЖЕНИЕ |
Преобразует первый символ строкового параметра ВЫРАЖЕНИЕ в верхний регистр и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров вызов функции аналогичен вызову ucfirst $_ . | |
| Лексикографический порядок ( |
|||
| Perl Функции для работы со скалярами (поиск и замена фрагментов) | |||
|
|
Возвращает значение указателя позиции в строке после последней выполненной для нее операции поиска по образцу: m//g. Если используется в левой части операции присвоения, то изменяет значение указателя, влияя на \G в регулярном выражении. При использовании без параметров данный вызов эквивалентен вызову: |
|
quotemeta |
quotemeta ВЫРАЖЕНИЕ quotemeta |
Возвращает строку, в которой перед каждым неалфавитно-цифровым символом поставлена обратная черта. Значение параметра: ВЫРАЖЕНИЕ - интерпретируется как строка. (Внутренняя функция реализации |
|
split |
split /ОБРАЗЕЦ/[.ВЫРАЖЕНИЕ[.ПРЕДЕЛ]] split |
Разбивает строку, являющуюся значением параметра: ВЫРАЖЕНИЕ, на массив строк, с использованием разделителя, определяемым регулярным выражением в параметре: ОБРАЗЕЦ. В списковом контексте возвращает полученный массив, в скалярном контексте - количество найденных строк разбиения. Если задан параметр: ПРЕДЕЛ, разбивает на не более чем заданное этим параметром число строк. Если параметр: ВЫРАЖЕНИЕ - не задан, то используется внутренняя специальная переменная интерпретатора Perl $_, Если не задан образец, то разбивает по |
|
|
|
Оптимизирует строковые данные параметра: ВЫРАЖЕНИЕ - для дальнейшего использования в повторных операциях поиска по образцу. В цикле с несколькими операциями поиска может сэкономить время выполнения. При использовании без параметров функция эквивалентна: |
|
| Perl Функции для работы с массивами скаляров | |||
delete |
delete ВЫРАЖЕНИЕ |
Удаляет из массива скаляров его элемент или фрагмент, заданный параметром: ВЫРАЖЕНИЕ. Если удаляется последний элемент массива, то автоматически изменяется длина массива, если удаляются элементы из его середины, то оставшиеся элементы не сдвигаются (для сдвига используйте функцию |
|
exists |
exists ВЫРАЖЕНИЕ |
Проверяет, был ли когда-либо инициализирован в массиве скаляров элемент, заданный параметром: ВЫРАЖЕНИЕ, например, $array[3], даже если сейчас его значение не определено. Если да, то возвращает значение "истина", иначе - "ложь". Функция exist работает с массивами скаляров только в Perl версий 5.6.0 и выше. | |
|
|
Удаляет из массива скаляров последний элемент и возвращает его значение. Если массив пустой, то возвращает неопределенное значение undef. Если функция вызывается без параметров, то главной программе вызов эквивалентен |
|
push |
push МАССИВ, СПИСОК |
Рассматривает массив скаляров, заданный параметром: МАССИВ, как стек и добавляет после его последнего элемента элементы списка, заданные параметром: СПИСОК. Возвращает количество элементов полученного массива. | |
shift |
shift МАССИВ shift |
Удаляет из массива скаляров первый элемент и возвращает его значение. После удаления элементы оставшиеся элементы сдвигаются влево: второй элемент становится первым, третий - вторым и т.д. Если массив пустой, то возвращает неопределенное значение undef. Если функция вызывается без параметров, то главной программе вызов эквивалентен shift @ARGV, а в подпрограмме shift @_. | |
|
|
Удаляет из массива количество элементов, заданное значением параметра: КОЛИЧЕСТВО, начиная с элемента, заданное значением параметра: НОМЕР. В случае задания параметра СПИСОК заменяет указанные в нем элементы списка. В списковом контексте возвращает удаленные элементы; в скалярном контексте - последний удаленный элемент. Если параметр:КОЛИЧЕСТВО не задан, то удаляются все элементы после элемента с номером, определенным значением параметра: НОМЕР. | |
unshift |
unshift МАССИВ, СПИСОК |
Добавляет элементы списка, определенного параметром: СПИСОК, в начало массива, заданного параметром МАССИВ. Выполняет действия, противоположные действиям функции shift. | |
grep |
grep БЛОК СПИСОК grep ВЫРАЖЕНИЕ, СПИСОК |
||
join |
join ВЫРАЖЕНИЕ, СПИСОК |
Рассматривает все элементы списка, определенного параметром: СПИСОК, как строковые значения, соединяет их в одну строку, вставляя между ними разделитель, равный значению параметра: ВЫРАЖЕНИЕ, и возвращает полученную строку. | |
map |
map БЛОК СПИСОК map ВЫРАЖЕНИЕ, СПИСОК |
||
pack |
pack ВЫРАЖЕНИЕ, СПИСОК |
||
|
|
В списковом контексте возвращает список значений элементов, заданный параметром: СПИСОК, в обратном порядке, начиная с последнего элемента. В скалярном контексте соединяет все элементы в одну строку и возвращает строку, в которой символы расположены в обратном порядке, начиная с последнего символа. | |
sort |
sort [ПОДПРОГРАММА] СПИСОК sort [БЛОК] СПИСОК |
Сортирует список значений, заданный в параметре: СПИСОК. Если параметры БЛОК и ПОДПРОГРАММА не заданы, то используется стандартная процедура сравнения строковых данных. Если они заданы, то операторы блока или подпрограммы используются в качестве процедуры сравнения при сортировке элементов списка. В этом случае в теле блока или подпрограммы в последнем операторе следует использовать операцию <=> или |
|
|
|
||
[Пример 01]
Примеры выражений
Пусть нам надо вставить во фразу: "Привет, <имярек>! С добрым утром." - вместо <имярек> человеческое имя, например, Света. Приводятся примеры фрагментов программ, написанных на языках Си, Perl и Quick Basic:
Си:
/* Определение констант и переменных */ const unsigned short maxstringlength = 255; char strSveta[] = "Света"; char strResult[maxstringlength]; /* Заполнение результирующей переменной нулями*/ memset( strResult, '\0', (size_t) maxstringlength); /* Символьные вычисления */ strncpy( strResult, "Привет ", maxstringlength ); strncat( strResult, (const char *)strSveta, maxstringlength ); strncat( strResult, "! С добрым утром.", maxstringlength );
Perl:
# Определение переменной: <имярек>. $ImyaRek = 'Света'; # Определение результирующей строки. $strResult = "Привет, $ImyaRek! С добрым утром.";
Quick Basic:
REM Определение переменной: <имярек>. ImyaRek$ = "Света" REM Символьные вычисления. strResult$ = "Привет " + ImyaRek$ + "! С добрым утром."
В данной лекции вы познакомились, что такое кодировка, или "кодовая таблица" символов. Вы узнали, какие бывают кодировки, как они разделяются по количеству байтов (один или два), выделяемых под символ, и в каких кодировках "кодируются" литеры русского алфавита.
Также Вы познакомились с "примитивными символьными" данными, выяснили максимальную длину строки, и заключили "джентельменское соглашение" о неизменности значений строковых констант.
В следующей лекции Вы более подробно познакомитесь с другими типами данных. В частности, больше узнаете о массивах данных, частным случаем которых являются "примитивные символьные" типы данных.
| Термин | Английский термин | Разъяснение |
|---|---|---|
| кодовая таблица | code table 1. | См. кодировка. |
| таблица символов | code table 1. | См. кодировка. |
| кодировка | codepage | Порядок соответствия литер символов целым числам. |
| длина кодировки | codepage length | Разрядность целого числа, используемого для представления литер. Используются однобайтные, двухбайтные кодировки и кодировки переменной длины. |
| EBCDIC-код | EBCDIC | Кодировка латинских символов, десятичных цифр, знаков препинания, пробельных и специальных символов на основе 7-ми битного кода. Не имеет сплошной |
| десятичные цифры | decimal digits | Цифры, применяемые в десятичной |
| латинский алфавит | Latin alphabet | Прописные и строчные буквы от A до Z (всего 52 символа). Латинский алфавит используется в латинском, английском, французском и других "западных" языках. |
| знаки препинания | punctuation marks | Знаки, используемые в пунктуации, для разделения предложений и их частей. Кроме "обычных" знаков ",", ".", и других к ним относятся кавычки, |
| пробельные символы | spacing symbols (characters) | Символы, используемые для разделения слов в предложениях. К ним относят, кроме пробела, знаки горизонтальной и вертикальной табуляции, " |
| специальные символы | special characters | Символы, не относящиеся к другим категориям и используемые для управления устройствами. См. |
| сплошная нумерация | continuous numeration | Кодировка имеет сплошную нумерацию литер алфавита, если последовательность литер пронумерована "подряд", соседними числами без разрывов. Сплошную нумерацию символов латиницы имеют все кодировки, кроме |
| алгоритм сравнения строк | compare string algorithm | Алгоритм, в котором строки сравниваются в лексикографическом порядке, и результат сравнения (больше, меньше, совпадают) передается |
| сортировка строк | sorting of the screen | Расположение строк по возрастанию или по убыванию в лексикографическом порядке. В алгоритме сортировке используется алгоритмы сравнения строк. |
| лексикографический порядок | dictionary order | Порядок слов по алфавиту, в том виде, в котором он представлен в ЭВМ. При этом среди слов, имеющих одинаковое начало, большим будет считаться то, которое содержит больше символов. |
| семи битные кодировки | seven bit codepages | Кодировки, для представления символов в которых используется семь младших бит байта (из восьми). При этом старший бит используется для проверки правильности передачи символов. |
| кириллические символы | Cyrillic character | Литеры русского алфавита и алфавитов некоторых других славянских народов, созданные просветителями Кириллом и Мефодием при переводе библии с греческого на славянские языки. Кириллические символы входят в алфавиты всех народов России. В компьютере эти символы кодируются восьми битными кодировками и разновидностями Unicode. |
| ASCII ("аски") код | ASCII | 7-ми битный код для представления основных знаков препинания, цифр и букв латинского алфавита. Имеет "сплошную" нумерацию букв латинского алфавита. В настоящее время является основой для других кодировок. |
| UNIX ("ЮНИКС") | UNIX | Операционная система персональных компьютеров и мощных ЭВМ, разработанная в корпорации ATT в 1972 г. Первоначально весь Интернет был доступен только для машин, работающих под операционной системой UNIX. В СССР эта операционная систем была известна под именем: "Демос". |
| VAX ("вакс") | VAX | Знаменитый компьютер корпорации Digital |
| MS-DOS (ДОС) | MS-DOS | Операционная система персональных компьютеров 80-х - 90-х годов XX века, основанных на процессорах Intel. |
| Linux ("Линукс") | Linux | Одна из реализаций операционной системы UNIX, использующей открытый код и открытое программное обеспечение. Ее "ядро" разработано в начале 90-х годов XX века Линусом Торвальдсом (Финляндия). |
| кириллическая кодировка | Cyrillic codepage | Кодировка, содержащая кириллические символы. К кириллическим кодировкам относят: |
| OEM 866 | OEM 866 | Кириллическая кодировка MS-DOS. По-другому называется: "альтернативная русская кодировка". |
| ANSI cp 1251 | ANSI cp 1251 | Кириллическая кодировка MS Windows, основанная на кодировке ASCII и имеющая длину 8 бит. Имеют сплошную нумерацию для латинских литер и частично сплошную - для литер русского алфавита. |
| кодировка ГОСТ СССР | USSR GOST | 8-ми битная кодировка со сплошной нумерацией кириллических символов. Большого распространения не получила. |
| транскрипция 1. | transcription 1. | Запись кириллических символов вместо латинских букв или наоборот, учитывая их произношение. Например, латинской "P" соответствует буква "П", "C" - "Ц", "S" - "С", "V" - "В" и т.д. Транскрипция использовалась при создании кодировок |
| КОИ-8 | KOI8-R | 8-ми битная кириллическая кодировка, используемая в UNIX и ее клонах. В настоящее время является устаревшей. В этой кодировке латинские символы с номерами 128 - 255 были заменены на кириллические символы в той же транскрипции. При этом кириллические символы упорядочены не по алфавиту: вот первые из семи последовательных кириллических символов в этой кодировке: "Ю, А, Б, Ц, Д, Е, Ф, …". |
| юникод | Unicode | Кодировка длиной 2 байта для представления всех символов всех национальных алфавитов. Имеет в два раза больший объем, чем основанные на ASCII кодировках. В настоящее время является стандартом для |
| UTF-8 | UTF-8 | Кодировка переменной длины, хранящая символы латиницы в кодировке ASCII, а все символы национальных алфавитов - в юникоде. Часто позволяет более "компактно" представлять текст. В настоящее время является стандартом для |
| символы псевдографики | pseudo graphics character | Символы в восьми битных кодировках |
| знакогенератор | characters' decoder | |
| многоразрядные кодировки | multidigit codepages | К многоразрядным кодировкам относят кодировки UTF-8, Unicode и другие, имеющие переменное число разрядов или число разрядов, большее восьми. Многоразрядные кодировки помогают кодировать символы всех существующих национальных алфавитов. |
| символьный тип данных | symbol (character) data type | Целый тип данных, используемый для хранения в нем символов в одной из кодировок. Различают примитивные символьные данные и специальные |
| примитивный символьный тип данных | primitive character data type | |
| строка | string | Последовательность символов в одной из кодировок, оканчивающаяся терминальным символом. Обычно строка представляется в виде массива |
| терминальный символ строки | terminal character of a string | Символ, указывающий на окончание строки символов. Все символы, расположенные после |
| максимальный индекс строки | maximal string index | Заданные программистом или компьютерными системами ограничения на количество символов в строке для примитивных символьных данных. Изменяется от 255 (Бейсик) до 64K (Си), но на практике не советуется устанавливать его большим 2000 символов. |
| максимальная длина массива | ultimate array length | Общее количество элементов в массиве. Это значение является максимально возможным значением |
| фиксирование 1. | fixation | Явное указание числа элементов у статичного массива при его объявлении, которое также задает максимальное значение его индекса. Это число указывается либо целой константой, либо именованной макроподстановкой (на языке Си). |
| статичный массив | static array | Массив с постоянным числом его элементов, который объявляется вначале |
| нулевая константа | zero constant | Символ с кодом ASCII 0 (0x00), имеющий в Си-подобных языках обозначение '\0'. Именно этим символом заканчивается любая строка примитивных символьных данных. |
| создание (массива) | allocating (of an array) | Выделение места в оперативной памяти для размещения элементов массива, и присвоение указателю на этот массив адреса этой ячейки памяти на время выполнения программы (run-time). После завершения работы с массивом выделенную под него область памяти необходимо освободить перед завершением работы программы. |
| объявление (массива) | declaration (of an array) | Выделение места в оперативной памяти для размещения элементов массива и, возможно, его инициализации в процессе компиляции программы. "Объявленную" память освобождать не нужно. |
| инициализация (массива) | initialization (of an array) | Присвоение конкретных значений элементам массива при его объявлении или сразу после его создания. Обычно |
| нулевой символ | zero character | См. нулевая константа. |
| освобождение памяти | release of a memory | Отмена выделения места в оперативной памяти места для элементов массива и присвоение связанному с ним указателю значения "NULL". После освобождения памяти при попытке обратиться к элементу массива возникает ошибка "отказ в доступе" ( |
| копия изменяемой строки | copy of changed string | Точная копия элементов изменяемого массива, сделанная с него для манипуляции данными. Ее делают для реализации "джентльменского соглашения", согласно которому исходные символьные данные не меняются при манипуляциях со строками. |
Как уже указывалось в лекции 5, все символы в ЭВМ представлены в виде целых чисел. Порядок соответствия литер символов целым числам называется кодировкой (или кодовой таблицей,
Вначале возникли кодировки, включающие в себя десятичные цифры, буквы (прописные и строчные) латинского алфавита, сокращения английского языка (такие как "" и "@"), знаки препинания и специальные символы. На основе этих символов возникли кодировки
Кодировки
Однако в кодировке ASCII отсутствуют даже некоторые символы (умляуты) западноевропейских алфавитов. Что же говорить о кириллических символах... Для решения этой проблемы были созданы расширенные кодировки ASCII, в которых для представления символов используются все восемь бит. Это доводит количество закодированных символов до 256. Среди реализаций кириллических символов в расширенных ASCII кодировках можно отметить кодировки
Относительно полно концепция "сплошной нумерации" применяется в кодировке USSR GOST и
Исторически первой кодировкой с кириллическими символами была кодировка
Следом за этой кодировкой на российские компьютеры вначале пришла болгарская, а затем - и альтернативная русская кодировка ДОС, впоследствии переименованная в
Недостатками этой кодировки являются:
Кодировка
Однако у этой кодировки есть недостатки:
К "многоразрядным" кодировкам относятся кодировки Unicode и UTF. Рассмотрим историю их возникновения.
Уже в начале 90-х годов XX века стало ясно, что 256 чисел для
При всей полезности
Примечание. Кодировка UTF-8 стала стандартом в операционной системе Linux и в Интернете. При разработке приложений в Microsoft Window, начиная с версии 98, также широко используются кодировки UTF-8 и UTF-7.
В качестве "примитивных" символьных данных чаще всего используются массивы "символьных" типов данных. При этом максимальная длина этого массива (то есть максимальный индекс, который может принимать этот массив) фиксируется либо программистом, либо
В таблице 6.1 даются описания символьных данных, их размерности и обозначение.
| Тип данных | Префикс/Окончание | Разрядность регистров/длина | Примечание |
|---|---|---|---|
| Quick Basic | |||
| STR <идентификатор>$ | Переменная длина (до 255 символов) | Для хранения 1 символа в кодировке ASCII. | Не защищен от изменений. |
| VB Script | |||
| в зависимости от конкретного значения | Переменная длина | Используется для хранения всех видов данных. | |
| Java | |||
| char | с | 2 байта | Для хранения одного символа в кодировке Unicode |
| String | str | Переменная длина | Класс для хранения символов в кодировке Unicode. Защищено от изменений! |
| javascript | |||
| в зависимости от конкретного значения | Переменная длина | Используется для хранения всех видов данных. | |
| C/C++ | |||
| char | с | 1 байт | Для хранения одного символа в кодировке ASCII (со знаком) |
| uc | 1 байт | Для хранения одного символа в кодировке ASCII (без знака) | |
| char * | pc | от 2 до 4 байт | Указатель на массив (переменной длины) |
| от 2 до 4 байт | Указатель на массив (переменной длины) | ||
| C/C++ Windows API | |||
| BYTE | b | 1 байт | Эквивалентен |
| NPSTR | npsz | 2 байта | Эквивалентен char near * |
| LPSTR | lpch | 4 байта | Эквивалентен char far * |
| LPCSTR | lpsz | 4 байта | Эквивалентен const char far * |
| C++ MFC | |||
| cstr, str | Переменная длина | Класс для хранения символов в кодировке Unicode. Защищено от изменений! | |
| C++ Classlib | |||
| string | str | Переменная длина | Класс для хранения символов в кодировке ASCII (и Unicode?). Защищено от изменений! |
Обычно, в начале работы программы, весь массив символьных данных заполняют нулевой константой (она обозначается на языке Си как " \0 "). Это делается в расчете на то, что признаком конца символьных данных является не признак конца строки, не
Что касается максимальной длины символьной строки, то она может принимать значения от 255 (языки "Паскаль", "Quick Basic", СУБД dBase III+), 2047 (Multi Edit и часть редакторов) и даже ~ 64 Кбайт (величина сегмента памяти процессора x86). Но, следующий нехитрый расчет показывает, что использовать длину строки более 2000 (80*25) символов нерационально (она все равно не уместится на экране).
Также автор советует не доверять своей памяти в использовании максимальной длины строки, а определить ее в виде константы целого значения (например, константного типа const на языке Си).
Следующим "джентльменским соглашением" при работе с символьными данными является неизменность значений массивов символьных данных (кроме, возможно, первого массива в выражении) при символьных вычислениях. Вот почему большинство символьных функций принимает тип аргументов как const char * (указатель на начало массива
Итак, организация работы с "примитивными" символьными массивами данных следующая:
malloc ) или объявляется (в начале блока программ) необходимое количество символьных массивов-переменных;memset );free ).mem *** и полностью исключить использование функций str*** (за исключением функции strlen ), заменив их функциями: strn*** (на языке Си). Звездочками обозначено окончание функций.Собственно стандартные функции для работы с
| Функция/Метод | Описание | Пример |
|---|---|---|
| Язык Си. Функции |
||
#include <string.h> |
Заголовочный файл для этих функций | |
int |
Возвращает длину строки str1 (позицию его символа \0). | |
char* strerror( char *str ); |
||
char * |
Конкатенация строки str1 и str2, но в строку n записывается не более n символов. Возвращается значение строки str1 или NULL при неудаче конкатенации. | |
int |
Сравниваются не более чем n символов в строке str1 со строкой str2 в лексикографическом порядке. Возвращает: "0" - если строки совпали, "-1" - если str1 < str2, "1" - если str1 > str2. | |
char * |
Копирует строку str2 в строку str1, но не более чем n символов. Возвращается значение строки str1 или NULL при неудаче копирования. | |
char * |
Ищется первое вхождение символа из строки str2 в строке str1. Возвращает указатель на этот символ или NULL, если символы не обнаружены. | |
char * |
Ищется последнее вхождение символа из строки str2 в строке str1. Возвращает указатель на этот символ или NULL, если символы не обнаружены. | |
char * |
Ищется первое вхождение символа, которого нет в строке str2, в строке str1. Возвращает указатель на этот символ или NULL, если символы не обнаружены. | |
char * |
Ищется первое вхождение подстроки str2 в строке str1. Возвращается указатель на заданную подстроку или NULL в случае ее необнаружения. | |
char *strtok( char *str1; char *str2 ); |
Функция разбивает строку str1 на слова, вставляя после каждого из них символ '\0'. Символы, являющиеся разделителями слов, перечислены в строке str2. При первом вызове функция возвращает указатель на str1. При последующем вызове (с параметром str1 == NULL) она возвращает указатели на другие слова в строке str1. Функция возвращает NULL, если все слова закончились. | |
char *memchr( char *buf, char |
Функция ведет поиск первого вхождения символа |
|
int memcmp( char *buf1, char *buf2, |
Сравниваются не более чем |
|
char *memcpy( char *dst1, char *src2, |
Копирует строку src2 в строку dst1, но не более чем n символов. Возвращается значение строки dst1. Реализация функции гарантирует, что перекрывающие участки будут правильно обработаны. | |
| Функции TURBO C и |
||
#include <string.h> |
Заголовочный файл для этих функций | |
int memicmp(char *buf1, char *buf2, |
Сравниваются не более чем |
|
char *memmove(char *buf1, char *buf2, |
Функция полностью идентична функции memcpy. При копировании перекрывающихся участков гарантируется, что эти участки скопируются правильно. | |
char *memset( char *dest, char |
Функция присваивает буферу dest повторяющиеся |
|
char *strnset( char *str1, char |
Функция присваивает буферу str1 повторяющиеся не более чем n число раз значения символа |
|
int strnicmp(char *str1, char *str2, |
Сравниваются не более чем n символов в строке str1 со строкой str2 в лексикографическом порядке. Возвращает: "0" - если строки совпали, "-1" - если str1 < str2, "1" - если str1 > str2. Регистр символов игнорируется. | |
char *strlwr( char *str ); |
Переводит все символы в строке str в нижний регистр. Возвращает значение указателя на строку str. | |
char *strrev( char *str ); |
Функция меняет порядок следования символов в строке str. Возвращает значение указателя на строку str. | |
char *strupr( char *str ); |
Переводит все символы в строке str в верхний регистр. Возвращает значение указателя на строку str. | |
| Функции TURBO C (дополнительно) | ||
#include <string.h> |
Заголовочный файл для этих функций | |
char *strerror( int number ); |
||
| Язык Си. Функции |
||
#include <stdio.h> |
Заголовочный файл для этих функций | |
int sprintf( char * |
Функция форматирует и записывает в строку |
В таблице 6.3 приведены функции работы со скалярами и массивами скаляров на языке Perl.
| Функция/Метод | Синтаксис | Описание | Пример |
|---|---|---|---|
| Perl Функции для работы со скалярами | |||
chomp |
chomp СПИСОК |
Удаляет из каждого |
|
chop |
chop СПИСОК |
Удаляет из каждого |
|
|
|
Возвращает символ по заданному числовому коду |
|
crypt |
crypt ТЕКСТ, ШИФР |
Шифрует ТЕКСТ с использованием заданного параметра шифра. |
|
|
|
Интерпретирует строковое ВЫРАЖЕНИЕ как шестнадцатеричное число и вычисляет его десятичный эквивалент. При использовании без параметров вызов аналогичен вызову |
|
index |
index СТРОКА, ПОДСТРОКА[, ПОЗИЦИЯ] |
Возвращает позицию первого вхождения указанной подстроки в заданную параметром СТРОКА строку или "-1", если подстрока не найдена. Если задан параметр ПОЗИЦИЯ, то поиск начинается с заданной позиции в строке (нумерация символов в строке начинается с "0"). | |
lc |
lc ВЫРАЖЕНИЕ, |
Функция преобразует все прописные буквы строкового параметра ВЫРАЖЕНИЕ в строчные буквы и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров функция аналогична вызову lc $_ . | |
lcfirst |
lcfirst ВЫРАЖЕНИЕ |
Преобразует первый символ строкового параметра ВЫРАЖЕНИЕ в нижний регистр и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров вызов функции аналогичен вызову lcfirst $_ . | |
length |
length ВЫРАЖЕНИЕ |
Возвращает количество байтов в строке, являющегося значением параметра ВЫРАЖЕНИЕ. При использовании без параметров функция эквивалентна вызову length $_ . | |
oct |
oct ВЫРАЖЕНИЕ |
Интерпретирует строковое ВЫРАЖЕНИЕ как восьмеричное число и вычисляет его десятичный эквивалент. Если строка начинается с символов 0x, то его содержимое интерпретируется как шестнадцатеричное число. При использовании без параметров вызов функции аналогичен вызову oct $_ . | |
ord |
ord ВЫРАЖЕНИЕ |
Возвращает числовой ASCII код первого символа строки, являющегося значением параметра ВЫРАЖЕНИЕ. При использовании без параметров вызов функции аналогичен вызову ord $_ . | |
pack |
pack ШАБЛОН, СПИСОК |
Упаковывает массив или список значений в двоичную структуру в соответствии с заданным шаблоном, представляющим собой последовательность символов, которые задают порядок и тип значений. Возвращает строку, содержащую полученную структуру. | |
|
|
В списковом контексте возвращает список значений, состоящий из элементов, заданным параметром СПИСОК списка, но в обратном порядке, начиная с последнего символа. В скалярном контексте соединяет все элементы списка в одну строку, состоящую из символов полученной строки, но в обратном порядке. | |
rindex |
rindex СТРОКА, ПОДСТРОКА[, ПОЗИЦИЯ] |
Возвращает позицию последнего вхождения указанной подстроки в заданную параметром СТРОКА строку или "-1", если подстрока не найдена. Если задан параметр ПОЗИЦИЯ, то поиск начинается до заданной позиции в строке (включая символ в этой позиции). | |
sprintf |
sprintf ФОРМАТ, СПИСОК |
Возвращает строку, представляющую собой форматный вывод |
|
|
|
Находит и возвращает из параметра СТРОКА, подстроку длиной, равной значению параметра ДЛИНА, начиная с символа, заданного параметром СМЕЩЕНИЕ. Если значение СМЕЩЕНИЕ отрицательно, то извлечение начинается с последнего символа строки. Если значение ДЛИНА отрицательно, то от конца строки отсекаются количество символов, равное абсолютному значению этого параметра. Если задан строковый параметр ЗАМЕЩЕНИЕ, то найденная подстрока замещается ею в параметре СТРОКА, который в этом случае должен быть l-Значением. | |
uc |
uc ВЫРАЖЕНИЕ, |
Функция преобразует все строчные буквы строкового параметра ВЫРАЖЕНИЕ в прописные буквы и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров вызов функции аналогичен вызову uc $_ . | |
ucfirst |
ucfirst ВЫРАЖЕНИЕ |
Преобразует первый символ строкового параметра ВЫРАЖЕНИЕ в верхний регистр и возвращает полученную строку. В случае применения use local при преобразовании используются текущие локальные установки. При использовании без параметров вызов функции аналогичен вызову ucfirst $_ . | |
| Лексикографический порядок ( |
|||
| Perl Функции для работы со скалярами (поиск и замена фрагментов) | |||
|
|
Возвращает значение указателя позиции в строке после последней выполненной для нее операции поиска по образцу: m//g. Если используется в левой части операции присвоения, то изменяет значение указателя, влияя на \G в регулярном выражении. При использовании без параметров данный вызов эквивалентен вызову: |
|
quotemeta |
quotemeta ВЫРАЖЕНИЕ quotemeta |
Возвращает строку, в которой перед каждым неалфавитно-цифровым символом поставлена обратная черта. Значение параметра: ВЫРАЖЕНИЕ - интерпретируется как строка. (Внутренняя функция реализации |
|
split |
split /ОБРАЗЕЦ/[.ВЫРАЖЕНИЕ[.ПРЕДЕЛ]] split |
Разбивает строку, являющуюся значением параметра: ВЫРАЖЕНИЕ, на массив строк, с использованием разделителя, определяемым регулярным выражением в параметре: ОБРАЗЕЦ. В списковом контексте возвращает полученный массив, в скалярном контексте - количество найденных строк разбиения. Если задан параметр: ПРЕДЕЛ, разбивает на не более чем заданное этим параметром число строк. Если параметр: ВЫРАЖЕНИЕ - не задан, то используется внутренняя специальная переменная интерпретатора Perl $_, Если не задан образец, то разбивает по |
|
|
|
Оптимизирует строковые данные параметра: ВЫРАЖЕНИЕ - для дальнейшего использования в повторных операциях поиска по образцу. В цикле с несколькими операциями поиска может сэкономить время выполнения. При использовании без параметров функция эквивалентна: |
|
| Perl Функции для работы с массивами скаляров | |||
delete |
delete ВЫРАЖЕНИЕ |
Удаляет из массива скаляров его элемент или фрагмент, заданный параметром: ВЫРАЖЕНИЕ. Если удаляется последний элемент массива, то автоматически изменяется длина массива, если удаляются элементы из его середины, то оставшиеся элементы не сдвигаются (для сдвига используйте функцию |
|
exists |
exists ВЫРАЖЕНИЕ |
Проверяет, был ли когда-либо инициализирован в массиве скаляров элемент, заданный параметром: ВЫРАЖЕНИЕ, например, $array[3], даже если сейчас его значение не определено. Если да, то возвращает значение "истина", иначе - "ложь". Функция exist работает с массивами скаляров только в Perl версий 5.6.0 и выше. | |
|
|
Удаляет из массива скаляров последний элемент и возвращает его значение. Если массив пустой, то возвращает неопределенное значение undef. Если функция вызывается без параметров, то главной программе вызов эквивалентен |
|
push |
push МАССИВ, СПИСОК |
Рассматривает массив скаляров, заданный параметром: МАССИВ, как стек и добавляет после его последнего элемента элементы списка, заданные параметром: СПИСОК. Возвращает количество элементов полученного массива. | |
shift |
shift МАССИВ shift |
Удаляет из массива скаляров первый элемент и возвращает его значение. После удаления элементы оставшиеся элементы сдвигаются влево: второй элемент становится первым, третий - вторым и т.д. Если массив пустой, то возвращает неопределенное значение undef. Если функция вызывается без параметров, то главной программе вызов эквивалентен shift @ARGV, а в подпрограмме shift @_. | |
|
|
Удаляет из массива количество элементов, заданное значением параметра: КОЛИЧЕСТВО, начиная с элемента, заданное значением параметра: НОМЕР. В случае задания параметра СПИСОК заменяет указанные в нем элементы списка. В списковом контексте возвращает удаленные элементы; в скалярном контексте - последний удаленный элемент. Если параметр:КОЛИЧЕСТВО не задан, то удаляются все элементы после элемента с номером, определенным значением параметра: НОМЕР. | |
unshift |
unshift МАССИВ, СПИСОК |
Добавляет элементы списка, определенного параметром: СПИСОК, в начало массива, заданного параметром МАССИВ. Выполняет действия, противоположные действиям функции shift. | |
grep |
grep БЛОК СПИСОК grep ВЫРАЖЕНИЕ, СПИСОК |
||
join |
join ВЫРАЖЕНИЕ, СПИСОК |
Рассматривает все элементы списка, определенного параметром: СПИСОК, как строковые значения, соединяет их в одну строку, вставляя между ними разделитель, равный значению параметра: ВЫРАЖЕНИЕ, и возвращает полученную строку. | |
map |
map БЛОК СПИСОК map ВЫРАЖЕНИЕ, СПИСОК |
||
pack |
pack ВЫРАЖЕНИЕ, СПИСОК |
||
|
|
В списковом контексте возвращает список значений элементов, заданный параметром: СПИСОК, в обратном порядке, начиная с последнего элемента. В скалярном контексте соединяет все элементы в одну строку и возвращает строку, в которой символы расположены в обратном порядке, начиная с последнего символа. | |
sort |
sort [ПОДПРОГРАММА] СПИСОК sort [БЛОК] СПИСОК |
Сортирует список значений, заданный в параметре: СПИСОК. Если параметры БЛОК и ПОДПРОГРАММА не заданы, то используется стандартная процедура сравнения строковых данных. Если они заданы, то операторы блока или подпрограммы используются в качестве процедуры сравнения при сортировке элементов списка. В этом случае в теле блока или подпрограммы в последнем операторе следует использовать операцию <=> или |
|
|
|
||
[Пример 01]
Примеры выражений
Пусть нам надо вставить во фразу: "Привет, <имярек>! С добрым утром." - вместо <имярек> человеческое имя, например, Света. Приводятся примеры фрагментов программ, написанных на языках Си, Perl и Quick Basic:
Си:
/* Определение констант и переменных */ const unsigned short maxstringlength = 255; char strSveta[] = "Света"; char strResult[maxstringlength]; /* Заполнение результирующей переменной нулями*/ memset( strResult, '\0', (size_t) maxstringlength); /* Символьные вычисления */ strncpy( strResult, "Привет ", maxstringlength ); strncat( strResult, (const char *)strSveta, maxstringlength ); strncat( strResult, "! С добрым утром.", maxstringlength );
Perl:
# Определение переменной: <имярек>. $ImyaRek = 'Света'; # Определение результирующей строки. $strResult = "Привет, $ImyaRek! С добрым утром.";
Quick Basic:
REM Определение переменной: <имярек>. ImyaRek$ = "Света" REM Символьные вычисления. strResult$ = "Привет " + ImyaRek$ + "! С добрым утром."
В данной лекции вы познакомились, что такое кодировка, или "кодовая таблица" символов. Вы узнали, какие бывают кодировки, как они разделяются по количеству байтов (один или два), выделяемых под символ, и в каких кодировках "кодируются" литеры русского алфавита.
Также Вы познакомились с "примитивными символьными" данными, выяснили максимальную длину строки, и заключили "джентельменское соглашение" о неизменности значений строковых констант.
В следующей лекции Вы более подробно познакомитесь с другими типами данных. В частности, больше узнаете о массивах данных, частным случаем которых являются "примитивные символьные" типы данных.
| Термин | Английский термин | Разъяснение |
|---|---|---|
| кодовая таблица | code table 1. | См. кодировка. |
| таблица символов | code table 1. | См. кодировка. |
| кодировка | codepage | Порядок соответствия литер символов целым числам. |
| длина кодировки | codepage length | Разрядность целого числа, используемого для представления литер. Используются однобайтные, двухбайтные кодировки и кодировки переменной длины. |
| EBCDIC-код | EBCDIC | Кодировка латинских символов, десятичных цифр, знаков препинания, пробельных и специальных символов на основе 7-ми битного кода. Не имеет сплошной |
| десятичные цифры | decimal digits | Цифры, применяемые в десятичной |
| латинский алфавит | Latin alphabet | Прописные и строчные буквы от A до Z (всего 52 символа). Латинский алфавит используется в латинском, английском, французском и других "западных" языках. |
| знаки препинания | punctuation marks | Знаки, используемые в пунктуации, для разделения предложений и их частей. Кроме "обычных" знаков ",", ".", и других к ним относятся кавычки, |
| пробельные символы | spacing symbols (characters) | Символы, используемые для разделения слов в предложениях. К ним относят, кроме пробела, знаки горизонтальной и вертикальной табуляции, " |
| специальные символы | special characters | Символы, не относящиеся к другим категориям и используемые для управления устройствами. См. |
| сплошная нумерация | continuous numeration | Кодировка имеет сплошную нумерацию литер алфавита, если последовательность литер пронумерована "подряд", соседними числами без разрывов. Сплошную нумерацию символов латиницы имеют все кодировки, кроме |
| алгоритм сравнения строк | compare string algorithm | Алгоритм, в котором строки сравниваются в лексикографическом порядке, и результат сравнения (больше, меньше, совпадают) передается |
| сортировка строк | sorting of the screen | Расположение строк по возрастанию или по убыванию в лексикографическом порядке. В алгоритме сортировке используется алгоритмы сравнения строк. |
| лексикографический порядок | dictionary order | Порядок слов по алфавиту, в том виде, в котором он представлен в ЭВМ. При этом среди слов, имеющих одинаковое начало, большим будет считаться то, которое содержит больше символов. |
| семи битные кодировки | seven bit codepages | Кодировки, для представления символов в которых используется семь младших бит байта (из восьми). При этом старший бит используется для проверки правильности передачи символов. |
| кириллические символы | Cyrillic character | Литеры русского алфавита и алфавитов некоторых других славянских народов, созданные просветителями Кириллом и Мефодием при переводе библии с греческого на славянские языки. Кириллические символы входят в алфавиты всех народов России. В компьютере эти символы кодируются восьми битными кодировками и разновидностями Unicode. |
| ASCII ("аски") код | ASCII | 7-ми битный код для представления основных знаков препинания, цифр и букв латинского алфавита. Имеет "сплошную" нумерацию букв латинского алфавита. В настоящее время является основой для других кодировок. |
| UNIX ("ЮНИКС") | UNIX | Операционная система персональных компьютеров и мощных ЭВМ, разработанная в корпорации ATT в 1972 г. Первоначально весь Интернет был доступен только для машин, работающих под операционной системой UNIX. В СССР эта операционная систем была известна под именем: "Демос". |
| VAX ("вакс") | VAX | Знаменитый компьютер корпорации Digital |
| MS-DOS (ДОС) | MS-DOS | Операционная система персональных компьютеров 80-х - 90-х годов XX века, основанных на процессорах Intel. |
| Linux ("Линукс") | Linux | Одна из реализаций операционной системы UNIX, использующей открытый код и открытое программное обеспечение. Ее "ядро" разработано в начале 90-х годов XX века Линусом Торвальдсом (Финляндия). |
| кириллическая кодировка | Cyrillic codepage | Кодировка, содержащая кириллические символы. К кириллическим кодировкам относят: |
| OEM 866 | OEM 866 | Кириллическая кодировка MS-DOS. По-другому называется: "альтернативная русская кодировка". |
| ANSI cp 1251 | ANSI cp 1251 | Кириллическая кодировка MS Windows, основанная на кодировке ASCII и имеющая длину 8 бит. Имеют сплошную нумерацию для латинских литер и частично сплошную - для литер русского алфавита. |
| кодировка ГОСТ СССР | USSR GOST | 8-ми битная кодировка со сплошной нумерацией кириллических символов. Большого распространения не получила. |
| транскрипция 1. | transcription 1. | Запись кириллических символов вместо латинских букв или наоборот, учитывая их произношение. Например, латинской "P" соответствует буква "П", "C" - "Ц", "S" - "С", "V" - "В" и т.д. Транскрипция использовалась при создании кодировок |
| КОИ-8 | KOI8-R | 8-ми битная кириллическая кодировка, используемая в UNIX и ее клонах. В настоящее время является устаревшей. В этой кодировке латинские символы с номерами 128 - 255 были заменены на кириллические символы в той же транскрипции. При этом кириллические символы упорядочены не по алфавиту: вот первые из семи последовательных кириллических символов в этой кодировке: "Ю, А, Б, Ц, Д, Е, Ф, …". |
| юникод | Unicode | Кодировка длиной 2 байта для представления всех символов всех национальных алфавитов. Имеет в два раза больший объем, чем основанные на ASCII кодировках. В настоящее время является стандартом для |
| UTF-8 | UTF-8 | Кодировка переменной длины, хранящая символы латиницы в кодировке ASCII, а все символы национальных алфавитов - в юникоде. Часто позволяет более "компактно" представлять текст. В настоящее время является стандартом для |
| символы псевдографики | pseudo graphics character | Символы в восьми битных кодировках |
| знакогенератор | characters' decoder | |
| многоразрядные кодировки | multidigit codepages | К многоразрядным кодировкам относят кодировки UTF-8, Unicode и другие, имеющие переменное число разрядов или число разрядов, большее восьми. Многоразрядные кодировки помогают кодировать символы всех существующих национальных алфавитов. |
| символьный тип данных | symbol (character) data type | Целый тип данных, используемый для хранения в нем символов в одной из кодировок. Различают примитивные символьные данные и специальные |
| примитивный символьный тип данных | primitive character data type | |
| строка | string | Последовательность символов в одной из кодировок, оканчивающаяся терминальным символом. Обычно строка представляется в виде массива |
| терминальный символ строки | terminal character of a string | Символ, указывающий на окончание строки символов. Все символы, расположенные после |
| максимальный индекс строки | maximal string index | Заданные программистом или компьютерными системами ограничения на количество символов в строке для примитивных символьных данных. Изменяется от 255 (Бейсик) до 64K (Си), но на практике не советуется устанавливать его большим 2000 символов. |
| максимальная длина массива | ultimate array length | Общее количество элементов в массиве. Это значение является максимально возможным значением |
| фиксирование 1. | fixation | Явное указание числа элементов у статичного массива при его объявлении, которое также задает максимальное значение его индекса. Это число указывается либо целой константой, либо именованной макроподстановкой (на языке Си). |
| статичный массив | static array | Массив с постоянным числом его элементов, который объявляется вначале |
| нулевая константа | zero constant | Символ с кодом ASCII 0 (0x00), имеющий в Си-подобных языках обозначение '\0'. Именно этим символом заканчивается любая строка примитивных символьных данных. |
| создание (массива) | allocating (of an array) | Выделение места в оперативной памяти для размещения элементов массива, и присвоение указателю на этот массив адреса этой ячейки памяти на время выполнения программы (run-time). После завершения работы с массивом выделенную под него область памяти необходимо освободить перед завершением работы программы. |
| объявление (массива) | declaration (of an array) | Выделение места в оперативной памяти для размещения элементов массива и, возможно, его инициализации в процессе компиляции программы. "Объявленную" память освобождать не нужно. |
| инициализация (массива) | initialization (of an array) | Присвоение конкретных значений элементам массива при его объявлении или сразу после его создания. Обычно |
| нулевой символ | zero character | См. нулевая константа. |
| освобождение памяти | release of a memory | Отмена выделения места в оперативной памяти места для элементов массива и присвоение связанному с ним указателю значения "NULL". После освобождения памяти при попытке обратиться к элементу массива возникает ошибка "отказ в доступе" ( |
| копия изменяемой строки | copy of changed string | Точная копия элементов изменяемого массива, сделанная с него для манипуляции данными. Ее делают для реализации "джентльменского соглашения", согласно которому исходные символьные данные не меняются при манипуляциях со строками. |
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.