Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб3и4_Арх.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
297.98 Кб
Скачать

Приклад

Виконаємо програмування функції f=(-b+sqrt(b2-4ac)) /2a. ЯПФ цієї функції матиме вигляд (суміщені перші два етапи):

Програма представлена у файлі прикладу «Example.alg».

8. Приклад програмування циклів і умовних переходів

Програмування циклів на обчислювальній системі під управління потоком даних пов'язане з поряд особливостей. Розглянемо їх на приведеному нижче прикладі.

  • Команда в обчислювальній системі готова до виконання якщо для неї готові керуюче слово і обидва операнди. Програмування циклів пов'язане з повторюваністю виконання певних команд. Операнди команд тіла циклу можна розбити на два класи. Перший клас – операнди, що обчислюються на попередній ітерації, до них так само відноситься і змінна циклу (у прикладі – i, f). На першому кроці операнди поступають з пристроїв введення, а потім з кожної наступної ітерації. Так, для команди 4 (порівняння змінної циклу з кінцевим значенням) з пристрою введення поступає початкове значення змінної циклу i=1, а наступні змінною поступають з попередньої ітерації. Другий клас операндів – константи, значення яких не міняється в циклі. До таких операндів відносяться кількість ітерацій циклу, константи для виконання операцій. Під час вступу команди на обчислювальний блок операнди з відповідних елементів пам'яті операндів/асоциативній пам'яті віддаляються за винятком констант. Вони вводяться спочатку з пристрою введення і знаходяться у відповідному елементі пам'яті. Константи на малюнку нижче позначені зірочкою, а в програмі поле «Константа» такого операнда повинно містити «1». Необхідно пам'ятати, що двох констант у однієї команди бути не може, інакше це приведе до постійного виконання однієї і тієї ж команди, яка весь час знаходитиметься в стані готовності.

  • Крім того, константи можуть не тільки вводитися з пристроїв введення, але і обчислюватися (наприклад в команді 3 обчислюється константа – кількість ітерацій циклу)

  • Кожна команда повинна мати операнди з різними номерами (поле «Номер операнда»). Причому в більшості випадках важливий порядок операндів. Наприклад команда «віднімання» виконує операцію «Операнд№0»–«Операнд№1». А для команд управління операнд з номером 1 є службовим (наприклад у вентиля він повинен бути рівний TRUE або FALSE, тобто «1» або «0»).

  • Результатом операцій «2-Розмножувач» і «N-Розмножувач» є група операндів з різними адресами і однаковими значеннями полів «Номер операнда». Тому команди, для яких призначалися ці операнди повинні їх приймати на однакові входи (наприклад команда №11 обчислює операнди з номером «0» для команд 13 и 7).

  • Як видно з рисунку цикл містить 3 незалежних гілки: виведення результату, накопичення результату і інкрементування змінної циклу. Важливим елементом циклу є синхронізація незалежних гілок, інакше (див. приклад) при великому об'ємі обчислень в тілі циклу змінна циклу може бути інкрементована кілька разів, і результат обчислень буде невірним. Роль синхронізації виконує «Повторювач» або в прикладі команда №15. Ця команда «затримує» ініціалізацію нової ітерації циклу до тих пір, поки не буде виконано тіло циклу на поточній ітерації.

  • Команда №14 є допоміжною, служить для перетворення поля «Номер операнда» (див. пункт 3), оскільки команда №12 результатом має операнд з номером «0», а для команди №15 потрібний операнд з номером «1».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]