Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 2 укр.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
179.71 Кб
Скачать

2.4. Логічна схема розрахунку

Розробляючи принципи програмування для ЕОМ ще першого покоління, Л.А.Ляпунов увів поняття схеми розрахунку, припускаючи під ним формалізований запис порядку операцій, що забезпечують перетворення вихідної інформації, що потрібно в задачі. По суті, це були визначення й операторний спосіб представлення алгоритму. У даному випадку важливо те, як зважується питання розробки такої схеми рахунку і враховуються особливості пасивного виконання.

Логічна схема розрахунку (ЛСР) повинна служити проміжною ланкою між сформованою задачною системою р і алгоритмом рішення задачі на ЕОМ. Підкреслимо, що мова йде про алгоритм у предметній області програмування для ЕОМ, а не про широке розуміння і вживання цього терміна. Як проміжну фазу ЛСР можна представити в зручній для програміста формі з використанням змістовного опису операцій, загальноприйнятих математичних абстракцій і формалізмів, елементів мов програмування. Справа в тому, що ЛСР повинна бути ескізом майбутнього алгоритму, у який зручно вносити виправлення, зміни і доповнення. Але це такий продукт, де повною мірою відбивається вся логіка процесу обробки інформації з урахуванням пасивного виконавця.

Необхідно відзначити, що етап розробки ЛСР при розвязанні задач по обробці нечислової інформації дуже часто перетворюється в один з основних. Чисельні методи, що використовуються для розвязку задач числового характеру, малопридатні для представлення й обробки інформації якісного характеру. Формування задачного об'єкту в таких випадках обмежується змістовним описом тих операцій, що необхідні для одержання з вихідних даних яких-небудь суджень, заключень чи переміщень цих даних з деякою якісною трансформацією. Природно, логіка процесу обробки інформації в таких випадках вимагає специфічних операцій, моделей, що не завжди можна представити в абстрактній формі. Задачний об'єкт Σр, як правило, виникає у вигляді ЛСР ще на етапі математичного моделювання чи розробки чисельних методів, навіть термін "чисельні методи", у таких випадках не зовсім доречний, якщо його вживати в буквальному значенні

Розглянемо приклади простих задач і спробуємо виробити загальні підходи до розробки ЛСР.

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

при зміні аргументу t у межах 0≤ t ≤Т і за умови, що для побудови графіка необхідно мати не менш N значень функції.

З адача тривіальна. Функція задана в такому виді, що її можна безпосередньо використовувати в обчислювальному процесі, змінюючи значення аргументу від 0 до Т. Не важко визначити і крок зміни аргументу, оскільки задана кількість значень функції в таблиці, що обчислюється: по залежності

де tmin=0 і tmax=T.

З огляду на характер шуканого результату, вихідне вираження зручне записати в процесуальній формі

де і приймає значення натурального ряду від і = 1 до N указуючи поточний номер аргументу і функції.

Зміна аргументу можна розглядати як операцію ti+1=ti+∆t. Тепер легко сформувати склад заданої системи Σp . Вихідні дані представлені безліччю

DE = {e, α, b, a, tmin, tmax, N}.

Шукані результати

DT = {(ti,yi)|i=1,N}

являють собою упорядкована безліч пар (ti,yi), де елементи взаємно зв'язані функціональною залежністю.

Третя складова F заданої системи Σp повинна бути виражена залежностями:

ti+1=ti+∆t.

Б азис сформований. Можна приступати до розробки логічної схеми рахунку.

Очевидно, основною операцією, що визначає усю структуру алгоритму, весь процес обчислень, є функціональна залежність. Інші операції будуть її "обслуговувати", формуючи необхідні проміжні чи результати керуючі впливи. Головним цільовим призначенням ЛСР є встановлення всіх необхідних допоміжних операцій і послідовностей їх в алгоритмі з урахуванням основних операцій і особливостей пасивного виконавця. Ці доповнення до базису повинні виключити з пасивної системи будь-які "творчі" моменти в ході вирішення задачі.

В ираз

можна вважати операцією тоді, коли константи е, α, b і а одержали свої числові значення, а змінна ti - значення, обумовлене умовою ti+1=ti+∆t. У такий спосіб перед базовою операцією необхідно ввести значення констант, обчислити крок зміни аргументу ∆t. Це, у свою чергу, вимагає введення вихідних даних N, tmin і tmax. Виходить, усі вони повинні бути введені перед будь-якими основними і допоміжними операціями.

З урахуванням цих зауважень можна частково сформувати ЛСР у виді послідовності операцій і вказівок.

1 . Ввести вихідні дані DE.

2. Обчислити

3. Припускати i=1; ti=tmin.

4. Обчислити

П ри виконанні цих вказівок перший раз буде отримана пара обумовлених даних t1, у1. Для подальшого розрахунку потрібно змінити значення аргументу й індексу. Це легко зробити.

5. Обчислити чергове значення аргументу ti+1=ti+∆t.

6. Вважати i на одиницю більше.

Далі необхідно повернутися до виконання п. 4, отже, у ЛСР потрібна деяка вказівка. Але тут виникає питання про завершення розрахунку. Пасивний виконавець не може самостійно вирішити питання про припинення розрахунку. Потрібний який-небудь "спостерігаючий" механізм. І такий механізм є. Як покажчик може виступити значення індексу, яке можна порівняти з максимально припустимим, а воно дорівнює N. Тоді можна сформувати таку складну вказівку:

7. Якщо i≤N, то продовжити обчислення починаючи з п. 4, інакше обчислення закінчити.

Тут сформована ЛСР у такій формі, що мало відрізняється від алгоритму, Фактично програміст може складати деякий ескіз логіки процесу розвязку задачі в довільній, зручній для нього формі. Можна цю схему зробити так, що вона взагалі не буде відрізнятися від алгоритму. Це те, до чого необхідно прагнути і для чого, власне кажучи, і служить ЛСР. Але не завжди перехід від ЛСР до алгоритму простий. Частіше виникає потреба повторити етапи попередньої підготовки задачі, уточнити математичну модель, знову шукати придатні чисельні методи.

Розглянутий приклад дозволяє сформулювати деякі методичні рекомендації із синтезу ЛСР.

  1. Перед розробкою ЛСР необхідно переконатися у якості задачної системи Σp, однозначності і повноті вихідних даних DЕ- і шуканих результатів Dr.

  2. Виділити головну операцію із сукупності F

  1. Визначити положення інших операцій із сукупності щодо головної.

  2. Виявити необхідні допоміжні операції і визначити їхнє положення щодо головної і всіх інших із сукупності F.

  3. Встановити особливості процесу і передбачити операції по зміні характеру його проходження. Для цього часто необхідно виявити чи внести в схему додаткові дані – параметри керування процесом.

  4. Перевірити працездатність ЛСР, уподібнившись пасивному виконавцеві.

Дуже важливо пам'ятати, що будь-яка операція здійсненна тоді, коли всім символам формули, що виражає деякі величини, перед цією операцією привласнені конкретні числові (чи інші) значення. Саме це і дозволяє установити "черговість" операцій у ЛСР і характер керуючих впливів.

Звичайно, рекомендація з формування ЛСР являє собою загальні орієнтири, підходи, що повинні дисциплінувати виконавця і не більш того. Формалізувати подібні процеси не вдається, оскільки вони є творчим актом, що має феноменологічну основу. І якщо для чисто інженерних задач, для яких основою побудови алгоритму є абстрактна математична модель, розробка ЛСР і алгоритму на її базі зводиться до визначення допоміжних операцій і організації керування, то багато нечислових задач для створення алгоритму вимагають колосальних витрат розумової праці. Програміст, за словами академіка А.П.Єршова, "повинний мати здатність першокласного математика до абстрактного мислення в сполученні з едисоновським талантом споруджувати усе, що завгодно з нуля й одиниці" [16].