Установить или отменить условный останов

При нажатии совокупности клавиш CTRL+F2 при нажатии на клавишу CTRL и одновременном выполнении щелчка левой кнопкой мыши на области экрана, относящейся к области задания остановов (крайняя левая позиция строки), выполняется задание/отмена условного останова на операторе программы в позиции курсора. Оператор должен быть исполнительным с точки зрения языка TехноCи. В первой позиции строки оператора программы появляется/исчезает квадрат красного цвета с символом "?"; в момент задания условного останова появляется запрос текста условия останова; при прохождении через такой оператор каждый раз проверяется значение условия и при его истинности выполнение программы TехноCи приостанавливается, причем условный останов, в отличие от обычного останова, автоматически отменяется. Пример области кадра с текстом программы с заданной точкой условного останова приведен на рисунке 40. Окно ввода текста условия останова имеет формат, представленный на рисунке 42.

Рисунок 42

После ввода текста условия по клавише ENTER выполняется задание условного останова, а по клавише ESC - игнорируется. Здесь и далее во время ввода текстовой информации допустимо использование следующих клавиш:

DELETE
- удаление символа в позиции курсора со сдвигом правой части текста на позицию влево;
ALT+F1
- удаление всех символов текста, расположенных правее курсора, начиная с его позиции;
BACKSPACE
- удаление символа, расположенного слева от курсора со сдвигом правой части текста на позицию влево;
INSERT
-

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

Текст условия задается в одном из следующих форматов:

  1. <условие>
  2. <условие1> || <условие2>
  3. <условие1> && <условие2>

Условие представляет собой переменную и константу, разделенные операцией арифметического сравнения:

            ==
- равно;
            !=
- неравно;
            >
- больше;
            <
- меньше;
            >=
- больше или равно;
            <=
- меньше или равно.

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

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

ОСТАНОВ ПО ЧИСЛУ ТОЧЕК ФИКСАЦИИ "N"

Например, если N равно 3, то останов по числу точек фиксаций произойдет перед третьим выполнением данного оператора. После выполнения останова по условию, заданный останов сбрасывается автоматически. Для останова по следующему условию задание останова надо повторить. Если условие заканчивается символом ";", то автоматический сброс останова не выполняется, т.е. условие останова остается актуальным.

Может быть задан только один условный останов в текущей задаче. Примеры задания условного останова:

  1. i[4]>=-10 && CORUND[12]==3.14
  2. i[4]!=0
  3. j==2 || j==17
  4. 17

Для быстрого перехода к оператору с условным остановом применяется клавиша "?", а для напоминания текста условия - клавиша ALT+U.

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