Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод указания ИНФОРМ Общ курс Стационар укр.doc
Скачиваний:
8
Добавлен:
10.02.2016
Размер:
2.89 Mб
Скачать

3.10. Приклад виконання задачі 4

Завдання: розробити алгоритм комбінованої структури й скласти програму.

Умова: Обчислити значення функції

, 0,5 < с < 2,5

y = , с ≤ 0,5 або с ≥ 2,5,

для с = -1,5 ; -0,5 ; -0,1 ; 0 ; 0,5 ; 1,75 ; 1,8 ; 2,5 ; 3,4 ; 5,7.

Тут . Знехтуватичленами ряду, меншими ε = 10 - 4

Розв'язання: позначимо z → Z, zn → ZN, i →I, n → N, ε → EPS як прості змінні, c → C(I), y → Y(I) як одномірні масиви, довжина кожного з яких становить 10 елементів ( по кількості заданих значень с).

Комбінований алгоритм даної задачі складається із фрагментів алгоритму, що розгалужується, і двох циклічні: простого (із заздалегідь відомим числом повторень) і ітераційного (для обчислення суми Z), припинення якого відбувається при досягненні заданої точності обчислень zn < ε = 10-4.

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

Перша частина алгоритму виконує обчислення змінної Z (ітераційний цикл) значення якої використовується в другої частині (простий цикл обчислення функції Y(I) з розгалуженням – вибором відповідної формули, в залежності від введеного значення змінної C(I)).

1-й варіант

Блок – схема

+

+ -

Програма

REM алгоритм комбінованої структури ‘оператор - коментар

DIM EPS,N,Z,ZN,I,C(1 TO 10),Y(1 TO 10) ‘ опис змінних

INPUT “ EPS ”; EPS ‘введення даних

DATA –1.5,-.5,-.1,0,.5,1.75,1.8,2.5,3.4,5.7 ‘ рядок даних

N = 1: Z = 0 ‘оператори присвоювання

DO ‘оператор начатку циклу

ZN = 0.1*N / (N+0.6)^3: Z=Z+ZN ‘оператори присвоювання

N= N + 1

LOOP WHILE ABS(ZN) > EPS ‘завершення циклу

PRINT “Z=”; Z ‘виведення

FOR I = 1 TO 10 ‘оператор начатку циклу

READ C(I) ‘ введення даних

IF C(I)> .5 AND C(I)< 2.5 THEN ‘оператор умовного переходу

Y(I) = (C(I) * Z - 3) ^ 2 ‘оператор присвоювання

ELSE Y(I) = .5 * Z ^ 3 - 5 * C(I) оператор присвоювання

END IF ‘завершення оператора умовного переходу

PRINT “Y”; I; “=”;Y(I) ‘виведення

NEXT I ‘завершення циклу

END ‘ кінець програми

2-й варіант (з використанням підпрограми користувача)

Зауваження

Фрагмент обчислення Z виділений в окремий програмний модуль – підпрограму користувача (SUB) з іменем SUMZ.

Місце підпрограми SUB - після тексту основного модуля.

Уведення програми, у тексті якої перебуває звертання до підпрограми користувача, виконується за 2 кроки:

- після введення останнього рядка основної програми необхідно ввести частину заголовка процедури, а саме SUB <ім'я> і натиснути ENTER.

На екрані з'являться 3 рядки

SUB ім'я

-

END SUB

- уведення тексту процедури.

Після введення останнього оператора підпрограми необхідно натиснути клавішу F2.

На екрані в поле діалогу з'являються імена головного модуля (наприклад, UNTITLED) і функції.

За допомогою курсорних клавіш і ENTER можна перейти в поле редагування головного модуля або підпрограми.

Запуск процедури SUB здійснюється з головної програми оператором CALL

CALL ім'я підпрограми (фактичний параметр[,ф.п....])

Обмін даними між головним модулем і підпрограмою, здійснюється 2 способами:

1. Використання глобального оголошення типів даних за допомогою оператора DIM SHARED (дані, які оголошені глобальними, доступні як в основній програмі, так і в процедурі)

2. Використання механізму формально-фактичних параметрів (тут підпрограма використовує формальні параметри, яки визначаються за допомогою фактичних параметрів при звертанні до підпрограми.

Між фактичними й формальними параметрами існує відповідність по типу, кількості й порядку проходження.

Обоє способи обміну можуть бути використані в одній процедурі.

Після виконання підпрограми SUB керування передається оператору, що знаходиться за оператором – викликом підпрограми CALL