
- •14. Коротко про Formula Node у LabView
- •15. Формули у LabView
- •16. 9 Порад LabView-програмістам
- •18. Цикли і галуження у Formula Node
- •19. Робота з файлами у LabView
- •20. Вузли для роботи з часом у LabView
- •21. Робота із пристроями вводу у LabView
- •22. Property Node: зміна властивостей візуальних компонентів LabView у процесі виконання програми
18. Цикли і галуження у Formula Node
У одному з попередніх дописів ми ознайомилися зі структурою Formula Node, яка являє собою вбудовану у графічне середовище LabVIEW просту С-подібну текстову мову програмування. Оскільки, як виявилося, далеко не всі володіють бодай основами C, то доцільно буде трохи детальніше розповісти про окремі конструкції, що використовуються у Formula Node.
Першим, про що варто згадати, є оголошення змінних. Більшість сучасних мов програмування, хоч і не завжди зобов’язують оголошувати змінну перед тим, як її використовувати (загалом, при першому присвоєнні змінній якогось значення вона може бути автоматично оголошена, тому багато хто просто не зважає на таку потребу), та не варто забувати про правила хорошого тону в програмуванні.У Formula Node змінна може бути оголошена двома способами. Перший із них – це створення відповідного терміналу (Add Input чи Add Output) у самій структурі за допомогою контекстного меню. Другий спосіб – оголошення локальної змінної, видимої лише у межах структури, прямо у полі вводу текстового коду. Формат оголошення наступний: тип ім’я.
Типи даних у Formula Node використовуються наступні:
Знакові цілі: int, int8, int16, int32 (від’ємні та додатні числа, діапазон залежить від розрядності);
Беззнакові цілі: uInt8, uInt16, uInt32 (виключно додатні числа та нуль, діапазон залежить від розрядності);
Із плаваючою точкою (float): float, float32, float64;
Таким чином int a; – оголошення змінної “а”, яка має цілий знаковий тип.
Для оголошення масиву (Array) використовують конструкції з квадратними дужками, у яких вказують розмір масиву. Кількість пар дужок відображує розмірність, наприклад:
int A[10]; – одновимірний масив цілих чисел; float A[10][12]; – двовимірний масив чисел із плаваючою точкою.
До елементів масиву можна отримати доступ за їх індексами (наприклад операція присвоєння значення “3″ нульовому елементу масиву А матиме вигляд A[0]=3;), а тому обробка масивів даних у Formula Node зазвичай відбувається із використанням циклів. У Formula Node існує три різновиди циклів: із параметром (for), з передумовою (while) та з післяумовою (do). Приклад їх використання для наповнення масиву даними наведено на наступному рисунку.
Реалізація циклів у структурі Formula Node
У всіх трьох випадках оголошено цілочисельну змінну і, яка використовується як індекс масиву, та сам масив А[10], що містить 10 елементів. Далі йде реалізація власне циклу, в тілі якого здійснюється присвоєння елементам масиву значень індексної змінної.
Синтаксис циклу з параметром наступний: for (початкове значення; умова завершення циклу; приріст індексної змінної). Приріст реалізується у вигляді конструкції і++, що є аналогом операції і+1. Надалі в тілі циклу здійснюється лише присвоєння елементам масиву відповідних значень. Цикли з перед та післяумовою потребують окремого інкременту змінної і, тому у їх тілі міститься рядок і++.
Результати виконання всіх трьох вузлів Formula Node ідентичні, а обмеження видимості змінних лише рамками структури Formula Node дозволяють називати змінні однаковими іменами, оскільки вони не впливатимуть одна на одну. Таким чином всі три наведені на рисунку фрагменти можуть знаходитися у одному віртуальному інструменті LabVIEW.
Ще одним важливим оператором, що може бути використаний у Formula Node, є оператор вибору Switch-Case, синтаксис якого має наступний вигляд: switch (змінна){case варіант1: дія; case варіант2: дія; default: дія}. Приклад використання такого оператора наведено на наступному рисунку.
Використання switch-case у Formula Node
Зображена програма виводить кількість днів у вибраному місяці за його порядковим номером (січень – 1, лютий – 2, і т.д.). У випадку коли кількість днів не є функцією виключно номера місяця (наприклад у високосному році в лютому 29 днів), можна використати вкладений вибір. Так у третьому рядку конструкція days=evenyear? 29: 28; перевіряє логічну змінну evenyear і, відповідно до її значення, виконує присвоєння.
Оскільки у Formula Node використовуються тільки числові змінні, то насправді evenyear може набувати значення 1 або 0, для отримання якого із відповідних логічних рівнів перемикача використовується вузол Boolean To (0,1).
Варіант default у операторі Switsh-Case вказує яка дія буде виконана у тому випадку, коли введене значення змінної не відповідає жодному варіанту case. У нашому випадку якщо номер місяця не входить у цілочисельний діапазон 1-12, то кількість днів у такому неіснуючому місяці приймається рівною нулю. Команда break служить для зупинки виконання вибору при виявленні одного збігу. Аналогічна команда може використовуватися і в циклах, забезпечуючи передчасний вихід із них.