Регістри зсуву: доступ до даних попередньої ітерації циклу 2


При програмуванні деяких задач виникає потреба у доступі до результатів виконання попередньої ітерації (слово “рекурсія” знайоме, думаю, всім). В LabVIEW цю проблему вирішено досить цікаво і різнопланово.

Найбільш простим способом отримати інформацію про виконання попередньої ітерації (або кількох ітерацій) циклу є використання зсувних регістрів (Shift Registers). Для прикладу розглянемо програмку, яка виводить номер ітерації циклу While Loop:

Цикл While

Цикл While Loop

Як ми знаємо, за замовчуванням для циклу While Loop вимкнено автостворення та автоіндексацію масивів, тому індикатор відображатиме лише номер останньої ітерації (останнє значення лічильника) – число 9.

Нехай нам потрібно отримати попереднє значення цього лічильника, тобто результат попередньої ітерації циклу, скориставшись для цього зсувними регістрами. Для початку треба активувати регістри для циклу (як це зробити демонструє наступний рисунок).

 

Створення зсувного регістру

Створення зсувного регістру (Shift Register)

Через термінал ліворуч можна здійснити ініціалізацію регістру, під’єднавши до нього, наприклад, певну константу, а також отримати результат попередньої ітерації. Як використовується ініціалізація демонструє наступний рисунок.

Ініціалізація зсувного регустра

Ініціалізація зсувного регустра

Окрім інформації про передостанню ітерацію можна отримати значення на задану кількість кроків у глибину циклу. Для цього просто треба додати ще кілька “комірок” до регістра, використовуючи контекстне меню.

Доступ до кількох попередніх ітерацій

Доступ до кількох попередніх ітерацій

Таким чином можна отримувати інформацію практично про кожен крок виконання циклу окремо, наприклад отак:

Доступ до кількох попередніх ітерацій

Приклад використання Shift Register для доступу до кількох попередніх ітерацій

 

Почитайте ще оце:


Залиште коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

2 thoughts on “Регістри зсуву: доступ до даних попередньої ітерації циклу