підсилювачі інтелекту
Підсилювачі інтелекту: конструктори алгорітмов3
Шановні любителі інтелектуальних програм!
Ми йдемо далі в світ програмування. Першим кроком було освоєння алгоритмічного мислення за допомогою дракона. На черзі - HiAsm. здатний швидко реалізувати алгоритмічну ідею без допомоги професійного програміста.
Взагалі-то хиазм був винайдений в I столітті до нашої ери і є хрестоподібний повтор-перевертень - хитрий мовний зворот, що запам'ятовується своєю виразною вигадливістю. В ті часи популярним хиазмом було "Є, щоб жити, а не жити, щоб їсти". До нас же ближче фраза К.С. Станіславського: «Умійте любити мистецтво в собі, а не себе в мистецтві".
Але ім'я HiAsm має інше походження. У програмуванні Asm стійко асоціюється з Ассемблером, мовою машинних кодів, а приставка Hi означає високий (як в модернових Hi-Tech / Високі технології, Hi-End / Ексклюзивна аудіоапаратура і Hi-Fi / Звук, точно відтворює оригінальне звучання). Ось і виходить "Високий Асемблер" (хайЕсм) - міст від інтуїтивно зрозумілих блок-схем відразу до зауми кодинга.
Втім, до Асемблеру HiAsm має відношення лише в переносному сенсі - він не якийсь новий мову програмування, а всього лише оболонка над Паскалем, Delphi, Assembler, C ++, Basic, PHP і інших менш відомих мов програмування високого рівня.
Вибираючи кубики і з'єднуючи їх зв'язками, ми уникаємо зауми кодів, але у цієї простоти є зворотна сторона, викликана складністю операцій, ініційованих схемою:
"Кубики" (в HiAsm їх називають компонентами) влаштовані досить хитро, мають багато налаштувань - і потрібно витратити якийсь час, щоб навчитися легко і швидко ними користуватися.
Зв'язки, простягає від кубика до кубику, будуть самі собою зникати, якщо самі кубики або вибрані входи-виходи на них несумісні.
Знайомимося з інтерфейсом і його налаштуванням
Для початку погляньте на робоче вікно програми:
Із загальних налаштувань HiAsm. файли проектів можна буде відкривати клацанням миші, якщо включити інтеграцію (меню Сервіс / Налаштування / Інтеграція).
Вибираємо і налаштовуємо компоненти
Якщо Ви вирішите зібрати програму, що працює під Windows. то HiAsm 4.02.179 запропонує на вибір 564 компонента. У новій версії 4.03.181 до них додалося ще 42 (і виключені 5) - всього 601 компонент.
Як зауважив ще Козьма Прутков, не можна обійняти неосяжного, а Тадеуш Костюшко в 1794 році сказав: "Потрібно пожертвувати багатьом, щоб врятувати все" - і з тих пір цю фразу включають в усі збірники афоризмів. Ось і нам належить вибрати арсенал молодого бійця, а іншими компонентами на час пожертвувати.
Мені для реалізації алгоритмічних ідей на перших порах вистачило дюжини компонентів - ось про них я Вам і розповім (по порядку зліва направо):
Нумерація в програмуванні починається з 0 - так що звикайте. ; 0)
0. Форма - компонент, який за замовчуванням присутній в проекті интерфейсного додатки для Windows (збірка таких програм - перша і головна задача HiAsm). Задає вид, розташування, розміри вікна програми, його заголовок, колір, характер реагування на покажчик миші і т.п. параметри.
1. Напис - поміщає короткий текст у вікно програми. (З рубрики Інтерфейс)
2. Поле введення - створює поле для набору одного рядка тексту. (Інтерфейс)
3. Кнопка з картинкою - дозволяє користувачеві запускати етапи програми. На відміну від звичайної кнопки має широкий спектр налаштувань. (Інтерфейс)
5. Повідомлення - перериває роботу програми і показує в окремому віконці текст, що вимагає відповідної реакції користувача. (Контролю)
6. Таймер - генератор імпульсів (подій), що запускають роботу всієї програми або її підпрограм. За замовчуванням - раз в секунду. (Контролю)
7. Випадкове число - генератор випадкових чисел. Вносить в роботу програми фактор непередбачуваності. (Логіка)
8. Цикл з лічильником - організовує цикли / етапи в роботі користувача з програмою. (Логіка)
9. Умовний блок - перемикає канали впливу в залежності від порівняння надходять чисел або рядків. Дозволяє оцінювати проміжні результати. (Логіка)
10. Пам'ять - запам'ятовує число або рядок тексту для передачі компонентів програми. Може нести функції як довгострокової, так і оперативної пам'яті. (Інструменти)
11. Потік-дані - переносить дані з пам'яті на вхід компонентів. (Інструменти)
Детальна довідка по HiAsm викликається клавішею F1 на робочому полі (при відсутності виділених компонент), а для виділеного компонента F1 покаже коротку довідку про нього.
Варто помістити компонент на робоче поле, як в правій інструментальній панелі відкриваються його властивості. Їх значення можна змінювати, клікнувши на відповідному полі.
Якщо у імені властивості є квадратик зі знаком +, то клік на ньому розкриє рубрику цієї властивості.
Якщо у імені властивості є порожній квадратик, то клік на ньому робить це властивість керованим з програми (на іконці компонента з'являється додаткова точка для підключення зв'язків).
Частіше за інших налаштовуються властивості caption (заголовок, напис), strings (список рядків), data (дані), font (шрифт), color (колір). Останнє можна зробити динамічним, додавши крапку до настроюється компоненту. І якщо Ви захочете, щоб колір змінювався випадковим чином, то в налаштуваннях компонента "Випадкове число" змініть діапазон чисел з вихідного 100 на 16777215, тому що саме в такий інтервал укладається вся палітра кольорів (в діапазон 0 - 100 потрапляють тільки темні тони).
Збираємо схему програми
Іншими словами, по горизонталі пов'язані подієві входи-виходи, а по вертикалі - параметричні. По горизонталі розгортається основний інформаційний процес програми, що веде від вихідних вхідних даних до результатів. А вертикальний зріз складається в статичних установках програми, які доповнюють її структуру, і процесах управління параметрами компонентів.
Принципом цієї структури є головне правило HiAsm. вищий пріоритет мають дані, що надходять зверху; за ними слідують дані, введені в пам'ять компонента при налаштуванні його властивостей; нижчий пріоритет мають дані, що надходять на входи компонента з потоку подій.
Щоб з'єднати компоненти, потрібно клацнути лівою кнопкою миші на потрібній точці одного і, не відпускаючи кнопку, вести зв'язок до точки іншого компонента. Якщо до тієї точки вже підходить інша зв'язок, то ведемо зв'язок до цієї зв'язку - і в місці їх перетину утворюється вузол. Якщо зв'язок не потрібна, то для розриву потрібно натиснути правою кнопкою на будь-який з пов'язаних точок.
Як правило, зв'язку HiAsm встановлюються або між точками, що лежать на вертикальних сторонах "ящиків" компонентів (подієві входи-виходи), або між точками на горизонтальних сторонах (параметричні входи-виходи). Але в цьому правилі є винятки. Особливо примхливі з'єднання зв'язок-зв'язок. Тому надійніше в точку розгалуження зв'язків ставити компонент Hub (Інструменти), і вже до нього тягнути лінії від точок компонентів.
Реалізуємо і розвиваємо алгоритм програми
Перейдемо від слів до справи. Розмістіть цей код в буфер і вставте на робоче поле нового проекту HiAsm "Додаток Windows" - з'явиться схема програми "Зарядка душі" (тієї самої, що на знімку робочого вікна HiAsm вище). Натиснувши кнопку "Запустити" Панелі управління, Ви побачите вікно програми і зможете підняти собі настрій. ; 0)
Для зацікавлених подробицями
1. Як налаштувати стартове вікно intro і працювати з ним
2. Покращена організація робочого поля
Вище, в експрес-знайомство з HiAsm. пропонувалося зафіксувати основні панелі (Елементи, Властивості, Довідка) подвійними клацанням на їх закладках, розташованих з боків і внизу робочого поля. Такий спосіб хороший своєю простотою, однак панелі при цьому затуляють компоненти, розташовані по краях поля, а також лінійку з закладками проектів, що ускладнює перемикання між ними і закриття проектів. Щоб основні панелі не залазили на робоче поле, а витісняли його, виконайте наступну процедуру:
Підведіть курсор миші до заголовка відкритої панелі і при натиснутій правій кнопці миші відтягнете панель від кордону вікна. Потім, натиснувши вже ліву кнопку на тому ж заголовку, відбуксируйте панель назад до кордону, причому так, щоб вона змінила свій розмір, витягнувшись на всю довжину вікна.
Тепер основні панелі будуть постійно розміщені по краях робочого поля, не затуляючи його. Щоб збільшити розмір поля, можна зменшити ширину панелей буксируванням їх внутрішніх кордонів.
При роботі над проектами зазвичай користуються невеликим набором компонентів. Їх можна скопіювати в окрему панель, розміщену в зручному для Вас місці вікна HiAsm (опис). Для цього на панелі Елементи виберіть потрібний компонент і клацніть на ньому правою кнопкою миші. У контекстному меню виберіть пункт Додати в панель. Нова панель спрощує вибір часто використовуваних компонентів, а основну панель Елементи можна згорнути в закладку, ще більше збільшивши робоче поле.
3. Універсальний набір базових компонентів
4. Як працюють точки (зв'язку) компонента
Galkov описує роботу компонентів так:
Найпростіший спосіб пояснення у нас називається "моделлю паровозиків". Припустимо, від кнопки прилетіло подія до лівої точці компонента Math (Арифметика в рубриці Логіка). Все, далі починає функціонувати саме Math. В процесі функціонування компонент може активізувати свої верхні / праві точки. Насамперед верхня ліва: Новомосковскет значення з приєднаного компонента. Поки Новомосковскет, лінія зайнята. Читання закінчено - починається читання по каналу наступної верхньої точки. Останній актом активності елемента Math - виклик події onResult. права крапка. Скінчилася активність Math - звільнилася лінія, яка його активізувала. Для даного компонента на цьому все і закінчується, але теоретично - активність лінії є наслідок зовнішнього прояву активності нікого іншого компонента. І у будь-якого елементу є своє "розклад" для активізації верхніх / правих точок у відповідь активування якийсь із лівих. Завжди працює тільки одна подія - ніяких чудес. "Розклад" у HUB -а (вузла, розгалуджувача зв'язків) таке - спочатку верхня, потім нижче, потім ще нижче, і т.д. "Потім" - означає після закінчення активності попередньої.
Що таке If_Else (Умовний блок): активізуються верхні точки (спочатку ліва, потім права, манера у нас така - у всіх елементів зліва направо або зверху вниз, якщо в персональній довідці на елемент не вказано іншого), і одна з правих за результатами порівняння . Природно - після.
Що таке For (Цикл з лічильником): активізуються верхні точки (спочатку ліва, потім права), і далі - потрібну кількість разів права onEvent. Той же вищезгаданий прикол про зайнятість - повтор не почнеться поки не відпрацює ВСЯ алгоритмічна гілка, що починається в onEvent. На відміну від раніше описаного, після закінчення активності гілки, активізується не «наступна в розкладі елемента", а та ж сама.
Ну і так далі, приблизно в тому ж стилі. Ось власне і вся наука, якщо за великим рахунком-то.
Наші спостереження (5 років) поки говорять про оптимальність сприйняття схеми розміром приблизно 20-30 елементів.
5. Як збирати схеми
У прислів'я "Немає лиха без добра" є не менше справедливий антипод - "Ні добра без худа". Ось і візуальне програмування несе в собі невидимі пні, про які спотикаються навіть досвідчені програмісти, не кажучи вже про новачків: зв'язки не тягнуться, компоненти не слухаються надходять команд, потрібні властивості відсутні або не реагують на налаштування. Ситуація ускладнюється тим, що налагодження HiAsm не завершена і не може бути завершена в принципі - таку вже стратегію обрав Dilma. Напевно, це виправдано по ряду причин: обмеженість ресурсів, швидкої еволюції програми, участі користувачів в апробації версій.
Щоб менше спотикатися при складанні схем, є надійний спосіб - йти від випробуваних прототипів. Благо HiAsm оснащений багатою бібліотекою схем. Каталог проектів доступний з закладки на правій межі вікна. Подвійний клік на обраному проекті відкриє його схему, а переміщення курсору миші на закладку "Інформація" внизу вікна покаже опис проекту (хоча опис зустрічається не у всіх проектів).
Для початку знадобиться проект Demo (в папці Windows \ Example) - показ роботи багатьох компонентів з палітри Конструктора. Решта проектів спеціалізовані, і їх доводиться підбирати під конкретні завдання. Але і непрофільні проекти можуть стати в нагоді - тим, як в них задіяні окремі компоненти, як комплектуються контейнери і т.п.
Під завісу - історія про чудеса алгоритмічного мислення:
Програміст ставить собі на тумбочку перед сном дві склянки.
Один з водою - на випадок, якщо захоче вночі пити.
А другий порожній - на випадок, якщо не захоче.
До нових зустрічей!
Юлій феодоритів