Помощь в учёбе, очень быстро...
Работаем вместе до победы

Операторы. 
Программные средства систем первичной обработки информации

РефератПомощь в написанииУзнать стоимостьмоей работы

Операторы описания Операторы присваивания предназначены для описания переменных. В них указывается имя, тип, размер и возможно адрес, по которому будет размещена переменная. Для любого типа имеется свой оператор описания. Имя переменной должно быть уникальным, то есть отличатся от имен других операторов, функции и процедур. В скобках указывается максимальное значение индекса (размер переменной… Читать ещё >

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

Различаю следующие группы операторов: описания, присваивания, управления, описания и вызова процедур, обработки прерываний, ввода/вывода, дополнительные (работа с таймером и аппаратурой КАМАК).

Операторы описания Операторы присваивания предназначены для описания переменных. В них указывается имя, тип, размер и возможно адрес, по которому будет размещена переменная. Для любого типа имеется свой оператор описания. Имя переменной должно быть уникальным, то есть отличатся от имен других операторов, функции и процедур. В скобках указывается максимальное значение индекса (размер переменной -1). Через двоеточие, когда необходимо, указывается восмиричный адрес. Максимальное значение переменной и её адрес необязательны. По умолчанию значение индекса равно 0, а адрес выбирается произвольно транслятором в соответствии области ОП.

Операторы присваивания:

  • 1. INT — описывает целые переменные. Максимальный размер переменной 32 768.
  • 10 INT L (99), LIST (255)
  • 20 INT RRK (6): 177 400
  • 2. REAL — описывает вещественные переменные. Максимальный размер переменной 16 384.
  • 15 REAL X, Y, LAMBDA (200)
  • 3. BYTE — описывает байтовые переменные. Максимальный размер переменной 32 768.
  • 25 BYTE MAS (50) LINE (15)

Операторы присваивания Данные операторы записываются в виде:

=.

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

70 X1 = (-B+SQRT (B*B-4*A*C)) / (2*A).

Оператора управления Оператор IF.

Он служит для условного выполнения некоторой последовательности операторов. Этот оператор является началом одноименной конструкции, которая должна обязательно заканчиваться оператором ENDI. Данная конструкция может содержать операторы ELSIF и ELSE. В общем случае конструкция имеет следующий вид:

IF THEN.

операторы.

[ELS IF THEN.

операторы … ].

[ELSE операторы].

ENDI.

Конструкция IF соответствует следующей блок-схеме:

Операторы. Программные средства систем первичной обработки информации.

А) ELSE, ELS, IF — отсутствуют.

Операторы. Программные средства систем первичной обработки информации.
  • Б) ELSIF отсутствует
  • В)
Операторы. Программные средства систем первичной обработки информации.

Оператор ELSIF.

Он может встречаться неограниченное число раз, а также может встречаться один раз.

Пример:

  • 110 IF A = `Да' THEN
  • 120 `Обработка ответа 'Да'
  • 130 ELSIF A = `Нет' THEN
  • 140 `Обработка ответа 'Нет'
  • 150 ELSE
  • 160 'обработка ошибочного ответа
  • 170 ENDI

Оператор WHILE.

Он служит для условного повторения некоторой последовательности операторов. Условие повторения проверяется до выполнения последовательности операторов. Оператор WHILE является началом одноименной конструкции, которая заканчивается ENDW. Конструкция имеет вид:

WHILE операторы ENDW.

Рис. 3.

Рис. 3.

Оператор REPEAT UNTIL.

Этот оператор выполняет те же функции, что и WHILE. Условие повторения проверяется после выполнения последовательности операторов. Оператор REPEAT является началом одноименной конструкции, которая заканчивается оператором UNTIL.

Структура:

REPEAT.

Операторы.

UNTIL.

Рассмотрим пример использования такой конструкции:

Пусть имеется массив А, содержащий N элементов, и число х. Требуется найти индекс I элемента, при котором А (I)=х, 1 I N. Если такого I нет, то возвращается I = 0.

  • 100 A (0) = X
  • 110 I = N — 1
  • 120 REPEAT
  • 130 I = I — 1
  • 140 UNTIL A (I) = X

Оператор LOOP.

Этот оператор служит для безусловного повторения некоторой последовательности операторов. Он является началом одноименной конструкции, которая должна заканчиваться оператором ENDL и может содержать произвольное количество операторов EXIT.

Конструкция: LOOP.

Операторы [EXIT].

Операторы ENDL.

Конструкция LOOP — это объединение конструкции WHILE и REPEAT. Любой оператор EXIT, встречающийся в конструкции приводит к переходу на оператор следующий за оператором ENDL.

Оператор FOR.

Этот оператор служит для повторения некоторой последовательности операторов, заданное определенное число раз. При любом повторении некоторая переменная, называется переменной цикла. Переменная, которая уменьшается или увеличивается на определенное значение, называется шагом. Оператор FOR является началом одноименной конструкции, которая должна обязательно заканчиваться оператором ENDF. Рассмотрим два варианта этой конструкции:

1. Увеличение.

FOR V = A1 TO A2 [STEPA3].

Операторы ENDF.

Данная конструкция эквивалента.

V = A1.

WHILE V <= A2.

операторы.

V = V + A3.

ENDW.

2. Уменьшение.

FOR V = A1 DOWN TO A2 [STEPA3].

Операторы ENDF.

Данная конструкция эквивалента.

V = A1.

WHILE V >= A2.

операторы.

V = V — A3.

ENDW.

В рассмотренных примерах V — переменная цикла, А1 и А2 — начальное и конечное значение переменной, А3 — шаг.

Переменная цикла должна быть простой целой. Начальное и конечное значение, а также шаг — целыми константами или переменными без индекса или с индексом, заданный константой. Если шаг не задан, то по умолчанию он считается равным 1. Если величины начального и конечного значений переменных не соответствуют варианту, например, для варианта1: А1 > A2, а для варианта 2: A2 > А1, то цикл не выполняется ни разу.

Оператор GOTO.

Он передает управление на строку. Записывается:

GOTO.

175 GOTO30.

Оператор STOP.

Прекращает выполнение программы. На терминале печатается сообщение:

STOP AT LINE N PC = A,.

где N — номер строки, в которой стоит оператор STOP, А — восьмиричный адрес, соответствующий инструкции +2. Далее управление передается монитору.

Оператор END.

Он заканчивает программу. Присутствие оператора END в программе необязательно. Если он отсутствует, трансляция заканчивается на строке с набольшим номером.

Операторы описания и вызова процедур Описание процедур.

Описание процедуры содержит имя процедуры и адреса входа в процедуру. Имя процедуры также должно быть центральным. Оператор описания процедур PROC имеет вид: PROC [: ].

Первый случай: внутренние процедуры. В этом случае адрес должен отсутствовать. За оператором PROC должны следовать операторы, составляющие содержание (тело) процедуры, которая должна оканчиваться оператором END. Тело процедуры может содержать произвольное количество операторов RETURN, по которым осуществляется возврат из процедуры во время выполнения условных операторов. Операторы RETURN могут и не включатся в состав процедуры. В этом случае возврат из процедуры обеспечивает оператор ENDP. Конструкция имеет следующий вид:

PROC NAME.

Операторы [RETURN].

Операторы ENDP.

Второй случай: внешние процедуры. В этой процедуре внешний адрес должен быть обязательно задан. Оператор PROC вызывает имя процедуры с указанным адресом. В данной процедуре тело процедуры и оператор ENDP должен отсутствовать.

Вид описания следующий:

PROC NAME:

Вызов процедуры.

Он имеет вид:

NAME [P1, P2 …],.

где Р1, Р2 и так далее — параметры, которые должны быть переменными без индекса или индексом заданных константой. Для внутренних процедур, написанных на Q-2, параметры могут быть заданы, но они не передаются процедуре.

Примеры:

  • 115 PROC PL: 60 000 ! Описание внешней процедуры PLOT
  • 125 PROC INIT ! Описание внутренней процедуры INIT
  • 130 FOR I = 1 TO N!
  • 135 A (I) = 0 ! Тело процедуры
  • 140 ENDF ! /
  • 1145 INIT ! Вызов внутренней процедуры INIT
  • 2145 PL X, Y ! Вызов внешней процедуры PLOT с параметрами X, Y

Обработка прерываний Оператор ON.

Этот оператор описывает безымянную процедуру, предназначенную для обработки некоторого события. События — это прерывания по некоторому вектору или окончание программы. Когда такое событие происходит, выполнение программы прерывается и вызывается соответствующая подпрограмма обработки прерываний. После выполнения продолжается выполнение основной программы после m прерываний. Положение оператора ON в основной программе безразлично. За оператором ON должны следовать операторы, составляющие процедуру (тело процедуры), которые должны заканчиваться ENDO.

ON.

Операторы [RETURN].

Операторы ENDO.

Оператор ON имеет 2 варианта:

  • 1. ON A [PSW S]. Этот вариант предназначен для обработки прерываний по вектору А, где, А — восьмиричный адрес вектора. Адрес, А должен быть меньше 500 и делиться на четыре. Параметр PSW S является необязательным, где S — восьмиричное число, которое задает слово состояния процессора для обработки прерывания. По умолчанию S = 200. Если имеется место PSW 200, это означает, что процедура обработки прерывания не может быть прервана.
  • 2. ON STOP. Этот вариант указывает, что процедура должна быть выполнена при окончании программы пользователя, то есть когда выполнение программы заканчивается на операторах STOP и END, или последним операторе программы. Данный вариант запускается также, когда программы прерывается при помощи одновременного нажатия или фатальной ошибке. Главное назначение данного оператора состоит в запрещении прерывания от ВУ пользователя. Если при окончательной работы программы прерывания от ВУ будет продолжать возникать проблемы, то они будут обрабатываться программой пользователя во время работы монитора. Пример:
  • 100 ON 300
  • 110 BUFF (I) = DDB
  • 120 I = I+1
  • 130 ENDO
  • 140 ON STOP
  • 150 DDS = 0
  • 160 ENDO

Оператор REQUEST.

Это оператор дает возможность пользователю управлять выполнением программы прерывания с клавиатуры, не переходя к монитору. Прерывание осуществляется нажатием ESC.

REQUEST [].

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

  • 100 REQUEST 200
  • 110 LOOP

  • 190 ENDL
  • 200 REQUEST

Операторы ввода/ вывода Операторы OPEN и CLOSE служат для открытия и закрытия каналов. Операторы GET и PUT используются для формального ввода и вывода. Номер канала в операторах GET и PUT указывает, куда выводятся и откуда выводятся данные. Число номера канала задается от 1 до 8. Канал должен быть связан файлом или устройством оператором OPEN. Оператор CLOSE освобождает канал. Список в операторах GET и PUT указывает, что вводить или выводить.

Примечание: по умолчанию, если в процессе выполнения любого оператора ввода/вывода происходит ошибка, то выполнение программы прекращается и на терминал выводится сообщение. Если в операторе заданна опция +Е, то программа продолжается, а в переменную IOSW (1) записывается код ошибки.

Оператор OPEN.

Этот оператор записывается следующим образом:

OPEN [].

N создание нового файла, по умолчаниюN.

C предварительное закрытие открытого файла (по умолчаниюC).

G глобальный канал (по умолчаниюG).

E продолжение выполнения программы при наличии ошибки открытия канала (по умолчаниюE).

Файл должен быть задан или символической строчкой или переменной. Если файл задан переменной, то эта переменная должна содержать последовательность символов, заканчивающаяся кодом 0. Примеры:

  • 1100 OPEN 1'FI: INPUT. DAT'! Открытие существующего файла.
  • 1120 OPEN +N 2 'FI: INPUT. DAT'! Создание нового файла.
  • 1450 OPEN 3 'LP'! Назначение канала 3 на печатающее устройство.
  • 2000 OPEN +E +C 5 FILE

Оператор CLOSE.

CLOSE [].

G — глобальный канал (по умолчаниюG).

E — продолжение выполнения программы, при ошибке закрытия канала (по умолчаниюE).

Оператор PUT.

Структура:

PUT [] [] [].

L — перевод стоки после вывода списка (по умолчанию +L).

E — продолжение выполнения программы при ошибке вывода (по умолчанию.

— E). Если номер канала не указан, то производится вывод на терминал. Список имеет следующую структуру:

Элемент — это.

  • 1. / [//…] Перевод стоки один (или несколько) раз;
  • 2. Строка символов;
  • 3. Переменная в формате VAR[: FORMAT]. Здесь используются следующие виды форматов:

a) I[N] - целый десятичный, N — количество позиций, по умолчанию семь для целых и для байтов;

b) O[N] - целый восмиричный, N — количество позиций, аналогичных формату I[N];

c) G[N, M], F[N, M], E[N, M] - вещественные форматы, где N — количество позиций, Мколичество значащих цифр для форматов G и E и количество цифр после точки для формата F. По умолчанию N и M выбирается 15 и 7;

d) A: EXP — символьный формат. EXP — это выражение, определяющее количество байтов. По этому формату выводится последовательность байтов без преобразования.

По умолчанию для целых и байтовых переменных используется формат I, а для вещественных формат G. Если значение переменной не может быть выведено по указанному формату, то оно заменяется звездочками. При выводе по формату, А символы с кодом меньше 32 игнорируются, кроме кода 0 — символ VEOL. Оператор VEOL интерпретируется как перевод стоки. Если в операторе PUT список отсутствует, то выводится пустая стока.

Примеры:

  • 100 PUT X ! печатает Х и переводит строку
  • 120 PUTL X ! печатает Х и не переводит строку
  • 500 PUT LINE: A: N+1 ! вывод N+1 символа по формату А

Оператор GET.

GET[][][].

Опции:

Р — ввод приглашения? при вводе с терминала, по умолчанию, +Р;

F — продолжение выполнения программы, при обнаружении конца файла.

  • (-F). Если номер канала не указан, то ввод производится с терминала. Список имеет структуру аналогичную оператору PUT. В качестве элемента используется переменная в формате VAR[:FORMAT]. Используемые форматы:
    • 1. I целый десятичный. В этом формате могут выводиться любые константы
    • 2. O целый восьмиричный. В этом формате могут выводиться только восьмиричный числа
    • 3. G F E вещественные форматы. Для ввода эти все форматы эквивалентны.
    • 4. A: VAR символьный формат. Эта переменная, в которую попадает количество введенных байтов. По этому формату вводится последовательность байтов без преобразования.

По умолчанию для целых байтовых переменных используется формат I, а для вещественных — G. Когда в списке ввода задано несколько переменных, вводимые значения должны разделяться запятыми. Если значения не вводятся, то вместо них ставится код 0. Ввод с терминала заканчивается символами. Если используется, то все вводимые переменные сохраняют свои значения. В формате, А после введенной последовательности байтов передается символ VEOL. Если в операторе GET список отсутствует, то производится ожидание производительного ввода.

Пример:

  • 400 GET X: 0
  • 120 GET A, B, C
  • 450 GET LINE: A: N ! Ввод по формату А.

Дополнительные операторы и особенности программирования в Q-2.

Оператор DATA.

Служит для задания начальных значений переменных. Начальные значения присваиваются при трансляции. Оператор имеет вид:

DATA V1/[K1*]D1, [K2*]D2, … /, V2/… ,.

где V1 и V2 — переменные, D1 и D2 — константы, K1 и K2 — константы кратности (константы).

Переменные либо не должны содержать индексов, либо индексы должны быть константами. Кратности могут отсутствовать. В этом случае считается, что они равны 1. Количество констант, то есть K1+K2+… не должны превышать переменной.

Примеры:

  • 10 INT A (50), B (50) DATA A/51*0/, B (40) /11*0/
  • 40 DATA EX /'ПР','ИМ','ЕР'/ ! Размер EX должен быть менее трёх

Программирование ВВОДА/ВЫВОДА.

Операторы описания позволяют разместить переменную любого типа по заданному адресу. Это позволяет программировать нестандартные ВУ на физическом уровне.

  • А) Ввод символа с терминала:
    • 10 BYTE TTS: 177 560, TTB: 177 562 ! регистр терминала
    • 20 WRITE TTS >= 0 ENDW ! ожидание ввода символа
    • 30 CIAS = UTB ! чтение символа из буферного регистра
  • Б) Вывод блока на магнитную ленту.
  • 10 INT BLOCK (1023)
  • 20 INT MTCS: 172 522, MTWC: 172 524, MTMA: 172 526
  • 30 MTMA = # BLOCK ! Запись адреса памяти
  • 40 MTWC = 1024 ! Запись счетчика слов
  • 50MTCS = 5 ! Запись команды
  • 60 WRITE MTCS% >= 0 ENDW ! Ожидание операции

Стиль программирования.

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

Ввод/вывод.

Система Q-2 обслуживает операции ВВ для стандартных физических устройств или файлов на этих устройствах. Любое физическое устройство имеет свое имя:

ТТ — терминал, PR — считыватель с перфоленты, РР — перфоратор ленты, LP — принтер, печатающее устройство, NL — нулевое устройство, FI — интерфейс с файловой системой, NT — интерфейс с сетью ЭВМ. Нулевое устройство реализуется программно. Интерфейс файловой системы — это также программно реализующее устройство, осуществляющее связь Q-2 с внешней средой, например с ОС. Имя файлов в Q-2 задается строчкой символов следующего вида:

`DD[:FFFFFF]',.

где DD — имя устройства, FFFFFF — внешнее имя файла. Пример:

`FI: MT1: PROGR. Q' - Файл с именем PROGR. Q размещен на магнитной ленте MT1.

Работа системы Терминал.

Взаимосвязь системы Q-2 обеспечивается через терминал. С клавиатуры терминала пользователь вводит команды, а на экране отражаются сообщения от системы. При вводе с терминала, система определенным образом обрабатывает символы, называющиеся управляющими.

  • · CR — заканчивает ввод с терминала.
  • · D — стирает последний введенный символ в текущей строчке.
  • · CTRL+V — стирает текущую строку. Эта дает возможность ввести сточку заново. Уничтожение строки нужно принять до нажатия CR.
  • · CTRL+S — приостанавливает ввод на терминал.
  • · CTRL+Q — возобновляет вывод на терминал.
  • · CTRL+R — отменяет и разрешает вывод на терминал.
  • · CTRL+P — выход в монитор в любой момент времени при использовании программы
  • · ESC — прерывание программы и переход по заданному адресу, задаваемого оператором.
  • · SO/SI — соответствующий русский/латинский регистр

Монитор.

Общее описание.

После загрузки системы Q-2 управление получает монитор, который отражает следующее QUASIC — 2 SYSTEM READY. Система, находящаяся в режиме ожидания ввода анализирует тип вводимой информации. Пользователь может вводить либо программу на языке Q-2, либо команды монитора, если введенная строка начинается с цифры, то монитор считает ее строкой программы и запоминает в текстовом буфере. Если строка начинается с буквы, то монитор считает ее командой и переходит к ее выполнению. Ввод любой строки заканчивается нажатием кнопки СR. Команды идентифицируются по первым шести символам. Если команда содержит ошибку, то она не выполняется и выдается сообщение вида ERROR I, где I — код ошибки. Сообщения об ошибках могут пользоваться при вводе текста программы. Если монитор не распознает команду, то передает всю строку транслятору и после трансляции выполняются все полученные команды. Этот режим называется режимом непосредственного доступа. Находясь в мониторе он позволяет выполнить любой оператор языка или последовательность операторов, разрешенных в одной строке. Строки программы вводятся в текстовый буфер в соответствии с их номерами. Если в тексте присутствует строка с вводимым номером, то новая строка записывается на место старой.

Команды монитора.

Монитор использует следующие команды:

  • · NEW — стирание программы и ввод новой программы из заданного файла. Формат команды NEW FILE, где файл — имя функции.
  • · READ — ввод текста из заданного файла и добавление его к буферу текста READ FILE.
  • · WRITE — вывод программы в заданный файл. WRITE FILE [K[, L]], где K, L — номера строк. Если K и L отсутствуют или вместо них ALL, то производится вывод всей программы, если присутствуют K или L, то осуществляется вывод соответствующих строк. Если присутствуют K и L, то производится вывод программы со строки К по строку L.
  • · LIST — вывод исходной программы в виде, удобном для чтения. LIST[FILE] [K[, L]]. Параметры имеют те же значения, что и операторы READ.
  • · DEL (DELETE) — стирание строк DEL K [, L].
  • · EDIT — редактирование исходной программы. EDIT K [, L].
  • · Для любой строки пользователь вводит строку модификации, которая имеет вид:

// ,.

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

  • · Команда REPL (REPLASE) — перестановка строк. Формат команды REPL K[, L] TO N, где K, L, N — номера строк. Строки, имеющие номера и размещенные в интервале от K до L, получают номера N+I.
  • · Команда BYE — заканчивает работу системы Q-2. При этом закрываются все открытые команды.
  • · RUN — выполнение программы в случае, если она оттранслирована и не содержит ошибок.
  • · COMP — трансляция программы. COPM [][FILE]. Опции задают режим компиляции.
  • · SHOW — вывод на печать различной системной информации.

SHOW [FILE] [KEY] [K[, L]].

  • · KEY — ключевое слово, определяющее что выводить: ID — выводится название системы, версия, дата последних изменений, код пользователя. Дата выводится в упакованном восьмиричном коде.
  • 31 324=3−13−248=03-NOV-20
  • · MEM — выводится информация о распределении памяти. Она состоит из четырёх строчек:
    • А) Название области памяти.
    • Б) Начальный адрес (восьмиричный).
    • В) Размер области (десятичный).
    • Г) Размеры системной области и буферирование ВВ.
  • · LUN — выдает информацию о логических каналах.
  • · CODE — выдает команды, в которых транслируются исходные программы.
  • · DATA — выдает таблицу распределений переменных в памяти.
  • · OBJ — CODE+DATA.
  • · SYS — выдает таблицу распределения системных переменных. По умолчанию KEY=ID.

K и L — номера строк исходной программы, для которой нужно выводить команды (допустимо только с ключевым словом CODE). По умолчанию выводится вся программа.

Непосредственный режим.

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

  • 1. Нельзя использовать оператор PROC без адреса и оператора ON.
  • 2. Не разрешается неявное описание переменных.
  • 3. Если выполняется переход на программу пользователя, то эта программа должна быть оттранслирована и не содержать ошибок.

Компиляция, выполнение и отладка.

Компиляция программы. Для того, чтобы выполнить программу, ее необходимо скомпилировать. Компиляция осуществляется явно командой COMPILE, либо неявно командой RUN, если программа не была ранее скомпилирована. В процессе компиляции мог быть создан листинг программы. Если в программе имеется ошибка в какой-то строке, то в след за этой строкой выдается значок ««. Этот знак указывает на то, что место ошибки находится не правее данного знака. Также выводится сообщение об ошибке — «ERROR I», где I — код ошибки. В конце текста программы может появиться сообщение об ошибке ERROR I AT LINE N, говорящее о том, что в строке N имеется ошибка. При компиляции может произойти переполнение внутренней таблицы компилятора. В этом случае сообщение об ошибке имеет вид SYS ERR I, то есть системная ошибка.

Если программа успешно оттранслирована, то она может быть выполнена. Выполнение осуществляется командой монитора RUN. В ходе выполнения программы могут возникнуть ошибки, о которых выдается сообщение на терминал. В любой момент выполнения программы пользователь может прервать её, введя CTRL+P. При этом управление передается монитору.

Показать весь текст
Заполнить форму текущей работой