Что такое каретка в программировании
Перейти к содержимому

Что такое каретка в программировании

  • автор:

Каретка

Каретка - определение в компьютерном словаре

2. Кареткой называют символ циркумфлекс (^), этот символ находится на одной клавише с цифрой 6 на всех стандартных QWERTY-клавиатурах. На рисунке справа показан пример того как может выглядеть каретка. Чтобы набрать этот символ переключитесь на английский язык и, удерживая клавишу Shift, нажмите цифру 6.

Символ каретка в математике

В математике каретка используются как символ возведения в степень. Например, 2^3 может быть представлено как 2 3 или 2*2*2.

Использование каретки в программировании

В языках С, С++, Java, C# и других каретка обозначает XOR (исключающее ИЛИ).

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

Каретка в чатах

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

3. В некоторых документациях символ каретки может обозначать клавишу Ctrl. Например, если написано «нажмите ^V» это значит нажать сочетание клавиш Ctrl+V.

Каретка (не курсор)

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

Функции работы с кареткой

Здесь перечислены пять основных функций работы с кареткой:

• CreateCaret — создает связанную с окном каретку.

• SetCaretPos — устанавливает положение каретки в окне.

• ShowCaret — показывает каретку.

• HideCaret — прячет каретку.

• DestroyCaret — удаляет каретку.

Кроме этих, еще имеется функция получения положения каретки ( GetCaretPos ) и функции установки и получения частоты мигания каретки ( GetCaretBlinkTime ) и ( SetCaretBlinkTime ).

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

Вы не можете просто создать каретку при обработке сообщения WM_CREATE и удалить ее при обработке сообщения WM_DESTROY. Каретка — это то, что называется «общесистемным ресурсом» (systemwide resource). Это означает, что в системе имеется только одна каретка. И, как результат, программа при необходимости вывода каретки на экран своего окна «заимствует» ее у системы.

Серьезно ли это необычное ограничение? Конечно нет. Подумайте: появление каретки в окне имеет смысл только в том случае, если окно имеет фокус ввода. Каретка показывает пользователю, что он может вводить в программу текст. В каждый конкретный момент времени только одно окно имеет фокус ввода, поэтому для всей системы и нужна только одна каретка.

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

Основное правило использования каретки выглядит просто: оконная процедура вызывает функцию CreateCaret при обработке сообщения WM_SETFOCUS и функцию DestroyCaret при обработке сообщения WM_KILLFOCUS.

Имеется несколько других правил: каретка создается скрытой. После вызова функции CreateCaret , оконная процедура должна вызвать функцию ShowCaret , чтобы сделать каретку видимой. В дополнение к этому, оконная процедура, когда она рисует в своем окне при обработке сообщения, отличного от WM_PAINT, должна скрыть каретку, вызвав функцию HideCaret . После того как оконная процедура закончит рисовать в своем окне, она вызывает функцию ShowCaret , чтобы снова вывести каретку на экран. Функция HideCaret имеет дополнительный эффект: если вы несколько раз вызываете HideCaret , не вызывая при этом ShowCaret , то чтобы каретка снова стала видимой, вам придется такое же количество раз вызвать функцию ShowCaret .

Программа TYPER

Программа TYPER, представленная на рис. 5.5, объединяет вместе многое из того, о чем мы узнали в этой главе. Программу TYPER можете считать сильно устаревшим текстовым редактором. Вы можете набрать в окне текст, перемещая курсор (имеется ввиду каретка) по экрану с помощью клавиш управления курсором (или клавишами управления кареткой?), и стереть содержимое окна, нажав <Esc>. Окно также очистится при изменении размеров окна. Здесь нет ни прокрутки, ни поиска и замены, ни возможности сохранять файлы, ни контроля правописания, но это только начало.

Для простоты в программе TYPER используется фиксированный шрифт. Создание текстового редактора для пропорционального шрифта является, как вы могли бы сообразить, гораздо более трудным делом. Программа получает контекст устройства в нескольких местах: при обработке сообщений WM_CREATE, WM_KEYDOWN, WM_CHAR и WM_PAINT. Каждый раз при этом для выбора фиксированного шрифта вызываются функции

GetStockObject и SelectObject .

При обработке сообщения WM_SIZE программа TYPER рассчитывает ширину и высоту окна в символах и хранит эти значения в переменных cxBuffer и cyBuffer . Затем она использует функцию malloc , чтобы выделить буфер для хранения всех символов, которые могут быть напечатаны в окне. В переменных xCaret и yCaret сохраняется положение каретки в символах.

При обработке сообщения WM_SETFOCUS программа TYPER вызывает функцию CreateCaret для создания каретки, имеющей ширину и высоту символа, функцию SetCaretPos для установки положения каретки и функцию ShowCaret , чтобы сделать каретку видимой. При обработке сообщения WM_KILLFOCUS программа вызывает функции HideCaret и DestroyCaret .

Каретка — Caret

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

Подобный знак имеет множество не связанных между собой применений в программировании, математике и других контекстах. Символ ^ был включен в клавиатуру пишущих машинок и компьютеров, так что акценты с циркумфлексом можно было наложить на буквы (как в ŵ). Эта возможность не предусмотрена как стандарт для типичных настроек клавиатуры США, поэтому символ стал повторно использоваться в компьютерных языках для многих других целей. Неправильное употребление «каретка» часто применяется к символу с циркумфлексом в этом контексте из-за его сходства со знаком корректуры для вставки. На этой странице этот символ будет называться «циркумфлексом», чтобы отличать его от настоящего символа вставки. Этот циркумфлекс не следует путать с другими знаками в форме шеврона, такими как циркумфлекс с диакритическими знаками, с преобразованием v или логическим И, которые иногда могут быть

Содержание

  • 1 Использует
    • 1.1 Знак корректуры
    • 1.2 Языки программирования
    • 1.3 Суррогатный символ для надстрочного индекса и возведения в степень
    • 1.4 Символ перехода
    • 1.5 Порядковый индикатор
    • 1.6 Стрелка, направленная вверх

    Использует

    Знак корректуры

    Изначально вставка была и продолжает использоваться в рукописной форме в качестве знака корректуры, чтобы указать, где в документе следует вставить знак препинания, слово или фразу. Термин происходит от латинского карет «не хватает», от carēre — «не хватать; быть отделенным от; быть свободным от». Символ вставки пишется под строкой текста для знака препинания на уровне строки, например запятой, или над строкой в ​​виде перевернутой вставки (см. U + 02C7 ˇ CARON ) для более высокого символа, такого как апостроф ; вставляемый материал может быть размещен внутри каретки, на полях или над линией.

    Каретка, указывающая читателю вставить запятую, апостроф и кавычки

    Каретка, указывающая читателю вставить букву

    Каретка, указывающая читателю вставить слово

    Каретка, указывающая читателю, что нужно изменить слово

    Языки программирования

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

    ANSI C может транскрибировать циркумфлекс в виде триграфа ?? ‘ , поскольку изначально этот символ был доступен не во всех наборах символов и на всех клавиатурах. C ++ дополнительно поддерживает токены, такие как xor (для ^ ) и xor_eq (для ^ = ), чтобы избежать характер в целом. рекомендует при необходимости расшифровывать символ как орграф ‘> .

    Паскаль использует циркумфлекс для объявления и разыменования указателей. В Smalltalk циркумфлекс является оператором возврата метода. В C ++ / CLI доступ к ссылочным типам.NET осуществляется через дескриптор с использованием синтаксиса ClassName ^ . В расширениях C Apple для Mac OS X и iOS циркумфлекс используется для создания блоков и для обозначения типов блоков. Go использует его как побитовый оператор НЕ.

    Node.js использует циркумфлекс в файлах package.json для обозначения поведения разрешения зависимостей, используемого для каждой конкретной зависимости. В случае Node.js циркумфлекс допускает любое обновление, если только оно не рассматривается как «основное» обновление, как определено в semver.

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

    в математика, циркумфлекс может обозначать возведение в степень ( 3 ^ 5 вместо 3), где обычный надстрочный индекс использовать нелегко (как на некоторых графические калькуляторы ). Он также используется для обозначения надстрочного индекса при наборе TeX. Как Исаак Азимов описал это в 1974 году в своей книге «Skewered!» эссе (на номер Скьюза ): «Я делаю экспоненту фигурой нормального размера, и это как если бы она удерживалась рычагом, и ее дополнительный вес, когда ее размер увеличивается, сгибает рычаг вниз. » Использование циркумфлекса для возведения в степень можно проследить до АЛГОЛА 60, в котором оператор возведения в степень выражался стрелкой, направленной вверх, предназначенной для обозначения надстрочного индекса, распространенного в математике. Стрелка, направленная вверх, теперь используется для обозначения гиперопераций в нотации стрелки вверх Кнута.

    escape-символ

    Часто отображается как нотация курсора для отображения управляющие символы, например ^ A означает управляющий символ со значением 1.

    Интерпретатор командной строки cmd.exe Windows использует циркумфлекс для escape зарезервированные символы (в большинстве других оболочек используется обратная косая черта ). Например, чтобы передать знак «меньше» в качестве аргумента программе, вы вводите ^ .

    Индикатор порядкового номера

    В итальянском языке циркумфлекс иногда используется аналогично индикатору порядкового номера, наиболее заметно на билетах Trenitalia, основного оператора поездов в Италии, и римской системы общественного транспорта ATAC. В билетах Trenitalia класс путешествия часто обозначается как 1 ^ или 2 ^, что означает первый класс или второй класс соответственно. Это связано с отсутствием указателя женского рода порядкового номера ª, используемого в итальянском языке в (до Unicode) в наборе символов ISO Latin 1 (указатель мужского порядкового номера º обычно заменяется знак градуса при отсутствии расширенных символов или при менее точном наборе).

    Стрелка, указывающая вверх

    В интернет-форумах, социальных сетях, таких как Facebook, или в онлайн-чатах, циркумфлекс или их ряд могут использоваться под или после публикации одного пользователя другим пользователем. В этом случае циркумфлекс ^ представляет собой направленную вверх стрелку, означающую для читателей, плакаты или исходное сообщение (OP), чтобы увидеть указанную выше строку / сообщение, и в дополнение к Использование стрелки также может означать, что пользователь, разместивший ^, согласен с вышеуказанным сообщением. Множественные циркумфлексы могут указывать на то, что комментарий является ответом на указанное выше сообщение или относится к нему, который коррелирует с количеством используемых циркумфлексов, или чтобы «подчеркнуть» правильную часть предыдущего сообщения, или может просто использоваться для выделения.

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

    Кодирование исторических компьютерных систем

    Исходная версия стандарта ASCII 1963 года зарезервировала кодовую точку 5E шестнадцатеричный для стрелки вверх ↑. Однако стандарт 1965 года ECMA-6 заменил стрелку вверх на диакритический знак с циркумфлексом ^, а два года спустя последовала вторая редакция ASCII. Поскольку первые мэйнфреймы и миникомпьютеры в основном использовали телепринтеры в качестве устройств вывода, при необходимости можно было печатать циркумфлекс над буквой. Однако с распространением мониторов этого оказалось недостаточно, и предварительно составленные символы с включенным диакритическим знаком вместо этого были введены в добавляемые наборы символов, такие как Latin-1 и впоследствии Unicode. Исходный символ циркумфлекса был оставлен для других целей, и, поскольку он больше не должен помещаться над буквой, он стал больше по внешнему виду.

    Зачем ввели такое понятие как "каретка" в программирование? [закрыт]

    Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение.

    Закрыт 3 года назад .

    Это же деталь в старых пишущих машинках.

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

    Дополнение: Вот здесь можно посмотреть картинки, и даже нашлось видео.

    freim's user avatar

    Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.13.43307

    Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *