Инструменты пользователя

Инструменты сайта


bb:redbook:201

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
bb:redbook:201 [2016/04/15 17:28]
prospero78 [1. Взаимодействие с пользователем]
bb:redbook:201 [2020/10/29 07:08] (текущий)
Строка 4: Строка 4:
 По примерам из других частей уже известно как //выводить// данные на экран. Выводился и текст, и целые, и дробные числа. Но в программах не было ни разу использования //ввода//, хотя в реальных программах оно используется постоянно. Настал момент, когда необходимо устранить этот недостаток, для успешного продолжения. Потоки ввода/вывода являются //абстракцией//, и на каких компьютерах (домашних, рабочих) есть и клавиатура, и мышь, и экран, и принтер — множество каналов ввода и вывода. А на других компьютерах (промышленные, сервисные, регулирующие) этих каналов ввода/вывода нет, зато есть вводы от датчиков и выходы на исполнительные механизмы. И у них свои потребности в воде/выводе. Поэтому такой операции, как ''print'' в **python** — у **КП** //нет//. Все подобные операции вынесены в //отдельные// подсистемы. И во многом — это //положительно//. Ведь если что-то в языке может вполне оказаться необязательным, зачем его утяжелять? В любом случае, необходимую подсистему всегда можно либо установить, либо создать самому. По примерам из других частей уже известно как //выводить// данные на экран. Выводился и текст, и целые, и дробные числа. Но в программах не было ни разу использования //ввода//, хотя в реальных программах оно используется постоянно. Настал момент, когда необходимо устранить этот недостаток, для успешного продолжения. Потоки ввода/вывода являются //абстракцией//, и на каких компьютерах (домашних, рабочих) есть и клавиатура, и мышь, и экран, и принтер — множество каналов ввода и вывода. А на других компьютерах (промышленные, сервисные, регулирующие) этих каналов ввода/вывода нет, зато есть вводы от датчиков и выходы на исполнительные механизмы. И у них свои потребности в воде/выводе. Поэтому такой операции, как ''print'' в **python** — у **КП** //нет//. Все подобные операции вынесены в //отдельные// подсистемы. И во многом — это //положительно//. Ведь если что-то в языке может вполне оказаться необязательным, зачем его утяжелять? В любом случае, необходимую подсистему всегда можно либо установить, либо создать самому.
 ==== 2. Модуль In ==== ==== 2. Модуль In ====
-В БлэкБоксе определено множество подсистем и модулей, и модуль "Inкак раз предназначен для ввода информации. Более того, на самом деле этот модуль лишь побочный продукт — он обеспечивает возможность исполнения примеров книги написанной Никлаусом Виртом в соавторстве с Райзером "Программирование на Обероне" (родственный язык КП). Какие определены переменные и структуры в модуле In:+В **БлэкБоксе** определено множество подсистем и модулей, и модуль ''In'' как раз предназначен для ввода информации. Более того, на самом деле этот модуль лишь //побочный// продукт — он обеспечивает возможность исполнения примеров книги написанной **Никлаусом Виртом** в соавторстве с **Райзером** "Программирование на Обероне" (родственный язык **КП**). Какие определены переменные и структуры в модуле ''In'':
  
-VAR Done-: BOOLEAN; единственная доступная переменная, доступна только для чтения ("Done-"). Устанавливается в значение TRUE при успешном открытии потока на чтение. И устанавливается в FALSE при первом неудачном чтении входного потока, и остаётся в этом значении до момента повторного открытия потока на чтение.+''VAR Done-: BOOLEAN;'' единственная доступная переменная, доступна только для чтения (''Done-''). Устанавливается в значение ''TRUE'' при успешном открытии потока //на чтение//. И устанавливается в ''FALSE'' при первом неудачном чтении входного потока, и остаётся в этом значении до момента повторного открытия потока на чтение.
  
-PROCEDURE Open. Эта процедура открывает входной поток. В BlackBox, входной поток открывается на ту точку, которая в фокусе ввода содержит текст (например, текст выделен). Если нет точки фокуса ввода, или если он не содержит текста переменная Done устанавливается в FALSE. Если есть цель фокусировки, содержащая текст, но при этом ничего не выбрано, входной поток соединяется с началом этого текста, в противном случае ввод начинается с начала выделения.+''PROCEDURE Open''. Эта процедура открывает //входной// поток. В **BlackBox**, входной поток открывается на ту точку, которая в //фокусе ввода// содержит текст (например, текст выделен). Если нет точки фокуса ввода, или если он не содержит текста переменная ''Done'' устанавливается в ''FALSE''. Если есть цель фокусировки, содержащая текст, но при этом ничего не выбрано, входной поток соединяется с началом этого текста, в противном случае ввод начинается с начала выделения.
  
-PROCEDURE Char (OUT ch: CHAR). Если переменная Done удерживается в TRUE, эта процедура пытается считать символ, в противном случае она ничего не делает.+''PROCEDURE Char (OUT ch: CHAR)''. Если переменная ''Done'' удерживается в ''TRUE'', эта процедура пытается считать символ, в противном случае она ничего не делает.
  
-PROCEDURE Int (OUT i: INTEGER). Если переменная Done удерживается в TRUE, эта процедура пытается считать число INTEGER в переменную "i(определена, как переменная, которую процедура может изменять — OUT), в противном случае она ничего не делает.+''PROCEDURE Int (OUT i: INTEGER)''. Если переменная ''Done'' удерживается в ''TRUE'', эта процедура пытается считать число ''INTEGER'' в переменную ''i'' (определена, как переменная, которую процедура может изменять — ''OUT''), в противном случае она //ничего// не делает.
  
-PROCEDURE LongInt (OUT l: LONGINT). Если переменная Done удерживается в TRUE, эта процедура пытается считать число LONGINT в перменную "i"" (определена, как переменная, которую процедура может изменять — OUT), в противном случае она ничего не делает.+''PROCEDURE LongInt (OUT l: LONGINT)''. Если переменная ''Done'' удерживается в ''TRUE'', эта процедура пытается считать число ''LONGINT'' в переменную ''i'' (определена, как переменная, которую процедура может изменять — ''OUT''), в противном случае она //ничего// не делает.
  
-PROCEDURE Real (OUT x: REAL). Если переменная Done удерживается в TRUE, эта процедура пытается считать число REAL в перменную "x(определена, как переменная, которую процедура может изменять — OUT), в противном случае она ничего не делает.+''PROCEDURE Real (OUT x: REAL)''. Если переменная ''Done'' удерживается в ''TRUE'', эта процедура пытается считать число ''REAL'' в переменную ''x'' (определена, как переменная, которую процедура может изменять — ''OUT''), в противном случае она //ничего// не делает.
  
-PROCEDURE Name (OUT name: ARRAY OF CHAR). Если переменная Done удерживается в TRUE, эта процедура пытается считать идентификатор в переменную "name (определена, как переменная, которую процедура может изменять — OUT, причём переменная в виде массива литер), в противном случае она ничего не делает. Имя переменной представляет собой последовательность допустимых идентификаторов Компонентный Паскаль сцепленных точками, например, "Dialog.Beep".+''PROCEDURE Name (OUT name: ARRAY OF CHAR)''. Если переменная ''Done'' удерживается в ''TRUE'', эта процедура пытается считать идентификатор в переменную ''name''  (определена, как переменная, которую процедура может изменять — ''OUT'', причём переменная в виде массива литер), в противном случае она ничего не делает. Имя переменной представляет собой последовательность допустимых идентификаторов **Компонентный Паскаль** сцепленных точками, например, ''Dialog.Beep''.
  
-PROCEDURE String (OUT str: ARRAY OF CHAR). Если переменная Done удерживается в TRUE, эта процедура пытается считать строку, в противном случае она ничего не делает. Строка представляет собой последовательность символов, разграниченных пробелами (например: перевод строки, возврат каретки, табуляции) или двойные кавычки ""). [↑] +''PROCEDURE String (OUT str: ARRAY OF CHAR)''. Если переменная ''Done'' удерживается в ''TRUE'', эта процедура пытается считать строку, в противном случае она ничего не делает. Строка представляет собой последовательность символов, разграниченных пробелами (например: перевод строки, возврат каретки, табуляции) или двойные кавычки "").
- +
- +
 ==== 3. Заключение ==== ==== 3. Заключение ====
-Как видно из описания модуля, на ввод могут подаваться различные данные, и даже команды, которыми можно влиять на состояние BlackBox. Модуль In следует идеологии "текст как интерфейс". Частично с этой идеологией уже можно было столкнуться на страницах этого учебника, и при самостоятельном вводе и исполнении программ. Например, КОММАНДЕР как раз является типичным представителем идеологии "текст как интерфейс", составные документы учебника, примеры из которых Блэкбокс способен вычленить из текста и картинок — тоже пример идеологии "текст как интерфейс"[↑] +Как видно из описания модуля, на ввод могут подаваться //различные// данные, и даже //команды//, которыми можно влиять на состояние **BlackBox**. Модуль ''In'' следует идеологии "текст как интерфейс". Частично с этой идеологией уже можно было столкнуться на страницах этого учебника, и при самостоятельном вводе и исполнении программ. Например, ''КОММАНДЕР'' как раз является типичным представителем идеологии "текст как интерфейс", составные документы учебника, примеры из которых **Блэкбокс** способен вычленить из текста и картинок — тоже пример идеологии "текст как интерфейс".
- +
-[ ← Назад  ] [ Вверх ↑ ] [ Далее → ]+
bb/redbook/201.1460730524.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)