Семантически эту «клеточку мышления» можно представить так: «Если Переменная1 равняется Переменная2, то выбирается Действие3, или же в противном случае выбирается Действие4». Просто? Конечно, просто! Между тем, мы с вами только что написали кусок программного кода и, сами того не заметив, стали программистами. Чтобы эта наша написанная программа реально заработала, надо лишь убрать ее многословность и перевести на английский язык, поскольку этот язык выбран языком программирования. "Если" по-английски будет If. "Или же" переводится как Else. Получаем: ^!If ^%Переменная1% = ^%Переменная2% Действие3 Else Действие4 Вместо переменных, можем использовать функции, или одновременно функции и переменные, или другие значения. Например: ^!If ^$GetClipboardSize$ => ^%Переменная1% Действие3 Else Действие4 Вышеприведённая строчка читается просто: если (If) размер скопированного (т.е. взятого в Clipboard) текста по размеру больше или равен переменной, то клип запустит команды, которые находятся после метки Действие3; если же объем текста меньше означенной переменной, то запустятся команды после метки Действие4. Или другой пример – с функцией и обычным значением: :Действие4 (посмотреть анимацию схожего клипа) Здесь, как видите, я не использовал «Else» (или же), поскольку задачка простая и мне достаточно перенаправления только к одной метке. Для тех, кто ещё чего-то не понял (хотя что тут понимать?), «расшифровываю» вышеприведенную инструкцию ниже: Если ^$GetWord$ (слово, на котором стоит курсор) является словом «глава», то программа перейдет к метке Действие3 и покажет окошко Info, которое сообщит: "Мы нашли слова «глава»!" Если же равенства нет (курсор не стоит на слове «глава»), то перскока к метке Действие3 не будет, и клип продолжит изначально заданную последовательность команд. То есть перейдет к следующей по порядку команде ^!Continue – она покажет окошко Continue с надписью "Курсор стоит на слове «глава». Будем продолжать клип?" и двумя кнопками ОК и Cancel. Нажав на Cancel, мы закончим клип; нажав на OK, клип продолжится и запустится следующая по очередности команда, которая перставит курсор на 12 знаков вперед по тексту. Затем наступает очередь команды ^!Goto (идти на...), которая перенаправит к метке Действие4 – то есть в самое начало клипа, и всё повторится как в сказке про белого бычка: проверка, оказался ли курсор на слове «глава», и т.д. Чтобы посмотреть всё это в реальном действии, создайте в планшете Библиотеки пустой клип (Add New Clip...), скопируйте в него вышеприведенную инструкцию, и запустите, поставив курсор в текстовой документ, где есть слово «глава». Понятно, что этот клип в жизни нам не пригодится – он для наглядности, мы просто пока играем в клипы, учимся. Если вы опробовали этот клип в действии (запустив в Библиотеке клипов), то заметили, что он как бы «полуавтоматический» – по ходу выполнения он попросил вас нажать на ОК или Cancel. Это, так сказать, еще «не самостоятельный» клип. Но можно его полностью автоматизировать – пусть клип сам пашет, лишь информируя человека о конце поиска: :Действие4 Но продолжим, с чего начали. Итак, команды с «If» для простоты можно называть «тест-командами», поскольку они занимаются тестированием. Как я уже говорил, они похожи на транзистор в электросхеме или автоматически срабатывающее реле. Тест-команда сравнивает две части информации и, в результате сравнения, заставляет клип перескочить на ту или иную Метку в инструкции (или продолжить выполнение клипа с того же места, никуда не перескакивая). Одну и ту же тест-команду можно написать двумя способами: ^!If ^$GetWord$ = глава Действие3 – если слово на курсоре идентично слову «глава», то запускаются команды после метки «:Действие3» А вот тест-команды, определяющие истинность (True) или ложность (False) значения: ^!IfTrue ^$GetWord$ Действие3 – если значение функции ^$GetWord$ не пустое (т.е. она показывает слово на курсоре), то продоложить дейстиве клипа с метки Действие3. В последних версиях NoteTabPro синтаксис клипов с тест-командами вообще предельно упрощен: в тест-командах можно обойтись без Меток и сразу использовать нужные действия. Теперь можно писать так: :Действие4 Я, впрочем, предпочитаю писать по старинке, привычка... Подытоживая сказанное, заметим, что кроме знака «=» (равно), в клипах можно использовать разные операторы сравнения: < Покажет «Истинно», если левое Значение меньше, чем правое Значение. ^!IfTrue – если значение равно 1, TRUE, YES, Y, ON. Что ещё сказать об If ? Когда мы смотрим на какой-нибудь предмет, то бессознательно определяем, что можем сделать с ним. Примерно так же «осмысленно видеть» электронному разуму позволяет команда If. Многие мои большие, сложные клипы начинаются с «узнавания». Скажем, клип копирует какой-то фрагмент текста, и затем следует последовательное распознавание. Если в первой строчке условие не удовлетворяет заданному, клип переходит к следующей строчке с If, и так далее, пока состоявшееся тождество не запустит нужное действие: ^!If ..... Действие1 Чем это не мышление? Алгоритм электронного мышления можно усложнять, используя разные команды. Например, Skip_1 – пропустить следующую строчку инструкции (Skip_2 – пропустить две следующие строчки, Skip_3 – три строчки, и т.д.). Например: ^!If ..... Skip_1 Создатель NoteTab-a составил инструментарий клипов с большим запасом, но достаточно взять оттуда всего несколько команд – и этого будет достаточно, чтобы собрать «мыслительную машину» для самой разной обработки текста, работы с файлами и папками на диске компьютера. Скачать справку-инструментарий с перечнем команд, функций и с пояснениями можно здесь: Справка по созданию клипов. Несколько слов в заключение... Как видите, вся кухня программирования сводится всего к трём моментам: считывание и установка значений --> сравнение значений --> команда к действию. Вот и всё! Попробуйте составить небольшой работающий клип – и вы почувствуете, как это просто. А когда возьмёте задачку посложнее, то не заметите, как одно потянется за другим, как начнёт расти программный код, отделяясь от вашего сознания в самостоятельное бытие. Успехов! Пишите, если что не понятно. | *)Форум: | ||||||
| |||||||