Функции типов символов


Содержание

Функции обработки строк в Cи

В программе строки могут определяться следующим образом:

  • как строковые константы;
  • как массивы символов;
  • через указатель на символьный тип;
  • как массивы строк.

Кроме того, должно быть предусмотрено выделение памяти для хранения строки.

Любая последовательность символов, заключенная в двойные кавычки «» , рассматривается как строковая константа .

Для корректного вывода любая строка должна заканчиваться нуль-символом ‘\0’ , целочисленное значение которого равно 0. При объявлении строковой константы нуль-символ добавляется к ней автоматически. Так, последовательность символов, представляющая собой строковую константу, будет размещена в оперативной памяти компьютера, включая нулевой байт.

Под хранение строки выделяются последовательно идущие ячейки оперативной памяти. Таким образом, строка представляет собой массив символов. Для хранения кода каждого символа строки отводится 1 байт.

Для помещения в строковую константу некоторых служебных символов используются символьные комбинации. Так, если необходимо включить в строку символ двойной кавычки, ему должен предшествовать символ «обратный слеш»: ‘\»‘ .

Строковые константы размещаются в статической памяти. Начальный адрес последовательности символов в двойных кавычках трактуется как адрес строки. Строковые константы часто используются для осуществления диалога с пользователем в таких функциях, как printf() .

При определении массива символов необходимо сообщить компилятору требуемый размер памяти.

Компилятор также может самостоятельно определить размер массива символов, если инициализация массива задана при объявлении строковой константой:

В этом случае имена m2 и m3 являются указателями на первые элементы массивов:

  • m2 эквивалентно &m2[0]
  • m2[0] эквивалентно ‘Г’
  • m2[1] эквивалентно ‘o’
  • m3 эквивалентно &m3[0]
  • m3[2] эквивалентно ‘x’

При объявлении массива символов и инициализации его строковой константой можно явно указать размер массива, но указанный размер массива должен быть больше, чем размер инициализирующей строковой константы:

Для задания строки можно использовать указатель на символьный тип .

В этом случае объявление массива переменной m4 может быть присвоен адрес массива:

Здесь m3 является константой-указателем. Нельзя изменить m3 , так как это означало бы изменение положения (адреса) массива в памяти, в отличие от m4 .

Для указателя можно использовать операцию увеличения (перемещения на следующий символ):

Массивы символьных строк

Иногда в программах возникает необходимость описание массива символьных строк . В этом случае можно использовать индекс строки для доступа к нескольким разным строкам.

В этом случае poet является массивом, состоящим из четырех указателей на символьные строки. Каждая строка символов представляет собой символьный массив, поэтому имеется четыре указателя на массивы. Указатель poet[0] ссылается на первую строку:
*poet[0] эквивалентно ‘П’,
*poet[l] эквивалентно ‘-‘.

Инициализация выполняется по правилам, определенным для массивов.
Тексты в кавычках эквивалентны инициализации каждой строки в массиве. Запятая разделяет соседние
последовательности.
Кроме того, можно явно задавать размер строк символов, используя описание, подобное такому:

Разница заключается в том, что такая форма задает «прямоугольный» массив, в котором все строки имеют одинаковую длину.

Функции типов символов

Функции типов символов

Введение
Функции, предоставляемые этим расширением, проверяют, попадает ли данный символ или строка в определённый класс в соответствии с текущими локальными установками/locale (см. также setlocale()).

При вызове с целочисленным аргументом эти функции ведут себя точно так же, как их С-аналоги из «ctype.h».

При вызове со строковым аргументом они проверяют каждый символ строки и возвращают TRUE только в том случае, если каждый символ строки соответствует запрошенному критерию.

Передача чего-нибудь другого, кроме строки или integer, немедленно возвратит FALSE.

Требования
Ничего помимо функций из стандартной С-библиотеки, которая всегда доступна.

Установка
Начиная с PHP 4.2.0, эти функции доступны по умолчанию. Для более старых версий вы должны сконфигурировать и откомпилировать PHP с опцией —enable-ctype.

Конфигурация
Это расширение не определяет никаких директив конфигурации.

Типы ресурсов
Это расширение не определяет никакие типы ресурсов.

Предопределённые константы
Это расширение не определяет никаких констант.

Содержание
ctype_alnum — проверяет алфавитно-цифровые символ(ы)
ctype_alpha — проверяет алфавитные символ(ы)
ctype_cntrl — проверяет управляющие символ(ы)
ctype_digit — проверяет цифровые символ(ы)
ctype_graph — проверяет печатаемые символ(ы), кроме space
ctype_lower — проверяет символ(ы) в нижнем регистре
ctype_print — проверяет печатаемые символ(ы)
ctype_punct — проверяет любые печатаемые символы, кроме пробельных и алфавитно-числовых
ctype_space — проверяет пробельные символ(ы)
ctype_upper — проверяет символ(ы) в верхнем регистре
ctype_xdigit — проверяет символ(ы), представляющие 16-ричные числа

Отправить сообщение об ошибке
Если нашли ошибку в тексте выделите ее мышкой и нажмите сочетание клавиш Ctrl+ENTER, укажите правильный текст без ошибки.

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Pascal: Занятие № 11. Строковый тип данных в Паскаль

Символьный тип char в Паскале

Символьной переменной соответствует тип char:

Инициализация символьной переменной:


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

Функция преобразует целое число, имеющее тип BYTE, в один символ ASCII-кода:

Функция возвращает порядковый номер символа параметра в таблице ASCII:

var i: integer; begin for i:=32 to 255 do write(chr(i):3); end.

Строковые переменные в Паскаль

Строковые переменные в Паскале имеют тип String

Объявление и инициализация строковой переменной:

var a:string; begin a:=’Привет всем!’; writeln(a); end.

Ввод значения строковой переменной с клавиатуры:

var a:string; begin writeln(‘Введите слово’); readln(a); writeln(‘Вы ввели слово ‘,a); end.

Строка «рассматривается» компилятором, как массив букв:

Функции работы со строками в Pascal

Исходные данные Операция Результат
s3=’Мотороллер’

var s:string[30]; n,i:integer; begin writeln(‘введите текст’); readln(s); n:=0; for i:=1 to length(s) do if s[i]=’f’ then n:=n+1; write(‘в тексте букв f = ‘,n) end.

const m = [‘1’..’9′]; var s: string; i, k: byte; begin read(s); k := 0; for i := 1 to length(s) do if s[i] in m then inc(k); writeln(‘цифр = ‘, k); readln; end.

var a,b,c:string; i:longint; begin write(‘введите слово:’); readln(a); b:=»; for i:=1 to length(a) do b:=a[i]+b; if a=b then write(‘перевертыш’) else write(‘не перевертыш’); end.

  • После того как строка считывается (вводится), измеряется ее длина (функция length).
  • Далее стока просматривается посимвольно в цикле while или for .
  • Если символ строки входит в множество букв ( const letters=[‘a’..’z’]; ), то этот символ прибавляется к первому элементу массива слов строки ( . array [1..100] of string ).
  • Если символ равен пробелу, то увеличиваем счетчик для массива слов и переходим к следующей итерации цикла.
  • Пока не достигнем пробела, формируем элемент массива b (строковый массив — будущий массив из слов предложения). Добавляя каждую букву в переменную d.
  • При достижении пробела чистим переменную d для слова и начинаем формировать следующее слово.
  • После того, как массив из всех слов сформирован: начиная со второго элемента, сравниваем его длину с длиной предыдущего элемента. При необходимости меняем элементы местами. Проходим алгоритм до конца массива b.

    Примечание:
    Использовать функции: Pos, Copy, Delete

    Посимвольный ввод до пробела

    Посимвольный ввод удобен для «мгновенной» обработки символов в строке.

    Для организации массива символьных строк:

    1. Все данные разделяются одним пробелом. Нужно подсчитать, сколько студентов получили отметку 5.
    2. Вывести фамилии студентов, у которых оценка 2.
    3. Вывести фамилии студентов, родившихся в 1996 году.

    Пример:
    Входной текст: Алгоритм — это правила выполнения определенных действий!, предписание исполнителю! совершить последовательность действий!, набор команд для компьютера!
    Выходной текст: Алгоритм — это правила выполнения определенных действий, предписание исполнителю! совершить последовательность действий, набор команд для компьютера!

    Трудность низкая:
    Программа должна формировать в памяти вторую строковую переменную с измененным текстом, а потом выводить ее на экран.

    Трудность высокая:
    Программа должна преобразовывать исходную строку без использования дополнительных переменных, и затем выводить ее на экран.

    И напоследок рассмотрим олимпиадное задание по Паскалю:

    * Решить ту же задачу, в которой сдвиг будет не на 3 позиции, а на k, причем отрицательное значение является признаком сдвига влево, положительное — вправо.

    var a:char; i,n:byte; s,s1:string; begin s1:=»; readln(s); for i:=1 to length(s) do begin n:=ord(. ); n:=n+3; if n=123 then n:=97; <в ASCII 120 - x, 97 - a>if . ; <в ASCII 121 - y, 98 - b>if . ; <в ASCII 122 - z, 99 - c>a:=chr(. ); s1:=. ; end; writeln(s1) end.

    Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

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

    Символьные типы предназначены для хранения одного символа. Они относятся к целым порядковым типам. Ниже приведена таблица символьных типов. Наличие двух разных типов — ANSICharиWideCharсвязано с двумя различными множествами символов: ANSI, каждый символ которого занимает 1 байт, и Unicode, каждый символ которого занимает 2 байта. Первые 256 символов в этих множествах одинаковы и соответствуют символам ASCII от 0 до 255.

    Тип Размер в байтах Что может хранить
    ANSIChar Один символ ANSI
    WideChar Один символ Unicode
    Char Сейчас эквивалентен ANSIChar. В будущих версиях Delphi может быть будет эквивалентен WideChar

    Родовым (т.е. обеспечивающим максимальную производительность) является тип Char,который в настоящий момент эквивалентен типу ANSIChar,но в последующих версиях это может быть изменено. Именно тип Charимеет смысл использовать во всех случаях, кроме обращений к функциям, требующим другой тип символьных данных.

    Приведенные в таблице затраты памяти могут изменяться от версии к версии и от системы к системе. Поэтому, если требуется достоверно знать затраты памяти для того или иного типа, следует пользоваться функцией SizeOf.


    Для символьного типа предопределена функция Chr,возвращающая символ любого целого значения в пределах AnsiCharили WideChar.Например, Chr(65) возвращает букву «А». Поскольку символьные типы относятся к порядковым, для них предопределены такие функции и процедуры, как Ord, Pred, Succ, Inc, Decи др. Функция Ord,возвращающая номер символа, противоположна по смыслу функции Chr.Т.е. Ord(Chr(65))вернет 65, a Chr(Ord(‘A’))вернет символ «А».

    Как и любая переменная программы, переменная типа char может получить значение в результате выполнения инструкции присваивания. Если переменная типа char получает значение в результате выполнения операции присваивания, то справа от знака := должно стоять выражение типа char, например, переменная типа char или символьная константа — символ, заключенный в кавычки.

    В результате выполнения инструкций

    переменная c1 получает значение присваиванием значения константы, а переменная с2 — присваиванием значения переменной cl (предполагается, что переменные c1 и с2 являются переменными символьного типа).

    Переменную типа char можно сравнить с другой переменной типа char или с символьной константой. Сравнение основано на том, что каждому символу поставлено в соответствие число (см. приложение 2), причем символу ‘о’ соответствует число меньшее, чем символу У, символу ‘А’ — меньшее, чем ‘в’, символу V — меньшее, чем а. Таким образом, можно записать:

    Строки могут быть представлены следующими типами: shortstring, Longstring и widestring. Различаются эти типы предельно допустимой длиной строки, способом выделения памяти для переменных и методом кодировки символов.

    Переменной типа shortstring память выделяется статически, т. е. до начала выполнения программы, и количество символов такой строки не может превышать 255. Переменным типа Longstring и widestring память выделяется динамически — во время работы программы, поэтому длина таких строк практически не ограничена.

    Тип строки Максимальная длина Используется для Нулевой символ в конце
    ShortString обратной совместимости нет
    AnsiString -2 31 (-2 Гб) символов ANSI есть
    String или 255, или до-2 Гб символов ANSI или Unicode есть или нет
    WideString -2 30 (-1 Гб) символов Unicode, в серверах СОМ и интерфейсах есть

    Родовым является тип String,который имеет разный смысл в зависимости от директивы компилятора $Н. Если включена директива (она включена по умолчанию), то Stringинтерпретируется компилятором как тип AnsiString— длинная строка с нулевым символом в конце. Если же включить директиву , то Stringинтерпретируется компилятором как тип ShortString— короткая строка без нулевого символа в конце. Если в объявлении типа после ключевого слова Stringследует число символов в квадратных скобках (например, String[4]),то, независимо от директив компилятора, тип трактуется как строка без нулевого символа в конце с указанным числом символов.

    Переменная строкового типа должна быть объявлена в разделе объявления переменных. Инструкция объявления в общем виде выглядит так:

    Имя: String [длина]

    · имя — имя переменной;

    · string — ключевое слово обозначения строкового типа;

    · длина — константа целого типа, которая задает максимально допустимую длину строки.

    Пример объявления переменных строкового типа:

    name: string[30];
    buff: string;

    Если в объявлении строковой переменной длина строки не указана, то ее длина задается равной 255 символам, т. е. объявления

    stroka: string [255]; stroka: string;

    В тексте программы последовательность символов, являющаяся строкой (строковой константой), заключается в одинарные кавычки. Например, чтобы присвоить строковой переменной parol значение, нужно записать:

    parol:= ‘Большой секрет’; или parol:= ‘2001’;

    Следует обратить внимание, что инструкция parol:=2001; неверная, т.к. тип константы не соответствует типу переменной. Во время компиляции этой инструкции будет выведено сообщение: incompatible types: ‘Char’ and ‘Integer’ (типы Char и Integer несовместимы).

    Необходимо отметить, что один символ и строка длиной в один символ

    var c: char; s: string[1];

    совершенно не эквивалентны друг другу. Вне зависимости от своей реальной длины, строка относится к конструируемым структурированным типам данных, а не к базовым порядковым (см. лекцию 2).

    Используя операции =, , = и о, переменную типа string можно сравнить с другой переменной типа string или со строковой константой. Строки сравниваются посимвольно, начиная с первого символа. Если все символы сравниваемых строк одинаковые, то такие строки считаются равными. Если в одинаковых позициях строк находятся разные символы, большей считается та строка, у которой в этой позиции находится символ с большим кодом.

    Дата добавления: 2015-03-19 ; просмотров: 912 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

    Функции работы со строками и символами

    Читайте также:

    1. DOS Fn 5eH: Разные сетевые функции
    2. Functio laesa (нарушение функции).
    3. I. 3. Функции минеральных веществ плазмы крови
    4. I. 4. Функции белков плазмы крови
    5. I. Сущность и основные функции перестрахования.
    6. II этап коррекционно-развивающей работы.
    7. II-4.6 Функции причастия в предложении и их перевод
    8. II. Основные задачи и функции
    9. II. Роль, функции, отграничение трудового права от смежных отраслей права.
    10. II. Тригонометрические функции и функции работающие с углами.
    11. III. Методическое обоснование и рекомендации по организации работы по формированию физиологичесого и речевого дыхания у дошкольников с речевой патологией.
    12. III. Режимы работы в ТТС
  • Строка представляет собой массив символов, заканчивающийся нуль-символом. В C++ есть две возможности работы со строками: функции, унаследованные из библиотеки С (заголовочный файл или ), и библиотечный класс C++ string, предоставляющий более широкие возможности представления, обработки и контроля строк (он рассматривается в разделе «Строки».

    Библиотека С содержит функции копирования строк (strcpy. strncpy), сравне­ния (strcmp, strncmp), объединения строк (strcat. strncat), поиска подстроки (strstr), поиска вхождения символа (strchr, strrchr, strpbrk), определения дли­ны строки (strlen) и другие. Полный список функций приведен в приложении 6.

    В заголовочных файлах и содержатся полезные функции преобразования строк в числа (обратные преобразования можно сделать с помо­щью функции sprintf): double atof(const char* p) преобразует переданную строку в double; int atoi (const char* p) преобразует переданную строку в int; long atol (const char* p) преобразует переданную строку в long.

    Пробелы и табуляции в начале строки пропускаются. Преобразование прекраща­ется при встрече недопустимого символа или конца строки. Если строку нельзя преобразовать в число, возвращается 0. Если число выходит за пределы диапазо­на данного типа, переменной errno (заголовочный файл ) присваивается значение ERANGE и возвращается допустимое число.

    Пример (программа заполняет массив типа double из строки):

    char s[] = «2. 38.5. 70. 0. 0. 1». *p = s:

    >while(p = strchr(p, ‘,’), p++);

    for( int k = 0; k и ) есть следующие функции:

    Имя проверка на принадлежность символа множеству
    isalnum букв и цифр (A-Z, a-z, 0-9)
    isalfa букв (A-Z, a-z)
    iscntrl управляющих символов (с кодами 0..31 и 127)
    isdigit цифр (0-9)
    isgraph печатаемых символов, кроме пробела (isalfa | isdigit | ispunct)
    islower букв нижнего регистра (a-z)
    isprint печатаемых символов
    ispunct знаков пунктуации
    isspace символов-разделителей
    isupper букв верхнего регистра (A-Z)
    isxdigit шестнадцатиричных цифр (A-F, a-f, 0-9)

    Функции принимают величину типа int и возвращают значение true, если усло­вие выполняется. Рекомендуется пользоваться стандартными функциями, а не писать собственные циклы проверки, так как это снижает количество ошибок в программе.

    Кроме описанных выше, в библиотеке есть функции tolower и toupper, переводя­щие символ латинского алфавита соответственно в нижний и верхний регистр.

    Символьные строки и строковые функции

    Срока – это массив типа Char, завершающийся кодом нуль (\0)

    Длину строки удобно задавать константой, т. к. при возможном изменении длины строки нужно будет изменить программу только в этом месте:


    const int len_str = 80;

    char str[len_str]; // в этой строке можно использовать не 80, а 79 символов

    Строку можно инициализировать. При этом «ноль» создается автоматически:

    char a[100]=”это строка”; // 10+1 = 11 байтов -проинициализированная строка

    char *st=”Это строка”; // это указатель на строку-константу, его изменять

    В динамической памяти строка создается так:

    char *p=new char(m); // m определяется заранее

    С++

    Ввод-вывод строк средствами С++

    Можно использовать cin, cout и другие функции.

    cin>>s; // вводит последовательность символов до ближайшего

    //пробела (т.е. вводит одно слово)

    Можно использовать метод getline или get класса IOSTREAM, объектом которого является cin:

    cin.getline(s,80); /* считывает из потока 79 символов (или меньше если встретится (т.е. \n) и записывает их в строку s. Символ \n тоже считывается из потока, вместо него в строку помещается «ноль» */

    scanf(“%s”,s); /* ввод до ближайшего пробела, символ & опускать! т.к. имя строки это указатель на её начало*/

    2) Ввести предложение:

    scanf(“%10c”,s); // ввод строки с пробелами 10 это кол-во вводимых символов

    printf(“%15s”,s); // выводит строку в 15 позиций, выравнивание по правому краю

    3) Специальные средства ввода – вывода строк – gets и puts

    gets(s); // это лучший способ ввода строки в С

    puts(s); // это лучший способ вывода строки в С

    gets(s) – возвращает указатель на строку s. При ошибке возвращает NULL

    puts(s) – в случае нормального нормального выполнения возвращает отрицательное число, в случае ошибки – EOF

    Итог: printf удобно использовать при выводе данных различных типов. Если выводить только строки, то puts.

    (Для ввода-вывода одного символа используют спец. функции:

    Различия между массивом символов и указателем на строку

    Char s1[]=”Я люблю кошек!”; // длина массива определяется автоматически

    Char *s2=”Я люблю собак!”;

    Дата добавления: 2014-01-11 ; Просмотров: 605 ; Нарушение авторских прав? ;

    Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет

    Введите символы (Visual Basic) Type characters (Visual Basic)

    В дополнение к определению типов данных в операторе объявления, можно задать тип данных некоторых элементов программирования с символ типа. In addition to specifying a data type in a declaration statement, you can force the data type of some programming elements with a type character. Символ типа должно следовать сразу за элементом без каких-либо промежуточного знака. The type character must immediately follow the element, with no intervening characters of any kind.

    Символ типа не является частью имени элемента. The type character is not part of the name of the element. Ссылка на элемент с символом типа может не символ типа. An element defined with a type character can be referenced without the type character.

    Символы типа идентификатора Identifier type characters

    Visual Basic предоставляет набор символы типа идентификатора можно использовать в объявлении для указания типа данных переменной или константы. Visual Basic supplies a set of identifier type characters that you can use in a declaration to specify the data type of a variable or constant. В следующей таблице показаны допустимые символы типа идентификатора с примерами их использования. The following table shows the available identifier type characters with examples of usage.

    Знак типа идентификатора Identifier type character Тип данных Data type Пример Example
    % Integer Dim L%
    & Long Dim M&
    @ Decimal Const W@ = 37.5
    ! Single Dim Q!
    # Double Dim X#
    $ String Dim V$ = «Secret»

    Символов типа идентификатора не существует для Boolean , Byte , Char , Date , Object , SByte , Short , UInteger , ULong , или UShort типов данных или других составные типы данных, таких как массивы или структуры. No identifier type characters exist for the Boolean , Byte , Char , Date , Object , SByte , Short , UInteger , ULong , or UShort data types, or for any composite data types such as arrays or structures.

    В некоторых случаях можно добавить $ символов для функции Visual Basic, например Left$ вместо Left , чтобы получить возвращаемое значение типа String . In some cases, you can append the $ character to a Visual Basic function, for example Left$ instead of Left , to obtain a returned value of type String .

    Во всех случаях знак типа идентификатора должно следовать сразу за имя идентификатора. In all cases, the identifier type character must immediately follow the identifier name.

    Символы типа литерала Literal type characters

    Объект литерала является текстовым представлением отдельного значения типа данных. A literal is a textual representation of a particular value of a data type.

    Типы литералов по умолчанию Default literal types

    Форма литерала, как оно отображается в коде, обычно определяет его тип данных. The form of a literal as it appears in your code ordinarily determines its data type. Ниже приведены эти типы по умолчанию. The following table shows these default types.

    Текстовая форма литерала Textual form of literal Тип данных по умолчанию Default data type Пример Example
    Числовые без дробной части Numeric, no fractional part Integer 2147483647
    Числовые без дробной части, слишком велик для Integer Numeric, no fractional part, too large for Integer Long 2147483648
    Числовые дробной части Numeric, fractional part Double 1.2
    Заключенный в двойные кавычки Enclosed in double quotation marks String «A»
    Заключенные в решетки Enclosed within number signs Date #5/17/1993 9:32 AM#


    Принудительно типы литералов Forced literal types

    Visual Basic предоставляет набор символы типа литерала, указывает, что можно использовать для принудительного присвоения литералу типом данных, отличный от его формы. Visual Basic supplies a set of literal type characters, which you can use to force a literal to assume a data type other than the one its form indicates. Для этого добавляется знак в конец литерала. You do this by appending the character to the end of the literal. В следующей таблице показаны допустимые символы типа литерала с примерами их использования. The following table shows the available literal type characters with examples of usage.

    Знак типа литерала Literal type character Тип данных Data type Пример Example
    S Short I = 347S
    I Integer J = 347I
    L Long K = 347L
    D Decimal X = 347D
    F Single Y = 347F
    R Double Z = 347R
    US UShort L = 347US
    UI UInteger M = 347UI
    UL ULong N = 347UL
    C Char Q = «.»C

    Никакие символы типа литерала существует для Boolean , Byte , Date , Object , SByte , или String типы данных, или для любых типов составных данных, таких как массивы или структуры. No literal type characters exist for the Boolean , Byte , Date , Object , SByte , or String data types, or for any composite data types such as arrays or structures.

    Литералы также можно использовать символы типа идентификатора ( % , & , @ , ! , # , $ ), как и переменные, константы и выражения. Literals can also use the identifier type characters ( % , & , @ , ! , # , $ ), as can variables, constants, and expressions. Тем не менее, символы типа литерала ( S , I , L , D , F , R , C ) может использоваться только с литералами. However, the literal type characters ( S , I , L , D , F , R , C ) can be used only with literals.

    Во всех случаях знак типа литерала должно следовать сразу за литеральное значение. In all cases, the literal type character must immediately follow the literal value.

    Шестнадцатеричные, двоичные и восьмеричные литералы Hexadecimal, binary, and octal literals

    Как правило, компилятор интерпретирует целочисленным литералом в системе счисления десятичным (основание 10). The compiler normally interprets an integer literal to be in the decimal (base 10) number system. Можно также определить целочисленный литерал, как число шестнадцатеричным (основание 16) с &H префиксом, как число двоичного файла (по основанию 2) с &B префикс и в качестве восьмеричным (основание 8) числом с &O префикс. You can also define an integer literal as a hexadecimal (base 16) number with the &H prefix, as a binary (base 2) number with the &B prefix, and as an octal (base 8) number with the &O prefix. Цифры, указанные префикс должен соответствовать типу в системе счисления. The digits that follow the prefix must be appropriate for the number system. Это показано в следующей таблице. The following table illustrates this.

    Основание системы счисления Number base Префикс Prefix Допустимые числовые значения Valid digit values Пример Example
    16 (основание 16) Hexadecimal (base 16) &H 0-9 или A-F 0-9 and A-F &HFFFF
    Двоичный файл (по основанию 2) Binary (base 2) &B 0—1 0-1 &B01111100
    8 (основание 8) Octal (base 8) &O 0-7 0-7 &O77

    Начиная с Visual Basic 2020, можно использовать символ подчеркивания ( _ ) как разделитель групп, чтобы повысить удобочитаемость используется целочисленный литерал. Starting in Visual Basic 2020, you can use the underscore character ( _ ) as a group separator to enhance the readability of an integral literal. В следующем примере используется _ символ для группировки двоичный литерал в 8-разрядное групп: The following example uses the _ character to group a binary literal into 8-bit groups:

    Вы можете следовать префикса литерала знак типа литерала. You can follow a prefixed literal with a literal type character. Это показано в следующем примере. The following example shows this.

    В предыдущем примере counter имеет десятичное значение от -32768, и flags имеет десятичное значение + 32768. In the previous example, counter has the decimal value of -32768, and flags has the decimal value of +32768.

    Начиная с Visual Basic 15.5, можно также использовать символ подчеркивания ( _ ) в качестве начального разделителя между префиксом и двоичное, шестнадцатеричное или восьмеричное цифры. Starting with Visual Basic 15.5, you can also use the underscore character ( _ ) as a leading separator between the prefix and the hexadecimal, binary, or octal digits. Пример: For example:

    Чтобы использовать символ подчеркивания в качестве начального разделителя, нужно добавить в файл проекта Visual Basic (*.vbproj) следующий элемент: To use the underscore character as a leading separator, you must add the following element to your Visual Basic project (*.vbproj) file:

    Уроки 58 — 61
    Работа с символьной информацией
    Практикум
    Практическая работа № 3.8
    «Программирование обработки строк символов»

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

    Величина типа «символ» может принимать значения любых символов компьютерного алфавита. Символьная величина занимает 1 байт памяти, в котором хранится код этого символа, соответствующий используемой кодовой таблице. Заметим, что в Delphi наряду с однобайтовой кодировкой символов используется и двухбайтовая.

    Символьная константа записывается между апострофами. Например: 1R’, ‘ + ‘, ‘9’, ‘j’.

    Символьной тип называется Char. Пример описания символьных переменных:

    Var c1, с2: Char;

    Символьный тип относится к порядковым типам данных. Из этого следует:

    • символы — упорядоченное множество;

    • у каждого символа в этом множестве есть свой порядковый номер;

    • между символами работает соотношение «следующий — предыдущий ».

    Порядковый номер символа — это его десятичный код, который лежит в диапазоне от 0 до 255. Например, в кодовой таблице ASCII десятичный код латинской буквы ‘А’ равен 65, а цифры ‘5’ — 53. О стандартах кодирования символов рассказывалось на уроках 13 — 16 «Представление текста, изображения и звука в компьютере».

    Функция Ord(x)

    Ord(x) — функция от аргумента порядкового типа, которая возвращает порядковый номер значения х в этом типе данных. Если х — символьная величина, то результатом функции будет десятичный код х в кодовой таблице. Например:

    Функция Chr (х)

    Chr (х) — функция от целочисленного аргумента, результатом которой является символ с кодом, равным х. Например:

    Поскольку коды символов лежат в диапазоне от 0 до 255, желательно тип х определять либо как byte, либо как интервальный тип 0..255.

    Пример 1. Составить программу на Паскале, по которой на экран будет выводиться таблица кодировки в диапазоне кодов от 32 до 255. Напомним, что символы с кодами, меньшими 32, являются управляющими (не экранными).

    Значения выводятся парами: символ — код. В одной строке располагается 10 таких пар. Вся таблица разместится в 24 строках на экране.

    Принцип последовательного кодирования алфавитов

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

    При выполнении операций отношений, применительно к символьным величинам, учитываются коды этих величин. Чем больше значение кода, тем символ считается больше. Истинными являются следующие отношения: ‘А’ с ‘В’, ‘Z’ > ‘Y’, ‘а’ > ‘А’. Значение символьной переменной С является прописной (заглавной) латинской буквой, если истинно логическое выражение:

    (С >= ‘А’) and (C = ’0′) and (С : String[ ]

    Var Name: String[20]

    Параметр длины может и не указываться в описании. В таком случае подразумевается, что он равен максимальной величине — 255. Например:

    Var slovo: String

    Строковая переменная занимает в памяти на 1 байт больше, чем указанная в описании длина. Дело в том, что один (нулевой) байт содержит значение текущей длины строки. Если строковой переменной не присвоено никакого значения, то ее текущая длина равна нулю. По мере заполнения строки символами ее текущая длина возрастает, но она не должна превышать максимальной по описанию величины.

    Символы внутри строки индексируются (нумеруются), начиная с единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки. Например:

    Name[5], Name[i], slovo[k+1].

    Значение индекса может быть задано положительной константой, переменной, выражением целочисленного типа. Оно не должно выходить за границы описания.

    Тип String и стандартный тип Char совместимы: строки и символы могут употребляться в одних и тех же выражениях.


    Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операция сцепления и операции отношения.

    Операция сцепления (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные.

    В результате получится строка:

    Длина результирующей строки не должна превышать 255.

    Операции отношения: =, , =, производят сравнение двух строк, в результате чего получается логическая величина (true или false). Операции отношения имеют более низкий приоритет, чем операция сцепления. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки.

    Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы.

    Функции и процедуры

    Функция Copy(S, Poz, N) выделяет из строки S подстроку длиной N символов, начиная с позиции Poz. N и Роz — целочисленные выражения.

    Функция Concat (SI, S2, . . ., SN) выполняет сцепление (конкатенацию) строк S1. SN в одну строку.

    Функция Length (S) определяет текущую длину строки S. Результат — значение целочисленного типа.

    Функция Pos (SI, S2) обнаруживает первое появление в строке S2 подстроки S1. Результат — целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 не обнаружена подстрока S1, то результат равен 0.

    Процедура Delete (S, Poz, N) удаляет N символов из строки S, начиная с позиции Poz.

    В результате выполнения процедуры уменьшается текущая длина строки в переменной S.

    Процедура Insert (SI, S2, Poz) выполняет вставку строки S1 в строку S2, начиная с позиции Poz.

    Примеры программ обработки строк

    Пример 1. Составить программу, формирующую символьную строку, состоящую из N звездочек (N — целое число, 1 ≤ N ≤ 255).

    здесь строковой переменной А вначале присваивается значение пустой строки, обозначаемой двумя апострофами (‘ ‘). Затем к ней присоединяются звездочки.

    Пример 2. В символьной строке подсчитать количество цифр, предшествующих первому символу ‘ ! ‘.

    В этой программе переменная К играет роль счетчика цифр, а переменная I — роль параметра цикла. Цикл закончит выполнение при первом же выходе на символ ‘ ! ‘ или если в строке такого символа нет, то при выходе на конец строки. Символ S[I] является цифрой, если истинно отношение: ‘O’ ≤ S[I] ≤ ‘9’.

    Вопросы и задания

    1. Как в программе обозначается строковая константа, как определяется строковая переменная?

    2. Какой может быть максимальная длина строки?

    3. Составьте программу получения из слова «дисковод» слова «воск», используя операцию сцепления и функцию Сору.

    4. Составьте программу получения слова «правило» из слова «операция», используя процедуры Delete, Insert.

    5. В данном слове замените первый и последний символы на символ ‘*’.

    6. В данном слове произведите обмен первого и последнего символов.

    7. К данному слову присоедините столько символов ‘!’, сколько в нем имеется букв (например, из строки ‘УРА’ надо получить ‘УРА. ‘).

    8. В данной строке вставьте пробел после каждого символа.

    9. Переверните введенную строку (например, из ‘ДИСК’ должно получиться ‘КСИД’).

    10. В данной строке удалите все пробелы.

    11. Строка представляет собой запись целого числа. Составьте программу ее перевода в соответствующую величину целого типа.

    Практикум

    Работа 3.8. Программирование обработки строк символов

    Задание

    Составить на Паскале программу решения поставленной задачи по обработке символьных строк. По возможности, использовать подпрограммы. В последующих задачах подразумевается, что слова в тексте (в строке) отделяются друг от друга пробелами.

    Уровень 1

    1. Дана строка, заканчивающаяся точкой. Подсчитать, сколько слов в строке.

    2. Дана строка, содержащая английский текст. Найти количество слов, начинающихся с буквы «b».

    3. В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен.

    4. Дана строка. Преобразовать ее, заменив звездочками все двоеточия (:), встречающиеся среди первых n/2 символов, и заменив точками все восклицательные знаки, встречающиеся среди символов, стоящих после n/2 символов. Здесь n — длина строки.

    5. В строке удалить символ двоеточие (:) и подсчитать количество удаленных символов.

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

    7. Дана строка, содержащая текст. Найти длину самого короткого и самого длинного слов.


    8. Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран все слова, содержащие три буквы. Если таких слов нет, то вывести сообщение об этом.

    9. Дана строка. Преобразовать ее, удалив каждый символ * и повторив дважды подряд каждый символ, отличный от *.

    10. Дана строка текста. Подсчитать количество букв «k» в последнем слове.

    11. Определить, сколько раз в тексте встречается заданное слово.

    Уровень 2

    12. Дана строка-предложение на английском языке. Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы.

    13. Дана строка. Подсчитать, сколько различных символов встречается в ней. Вывести их на экран.

    14. Дана строка. Подсчитать самую длинную последовательность подряд идущих букв «а».

    15. Имеется строка, содержащая буквы латинского алфавита и цифры. Вывести на экран длину наибольшей последовательности цифр, идущих подряд.

    16. Дана строка. Указать те слова, которые содержат хотя бы одну букву «k».

    17. Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.

    18. Строка содержит одно слово. Проверить, будет ли оно читаться одинаково справа налево и слева направо (т. е. является ли оно палиндромом).

    19. В записке слова зашифрованы — каждое из них записано наоборот. Расшифровать сообщение.

    20. Статистика. Дан текст. Написать программу, определяющую процентное отношение строчных и прописных букв к общему числу символов в нем.

    21. Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке и правильно ли они расставлены, т. е. для каждой открывающей скобки есть соответствующая закрывающая скобка.

    Уровень 3

    22. Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз, в том порядке, в котором они встречаются в тексте.

    23. Расстояние между двумя словами равной длины — это количество позиций, в которых эти слова различаются. В заданном предложении найти пару слов заданной длины с максимальным расстоянием.

    24. Форматирование текста. Дан текст, состоящий из предложений, разделяемых точками. Напишите программу, производящую следующее форматирование: после каждой точки в конце предложения должен стоять хотя бы один пробел; первое слово в предложении должно начинаться с прописной буквы.

    Замечание. Текст может быть как на русском, так и на английском языке.

    25. Лишние пробелы. Дана строка, состоящая из слов, разделенных пробелами. Напишите программу, удаляющую лишние пробелы. Пробел считается лишним, если он:

    • стоит в начале строки;
    • стоит в конце строки;
    • следует за пробелом.

    26. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в обратном порядке.

    27. Составить программу преобразования натуральных чисел, записанных в римской нумерации, в десятичную систему счисления.

    28.
    а) Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных местах, а затем, в обратном порядке, все символы, расположенные на нечетных местах. (Например, строка ‘Программа’ превратится в ‘ргамамроП’.)
    б) Запрограммировать решение обратной задачи (расшифровки).

    Глава 4. Типы символов

    В предыдущем мы пытались установить основные элементы по­нятия символа, тщательно стараясь не путать этого понятия с другими, соседними с ним или очень близкими к нему часто даже скрепленными с ним, особенно если иметь в виду обыва­тельскую и общелитературную речь. Мы убедились, что большая сложность проблемы приводит здесь к такой путанице терминов, которая является вполне естественной и об устранении которой заставляет думать только очень упорное и очень цепкое функци­онирование термина «символ», ясно свидетельствующее об его специфичности, пусть хотя бы и бессознательной. Теперь нам предстоит не просто заниматься установлением элементов поня­тия, но и соотношением разных символов между собой, которые, как показывает исследование, не только разнообразны и прихот­ливы, но, прямо можно сказать, необозримы. Везде в этих типах будет сохраняться основная особенность символа, сводящаяся к указанию на неизвестные предметы путем какой-нибудь ясной и вполне известной конструкции. Но эта основная особенность сим­вола везде разная в зависимости от тех областей, где символ функ­ционирует. Рассматривая символ в той или иной области познания или действительности, мы замечаем, что, однажды его установив, мы тут же видим и все последствия, которые отсюда происходят. Поэтому в противоположность непосредственному описанию эле­ментов понятия символа мы теперь изучаем те смысловые после­довательности, которые возникают при функционировании симво­ла в разных областях и есть не что иное, как учение о типах символов.

    1. Научные символы. Уже элементарный логический анализ всякого научного построения с полной убедительностью свиде­тельствует о том, что он никак не может обойтись без символи­ческих понятий. Самая точная из наук, математика, дает наибо­лее совершенные образы символа. Отрезок прямой только людям невежественным в математике представляется в виде какой-то палочки определенной длины с возможностью делить ее на извест­ное количество частей. На самом же деле, поскольку множество всех действительных чисел, согласно основному учению матема-

    тики, обладает мощностью континуума и поскольку отрезок пря­мой содержит в себе именно множество точек, соответствующее множеству всех действительных чисел, необходимо признать, что конечный отрезок прямой в таком понимании является символом получения множества всех действительных (то есть всех рацио­нальных и всех иррациональных) чисел, или, вернее, одним из символов бесконечности.

    Уже всякое рациональное число в арифметике только при грубом употреблении его в качестве орудия счета не обнаружи­вает своего символического функционирования. Теоретически и научно всякое число даже просто натурального ряда предполагает целую бесконечность дробей, отделяющих его от соседнего числа. Всякие иррациональные числа вроде У2″, УТ, Л/S’— тоже есть символы в нашем смысле слова, поскольку всякое иррациональ­ное число есть только известный метод порождения бесчислен­ного количества десятичных знаков. Всякая функция, разлагаемая ъ бесконечный ряд, тоже есть символ в нашем смысле слова. Ни одна категория математического анализа не обходится без пос­ледовательного применения понятия символа. Таковы прежде все­го категории дифференциала и интеграла, тоже построенные на получении тех или других величин в результате их непрерывного движения к пределу по определенному закону. В геометрии каж­дый тип пространства строится тоже по определенному закону, который является для всякого пространства его символом. Та­ково пространство гиперболическое, параболическое, сферическое.

    Но если зашла речь о геометрии, то для иллюстрации поня­тия символа вовсе не обязательно оперировать категориями высшей геометрии, и в частности разными типами пространства. Достаточно базироваться уже на элементарной геометрии для того, чтобы не только констатировать наличие здесь символов как бесконечных рядов, но чтобы эти символы даже и пред­ставить себе вполне наглядно, вполне, можно сказать, зрительно. Если мы имеем, например, прямоугольный треугольник, то квад­рат гипотенузы равняется, как известно, сумме квадратов обоих катетов. Следовательно, если, например, длина каждого катета рав­няется единице, то гипотенуза будет равняться квадратному корню из двух. Это значит, во-первых, то, что гипотенуза, в на­шем смысле слова, есть символ, поскольку она является порожда­ющей моделью для единицы с бесконечным числом десятичных знаков. А во-вторых, эта неисчислимая бездна иррациональности совершенно просто и наглядно видна нашему глазу в виде простой гипотенузы.

    Возьмем круг. Уже школьнику известно, что окружность круга есть удвоенное число «пи», умноженное на радиус круга. Это «пи» даже и не просто иррациональное число, но, как говорят

    математики, трансцендентное число. А тем не менее эту окруж­ность мы прекрасно видим своими собственными глазами или пред­ставляем ее себе в уме, несмотря ни на какую трансцендентность, на которой строится эта окружность. То же самое можно было бы сказать о площади круга и о разных других математических фигурах и телах. Поэтому кто боится иррациональности, тот попросту не знает математики и не понимает того, какой нагляд­ностью и простотой обладает здесь всякая иррациональность и даже трансцендентность. Где же тут мистика? Значит, ее нет и в нашем определении символа как функции, разложимой в бесконечный ряд как угодно близких один другому членов ряда. Кто не понимает учения о символе как о функции жизни с необхо­димостью разложения этой функции в бесконечный ряд, тот попро­сту незнаком с элементарной арифметикой или геометрией.

    По образцу математики и все другие науки чем более совер­шенны, тем больше пользуются символическими категориями, потому что такая общность, которая не является законом для подчиненных ей единичностей, очень слабая общность, только предварительная или только предположительная. Так, способ производства, не проанализированный в качестве смыслового прин­ципа для объяснения всех возможных для них надстроек, ко­нечно, не является символом в нашем смысле слова, но зато его обобщающая социально-историческая значимость близка к нулю.

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

    2. Философские символы ничем существенным не отличаются от научных символов, разве только своей предельной обобщен­ностью. Понятие есть отражение действительности. Однако не вся­кое отражение действительности есть понятие о ней. Понятие есть такое отражение действительности, которое вместе с тем явля­ется и ее анализом, формулировкой ее наиболее общих сторон на основе отделения существенного в ней от несущественного. Уже в таком предварительном виде всякое философское понятие содержит в себе активный принцип ориентации в безбрежной действительности и понимания царящих в ней соотношений. Сопо­ставляя такие философские категории между собою и наблюдая отражаемые ими соотношения действительности, мы начинаем замечать, что каждая категория в отношении всех других тоже

    является символом. Какую бы философскую категорию мы ни взя­ли (например, реальность, причину, необходимость, свободу и т. д. и т. д.), мы можем путем задавания себе вопросов о том, как эта категория связана с другой, какие категории ей предшествуют и какие из нее вытекают, тоже вполне отчетливо наблюдать символическую природу каждой философской категории. Если от­раженная в категориях действительность есть нечто целое, то и са­ми эти категории, взятые вместе, тоже есть нечто целое, тоже обу­словливают друг друга, тоже друг из друга вытекают, то есть тоже являются символами для всех других категорий, или, по крайней мере, для ближайших.

    Однако с философской точки зрения наиболее совершенным являетея то понятие, которое способно обратно воздействовать на породившую его действительность, ее переделывать и совер­шенствовать. В этом смысле научно-технические категории явля­ются наиболее совершенными и наиболее яркими в своей символи­ческой структуре. Но и без специальной теории понятия доста­точно только обратить внимание на основное философское учение о всеобщей связи явлений, чтобы понять символический характер каждого явления, таящего в себе непонятный для профана, но по­нятный для науки символ определенного числа относящихся сюда явлений и, может быть, бесконечного их числа.

    3. Художественные символы. Всякий художественный образ, если рассуждать теоретически, имеет тенденцию к самодовлению и самоцели и потому как бы сопротивляется быть символом какой-нибудь действительности. Однако подобного рода изолиро­ванная художественная образность едва ли возможна в чистом виде, потому что даже так называемое «искусство для искусства» всегда несет с собой определенную общественную значимость, то ли положительную, если оно взывает к преодолению уста­ревших теоретических авторитетов и художественных канонов, то ли отрицательную, когда оно задерживает нарождение новых и прогрессивных идеологий и канонов.

    Поэтому чистая художественная образность, свободная от всякой символики, по-видимому, далее и совсем невозможна. Художественный образ тоже есть обобщение и тоже есть кон­струкция, выступающая как принцип понимания (а следователь­но, и переделывания) всего единичного, подпадающего под такую общность. Поэтому нет никакой возможности связывать художест­венный символизм только с тем кратковременным периодом в истории искусства, который ознаменован деятельностью так назы­ваемых символистов. Всякое искусство, даже и максимально реа­листическое, не может обойтись без конструирования символи­ческой образности. Символизм противоположен не реализму, но абстрактно самодовлеющей образности, «избегающей всяких ука-

    заний на какую-нибудь действительность, кроме себя самой. Так называемые «символисты» конца XIX и начала XX в. отли­чались от художественного реализма не употреблением символов (эти символы не меньше употребляются и во всяком реализме), но чисто идеологическими особенностями. Никто не сомневается в реализме «Ревизора» Гоголя. Тем не менее нет никакой возмож­ности свести эту комедию только к зарисовке нравов, пусть хотя бы даже и очень художественной. И поклонники Гоголя, и его противники, и сам Гоголь понимали эту комедию как сим­вол дореформенной России и по преимуществу ее чиновничества. Без этого символизма «Ревизор» перестал бы быть злейшей сати­рой и не мучил бы так самого Гоголя, мечтавшего изобразить Россию в наилучших тонах. Впрочем, даже если бы ему это уда­лось, то его произведения не перестали бы быть символическими, хотя и символизм этот получил бы тогда другое содержание.

    4. Мифологические символы. Их нужно яснейшим образом отличать от религиозной символики. Вероятно, гоголевский Вий когда-нибудь и был связан с религиозными представлениями, равно как и те покойники-разоблачители, которые выступают в «Желез­
    ной дороге» Некрасова. Тем не менее в том виде, как выступают эти мифологические символы у Гоголя и Некрасова, они обладают исключительно художественным характером; свойственный им символический характер относится не к изображению какой-то особой сверхчувственной действительности, но к острейшему функционированию художественных образов в целях подъема настроения (у Некрасова, например, даже революционно-демократичес­ кого). О соотношении символа и мифа в «Железной дороге» Некрасова мы скажем еще ниже. Небывало острой фантастикой прославились романтики первых десятилетий XIX века. Тем не менее назвать произведения Т.-А. Гофмана религиозными было бы достаточно бессмысленно. Этим произведениям свойствен острейший символизм; но каков его смысл и какова его философ­ская, объективная и т. д. направленность, об этом нам говорят историки литературы. Конечно, религиозность здесь не исключает­ся, но принципиально дело не в ней. Точно так же шагреневая кожа в одноименном романе Бальзака или портрет Дориана Грея в одноименном романе О. Уайльда едва ли имеют какое-нибудь религиозное значение и если имеют, то весьма косвен­ное и отдаленное. Жуткая фантастика произведений Эдгара По также имеет в качестве основной мифологически-символическую направленность и меньше всего религиозную. «Бегущая по волнам»
    А. Грина также полна мифологией, которая переплетается с дей­ ствительностью. Тем не менее указать здесь на какое-нибудь религиозное настроение трудно.

    5. Религиозные символы. В этих символах мы находим не

    только буквальное существование мифологических образов, но и связь их с реальными, вполне жизненными и часто глубоко и остро переживаемыми попытками человека найти освобождение от своей фактической ограниченности и утвердить себя в вечном и незыблемом существовании. Миф, взятый сам по себе, есть известного рода умственная конструкция (таковы «символ веры» и «символические» книги всех религий), которая так и может ос­таться только в пределах человеческого субъекта.


    Но религиозный миф, если и является на известной ступе­ни культурного развития какой-нибудь теоретической конструк­цией, в основе своей отнюдь не теоретичен ни в научном, ни в фи­лософском, ни в художественном смысле слова, но есть соответ­ствующая организация самой жизни и потому всегда магичен и мистериален. Таковы, например, религиозные символы элевсин-ских мистерий в Греции, связанные с мифологией Диониса и похищением Персефоны, но существовавшие в виде богато об­ставленных драматических представлений, приобщаясь к которым грек думал, что приобщается таким образом к вечной жизни. Миф здесь уже не умственная конструкция, но культ.

    Средневековая икона есть религиозно-мифологический сим­вол и ни в каком случае не просто художественное произведение. Однако религиозная сторона иконы, не будучи ни мифом, ни художественным образом, заключается единственно только в том, что икона трактуется как сакральная вещь, то есть как предмет культа. В этой чисто религиозной, то есть чисто культовой, стороне образа тоже есть своя собственная символика, посколь­ку здесь мыслится и соответствующее устроение человеческой жизни на всех бесконечных путях ее развития. Догмат Веры в этом смысле есть не что иное, как абсолютизированный миф, нагруженный огромной символической силой в смысле соответ­ствующего устроения человеческой жизни, а в том числе и соот­ветствующих культов. Когда же в эпоху Возрождения христиан­ские богородицы на иконах начинают улыбаться и художники стараются изобразить в них свои, уже чисто художественные и жизненные, чувства и стремления, то такая икона перестает быть иконой, то есть перестает быть религиозным мифом. Миф превращается в ней только в художественную методологию; а символизм и на этой ступени продолжает существовать, и, пожалуй, даже еще сильнее, хотя содержание его теперь стано­вится светским. Икона стала здесь светским портретом или вооб­ще светской картиной.

    Заметим, что не только миф может существовать вне рели­гии, но и религия может не нуждаться в мифологии. Л. Толстой считал себя не только религиозным человеком, но даже и хрис­тианином, и тем не менее он потратил несколько десятилетий

    на русский перевод Евангелий, который изгонял из них всю мифологию с ее чудесами и сводился только к проповеди абстрак­тной моралистики.

    6. Природа, общество и весь мир как царство символов. Всякая вещь есть нечто, и всякая реальная вещь есть нечто существующее. Быть чем-нибудь — значит отличаться от всякого другого, а это значит иметь те или другие признаки. То, что не имеет’ признаков, вообще не есть нечто, по крайней мере для сознания и мышления, т. е. есть ничто, то есть не существует. Но сумма признаков вещи еще не есть вся вещь. Вещь — носитель признаков, а не самые признаки. Признак вещи указы­вает на нечто иное, чем то, что есть сама вещь. Два атома водо­рода в соединении с одним атомом кислорода есть вода. Но вода не есть ни водород, ни кислород. Эти два элемента являются при­знаками воды, но признаки эти заимствованы из другой области, чем вода. Следовательно, признаки вещи указывают на разные другие области, свидетельствуют о существовании этих областей. Таким образом, каждая вещь существует только потому, что она указывает на другие вещи, и, без этой взаимосвязанности еще не существует вообще никакая отдельная вещь. Чем больше вещей отражает на себе данная вещь, тем она осмысленно глубже, состоя­тельнее и самостоятельнее. Поэтому даже самая примитивная и элементарная вещь, не говоря уже об ее научном представле­нии, возможна только при наличии символических функций на­шего сознания, без которых вся эмпирическая действительность рассыпается на бесконечное множество дискретных и потому в смысловом отношении не связанных между собой вещей.

    Особенно важно отметить то, что всякая вещь, имеющая хождение в человеческом обществе (а другого общества мы не знаем), всегда есть тот или иной сгусток человеческих отно­шений, хотя сама по себе, в отвлеченном смысле, она есть суб­станция, независимая от человека. Все, например, с чем мы имеем дело в быту (дом, комната, шкаф, стол, стул, посуда), ког­да-то было сырым материалом дерева, камней, минералов, хи­мических элементов. Но все это когда-то кем-то как-то для чего-то и для кого-то было привезено на фабрику или завод, в какую-нибудь мастерскую ил»: лабораторию, было привезено на рынок, было продано или куплено, вошло в человеческий быт, разру­шалось и восстанавливалось, служило орудием для домашнего хозяйства, для общественного пользования и для государствен­ного учреждения. Словом, нет такой вещи, которая не была бы сгустком человеческих отношений, то есть, другими словами, тем или другим символом этих отношений.

    Но даже и явления природы, не изготовленные и не офор­мленные человеком, а существующие до всякого человека и без

    его трудовых усилий, все это звездное небо, земная атмосфера и три царства природы все равно воспринимаются человеком и используются им в зависимости от его исторического раз­вития, социального положения и общественной значимости. Одним способом воспринимаем мы звездное небо теперь, другим образом понимали его сто или двести лет назад, а еще иначе — две или три тысячи лет назад. От чего же зависят все эти картины миро­здания? Все они суть разные символы человеческой культуры, то есть опять-таки символы в качестве сгустков человеческих отношений данного времени и данного места.

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

    Итак, природа, общество и весь мир, чем они глубже воспри­нимаются и изучаются человеком, тем более наполняются разно­образными символами, получают разнообразные символические функции, хотя сами по себе и объективно они вовсе не являются только нашими символами. При этом здесь мы вовсе не имеем в виду обязательно ученых, философов, художников и вообще тех, для которых мышление и творчество стало духовной профес­сией. Необходимо категорически утверждать, что без использова­ния символических функций сознания и мышления невозможно вообще никакое осмысленное сознание вещей, как бы оно прими­тивно ни было.

    7. Человечески-выразительные символы. Из указанных только что предметов природы и общества особенное значение имеет, конечно, человек и свойственная ему чисто человеческая символи­ка. Прежде всего, человек вольно или невольно выражает внеш­ним образом свое внутреннее состояние, так что его внешность в той или иной мере всегда символична для его внутреннего состо­яния. Люди краснеют в моменты переживания стыда, гнева и вся­кого рода страстей или эмоций. Они бледнеют от страха и ужа­са, синеют от холода, бледнеют, желтеют и чернеют от болезней. Моральные тенденции, если не приняты серьезные противо-меры, обычно тоже выражаются в разных физических символах.

    Скромные говорят нормальным голосом, не очень его повышая и не очень понижая, внешне ведут себя сдержанно, не задирают носа, не сжимают кулаков, не бранятся и не ругаются, разгова­ривают приветливо и предупредительно. Нахалы часто повышают голос или неестественно его понижают, перебивают слова своего собеседника, выражают свое превосходство или презрение к дру­гим, кричат, орут, визжат, пищат, лают. Однако и независимо от психического состояния имеется бесконечное количество разных символов характера, этнографический, антропологический и гео­графический.

    Физические особенности человеческого организма изучаются многими науками в качестве признаков той или иной массовой принадлежности. Люди обладают разным цветом кожи, разным строением черепа, рук и ног, разрезом глаз, строением носа. Су­ществуют носы греческие, римские, еврейские, славянские, армян­ские, грузинские. Все эти особенности человеческого организма достаточно подробно изучаются в антропологии, этнографии и ге­ографии. Для нас здесь важно только то, что всякий такой физи­ческий признак не есть просто признак или свойство, который имел бы значение сам по себе или имел случайное происхождение. Все это — бесконечно разнообразные символы той или другой челове­ческой общности, несущие с собой огромную смысловую нагруз­ку, изучаемую в специальных науках.

    8. Идеологические и побудительные символы. Их стоит выделить в отдельную группу потому, что большинство из вышена­ званных символов обладает теоретическим характером, в то время как идеологические символы не только предполагают ту или иную
    теорию или идею, но и практическое их осуществление и, что особенно важно, общественное назначение. Идеал, девиз, план, проект, программа, решение, постановление, лозунг, при­зыв, воззвание, пропаганда,’ агитация, афиша, плакат, пароль, кличка, указ, приказ, команда,’ закон, конституция, делегат, посол, парламентер — все подобного рода понятия являются не просто теоретически построенными идеями, имеющими абст­ рактное назначение, но это такого рода идеи и понятия, которые насыщены и заряжены большой практической силой и с точки зрения логики тоже являются символами, поскольку каждая такая конструкция есть порождающий принцип общественного действия и метод осуществления бесконечного ряда общественно-исторических фактов.

    9. Внешне-технический символ. Этот тип символа, несмотря на свой прикладной и подсобный характер, обладает всеми чертами того общественного символа, который мы формулировали в предыдущем. А именно он, прежде всего, является принци­
    пом осуществления ряда действий и, лучше сказать, бесконеч-

    ного ряда действий. Такого рода символ имеет много разных под­видов, из которых укажем на два. Имеются подражательные и нейтральные (или диспаратные) по своему содержанию сим­волы — знаки.

    Движение дирижера или изображение полевых работ в тан­це — примеры подражательных внешне-технических символов, хо­тя здесь внешне-техническая структура соединена уже с художест­венной структурой. Движения дирижера являются символически­ми знаками исполняемого музыкального произведения. Подобного рода символов-знаков бесчисленное количество в бытовой жизни, так же как и нейтральных. Таковы: жезл милиционера, управ­ляющего уличным движением, его же свисток как знак како­го-нибудь уличного события или движения; фары и гудки авто­машин, колокол пожарной машины; сирена как знак воздушной тревоги во время войны, звонок в начале или в конце занятий; белый флаг как знак перемирия, фабрично-заводские гудки; апло­дисменты и соответствующие голоса или крики при одобрении происходящего, а также при его порицании — свист, топот ногами и разные другие подобного рода голоса или крики; снимание шля­пы при встрече или прощании, поклоны, рукопожатия, реверан­сы, пристукивание каблуками, звяканье шпорами у военных старо­го времени, поцелуи, а также целование мужчинами руки у дам для этикета; цветы в разные значительные моменты жизни (рождение ребенка, годовщина дня рождения, бракосочетание, выступление крупных деятелей в разных областях жизни, всякого рода праздники и приветствия, начало и конец всякого рода предприятий» или мероприятий, успех и достижение в разных областях, юбилеи, смерть и погребение); выкрики продав­цов или старьевщиков; буквы и др. символы как знаки звуков или речи вообще (между прочим, когда говорят о символической логике, то имеют в виду именно такие символы в простейшем внешне-техническом смысле, желая обозначить логические про­цессы при помощи букв или других знаков); буквы и другие знаки как обозначения математических величин или действий над ними, безмолвный кивок головой как знак утверждения или отрицания; разные ‘звуки вроде звонка или голоса кукушки, издаваемые часами для указания на соответствующий момент времени; военные салюты и отдавание чести военнослужащими, свирели пастухов, звонки у парадного входа или в деловых ка­бинетах, позывные радио; «цып-цып», «гуль-гуль», «куть-куть», «кис-кис», «брысь» и прочие междометия, как знаки обращения с животными.

    Относительно всех этих бесконечно разнообразных символов, которые мы назвали внешне-техническими, необходимо заметить, что они отнюдь не обладают какой-нибудь постоянной и неподвижной значимостью, но в зависимости от обстановки приобретают то более внешнее, то более внутреннее содержание. Можно даже сказать, что между внешним обозначением предмета, которое, в нашем смысле слова, даже вовсе не является смыслом, а толь­ко внешним и случайным знаком, и между самыми настоящими символами крайнего смыслового наполнения и напряжения су­ществует непрерывная линия развития, в которой почти всегда можно наметить бесконечно разнообразные промежуточные зве­нья. Однако это уже относится к области конкретного изучения символических функций в конкретной общественно-исторической и личной обстановке, в контексте специальной ситуации данного момента, которую заранее даже трудно себе представить и тем более формулировать.

    XVI. Функции типов символов

    Функции, предоставляемые этим расширением, проверяют, попадает ли данный символ или строка в определённый класс в соответствии с текущими локальными установками/locale (см. также setlocale() ).

    При вызове с целочисленным аргументом эти функции ведут себя точно так же, как их С-аналоги из «ctype.h».

    При вызове со строковым аргументом они проверяют каждый символ строки и возвращают TRUE только в том случае, если каждый символ строки соответствует запрошенному критерию.

    Передача чего-нибудь другого, кроме строки или integer, немедленно возвратит FALSE .

    Ничего помимо функций из стандартной С-библиотеки, которая всегда доступна.

    Начиная с PHP 4.2.0, эти функции доступны по умолчанию. Для более старых версий вы должны сконфигурировать и откомпилировать PHP с опцией —enable-ctype .

    Это расширение не определяет никаких директив конфигурации.

    Это расширение не определяет никакие типы ресурсов.

    Это расширение не определяет никаких констант.

    Содержание ctype_alnum — проверяет алфавитно-цифровые символ(ы) ctype_alpha — проверяет алфавитные символ(ы) ctype_cntrl — проверяет управляющие символ(ы) ctype_digit — проверяет цифровые символ(ы) ctype_graph — проверяет печатаемые символ(ы), кроме space ctype_lower — проверяет символ(ы) в нижнем регистре ctype_print — проверяет печатаемые символ(ы) ctype_punct — проверяет любые печатаемые символы, кроме пробельных и алфавитно-числовых ctype_space — проверяет пробельные символ(ы) ctype_upper — проверяет символ(ы) в верхнем регистре ctype_xdigit — проверяет символ(ы), представялющие 16-ричные числа


    Назад Оглавление Вперёд
    cyrus_unbind Вверх ctype_alnum

    © 2006-2012 Веб-мастер Борисов Виктор Александрович

    Введение

    Функции, предоставляемые этим расширением, проверяют, попадает ли данный символ или строка в определённый класс в соответствии с текущими локальными установками/locale (см. также setlocale() ).

    При вызове с целочисленным аргументом эти функции ведут себя точно так же, как их С-аналоги из «ctype.h».

    При вызове со строковым аргументом они проверяют каждый символ строки и возвращают TRUE только в том случае, если каждый символ строки соответствует запрошенному критерию.

    Передача чего-нибудь другого, кроме строки или integer, немедленно возвратит FALSE .

    Требования

    Ничего помимо функций из стандартной С-библиотеки, которая всегда доступна.

    Установка

    Начиная с PHP 4.2.0, эти функции доступны по умолчанию. Для более старых версий вы должны сконфигурировать и откомпилировать PHP с опцией —enable-ctype .

    Это расширение не определяет никаких директив конфигурации.

    Типы ресурсов

    Это расширение не определяет никакие типы ресурсов.

    Предопределённые константы

    Это расширение не определяет никаких констант.

    Илон Маск рекомендует:  Как выбрать робот-пылесос. Лучшие модели с AliExpress. Отзывы
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL