8) 

Клип думает!
О тестовых командах подробнее

А теперь самое интересное. Как заставить клип думать? И как вообще «думает» компьютер? На простейшем уровне это происходит так: машина перебирает заложенные в нее варианты решения, пока не находит тот, который соответствует заданным условиям. В школе все, наверное, изучали, как действует полупроводниковый транзистор – кристаллик с тремя проводками. По одному проводку поступает сигнал Б (база), по второму – сигнал Э (эмитер), и если Э удовлетворяет Б, то по третьему проводку выходит сигнал К (коллектор). Это, так сказать, маленькая клеточка электронного мышления, из таких клеточек и состоит большой электронный мозг.

Семантически эту «клеточку мышления» можно представить так: «Если Переменная1 равняется Переменная2, то выбирается Действие3, или же в противном случае выбирается Действие4».

Просто? Конечно, просто! Между тем, мы с вами только что написали кусок программного кода и, сами того не заметив, стали программистами. Чтобы эта наша написанная программа реально заработала, надо лишь убрать ее многословность и перевести на английский язык, поскольку этот язык выбран языком программирования. "Если" по-английски будет If. "Или же" переводится как Else. Получаем:

^!If ^%Переменная1% = ^%Переменная2% Действие3 Else Действие4

Вместо переменных, можем использовать функции, или одновременно функции и переменные, или другие значения. Например:

^!If ^$GetClipboardSize$ => ^%Переменная1% Действие3 Else Действие4

Вышеприведённая строчка читается просто: если (If) размер скопированного (т.е. взятого в Clipboard) текста по размеру больше или равен переменной, то клип запустит команды, которые находятся после метки Действие3; если же объем текста меньше означенной переменной, то запустятся команды после метки Действие4.

Или другой пример – с функцией и обычным значением:

:Действие4
^!If ^$GetWord$ =
глава Действие3
^!Continue
Под курсором нет слова «глава». Будем продолжать поиск?
^!MoveCursor +12
^!Goto Действие4
:Действие3
^!Info
Мы нашли слова «глава»!

(посмотреть анимацию схожего клипа)

Здесь, как видите, я не использовал «Else» (или же), поскольку задачка простая и мне достаточно перенаправления только к одной метке. Для тех, кто ещё чего-то не понял (хотя что тут понимать?), «расшифровываю»  вышеприведенную инструкцию ниже:

Если ^$GetWord$ (слово, на котором стоит курсор) является словом «глава», то программа перейдет к метке Действие3 и покажет окошко Info, которое сообщит: "Мы нашли слова «глава»!" Если же равенства нет (курсор не стоит на слове «глава»), то перскока к метке Действие3 не будет, и клип продолжит изначально заданную последовательность команд. То есть перейдет к следующей по порядку команде ^!Continue – она покажет окошко Continue с надписью "Курсор стоит на слове «глава». Будем продолжать клип?" и двумя кнопками ОК и Cancel. Нажав на Cancel, мы закончим клип; нажав на OK, клип продолжится и запустится следующая по очередности команда, которая перставит курсор на 12 знаков вперед по тексту. Затем наступает очередь команды ^!Goto (идти на...), которая перенаправит к метке Действие4 – то есть в самое начало клипа, и всё повторится как в сказке про белого бычка: проверка, оказался ли курсор на слове «глава», и т.д.

Чтобы посмотреть всё это в реальном действии, создайте в планшете Библиотеки пустой клип (Add New Clip...), скопируйте в него вышеприведенную инструкцию, и запустите, поставив курсор в текстовой документ, где есть слово «глава». Понятно, что этот клип в жизни нам не пригодится – он для наглядности, мы просто пока играем в клипы, учимся.

Если вы опробовали этот клип в действии (запустив в Библиотеке клипов), то заметили, что он как бы «полуавтоматический» – по ходу выполнения он попросил вас нажать на ОК или Cancel. Это, так сказать, еще «не самостоятельный» клип. Но можно его полностью автоматизировать – пусть клип сам пашет, лишь информируя человека о конце поиска:

:Действие4
^!If ^$GetWord$ =
глава Действие3
^!MoveCursor
+12
^!Goto Действие4
:Действие3

^!Info Мы нашли слова "глава"!

Но продолжим, с чего начали.

Итак, команды с «If» для простоты можно называть «тест-командами», поскольку они занимаются тестированием. Как я уже говорил, они похожи на транзистор в электросхеме или автоматически срабатывающее реле. Тест-команда сравнивает две части информации и, в результате сравнения, заставляет клип перескочить на ту или иную Метку в инструкции (или продолжить выполнение клипа с того же места, никуда не перескакивая). Одну и ту же тест-команду можно написать двумя способами:

^!If ^$GetWord$ = глава Действие3    – если слово на курсоре идентично слову «глава», то запускаются команды после метки «:Действие3»
^!IfSame ^$GetWord$ глава Действие3    – если одинаковы слово на курсоре и слово «глава», то запускаются команды после метки «:Действие3»

А вот тест-команды, определяющие истинность (True) или ложность (False) значения:

^!IfTrue ^$GetWord$ Действие3    – если значение функции ^$GetWord$ не пустое (т.е. она показывает слово на курсоре), то продоложить дейстиве клипа с метки Действие3.
^!IfFalse ^$GetWord$ Действие4    – если значение функции ^$GetWord$ пустое (т.е. курсор стоит не на слове, а, скажем, на пробеле), то продоложить дейстиве клипа с метки Действие4.

В последних версиях NoteTabPro синтаксис клипов с тест-командами вообще предельно упрощен: в тест-командах можно обойтись без Меток и сразу использовать нужные действия. Теперь можно писать так:

:Действие4
^!If ^$GetWord$ =
глава ^!Continue Мы нашли слова «глава»!
^!MoveCursor +12
^!Goto Действие4

Я, впрочем, предпочитаю писать по старинке, привычка... Подытоживая сказанное, заметим, что кроме знака «=» (равно), в клипах можно использовать разные операторы сравнения:

<  Покажет «Истинно», если левое Значение меньше, чем правое Значение.
>  Покажет «Истинно», если левое Значение больше, чем правое Значение.
<>  Покажет «Истинно», если левое Значение отличается от правого Значения.
<=  Покажет «Истинно», если левое Значение меньше или идентично правому Значению.
>=  Покажет «Истинно», если левое Значение больше или идентично правому Значению.

^!IfTrue – если значение равно 1, TRUE, YES, Y, ON.
^!IfFalse – если значение является пустой строкой или эквивалентно 0, FALSE, NO, N, OFF.
^!IfDiff - если значения различаются (different по-английски – «разный»).
^!IfSame – если значения одинковы.
^!IfEmpty – если значение пусто.
^!IfError - если ошибка в осуществлении предыдущей команды.

Что ещё сказать об If ?  Когда мы смотрим на какой-нибудь предмет, то бессознательно определяем, что можем сделать с ним. Примерно так же «осмысленно видеть» электронному разуму позволяет команда If. Многие мои большие, сложные клипы начинаются с «узнавания». Скажем, клип копирует какой-то фрагмент текста, и затем следует последовательное распознавание. Если в первой строчке условие не удовлетворяет заданному, клип переходит к следующей строчке с If, и так далее, пока состоявшееся тождество не запустит нужное действие:

^!If  ..... Действие1
^!If  ..... Действие2
^!If
 ..... Действие3
^!If
 ..... Действие4

Чем это не мышление? Алгоритм электронного мышления можно усложнять, используя разные команды. Например, Skip_1 – пропустить следующую строчку инструкции (Skip_2 – пропустить две следующие строчки,  Skip_3 – три строчки, и т.д.). Например:

^!If  ..... Skip_1
.....  ..... Действие
^!If
 .....
Skip_2
.....
 ..... ......
.....
 ..... Действие

Создатель NoteTab-a составил инструментарий клипов с большим запасом, но достаточно взять оттуда всего несколько команд – и этого будет достаточно, чтобы собрать «мыслительную машину» для самой разной обработки текста, работы с файлами и папками на диске компьютера. Скачать справку-инструментарий с перечнем команд, функций и с пояснениями можно здесь: Справка по созданию клипов.

Несколько слов в заключение... Как видите, вся кухня программирования сводится всего к трём моментам: считывание и установка значений --> сравнение значений --> команда к действию. Вот и всё! Попробуйте составить небольшой работающий клип – и вы почувствуете, как это просто. А когда возьмёте задачку посложнее, то не заметите, как одно потянется за другим, как начнёт расти программный код, отделяясь от вашего сознания в самостоятельное бытие.

Успехов! Пишите, если что не понятно.

   

*)Форум:
вопрос-ответ


1)Новое:
что добавил


2)Введение:
о программе


3)Как пользоваться клипами

4)Скачать
клипы и словари


5)Сделать
простейший клип


6)Поумневшие
команды


7)Главные герои
и исполнители


8)Мыслящий
кибер-клип


@)Контакты

 

 

Используются технологии uCoz