Б С Бусигін - Прикладна інформатика - страница 38

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 

х       лх

^ (х + п)(х - п)

5. Обчислити суму з точністю до 8=0.00000001. У = V-2—-

6. Обчислити наступні суми з визначеною точністю:

2   8 = »(4п - 1)(4п +1)

1 ОО 1

1-1-

2 п=1(2п - 1)(2п +1)

sin х = V (-1)

п=1

ос 2п-1 п-1 Х

(2п -1)!

(1 ± Х) 2 = 1 + х +н--х ++ ...

7. Обчислити наступні суми з визначеною точністю (при х=т, де т-номер в журналі).

(1 - х ) = 1 + 1

п=1

т(т + 1)...(т + п -1) п п! х

(1 + х ) = 1 +> (-1) •

т(т + 1)...(т + п -1) ^п

п=1 п! 8. Обчислити ряд.

1    » 2•(- 1)п(22п-1 -1) 7

у(х) = + > -^-^-Ц-п 7 х

х   п=1 (2п)

6

2 п-1

8.21. Нескінченні множення та їх обчислення

Одним з достатньо розповсюджених, є також процес множення одного числа на інше.

С := А ■ В;

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

Циклічним множенням зветься процес помноження деякої величини на те число, яке відображує результат множення усіх попередньо перемножених чисел.

У математичних виразах воно має позначення П, а його дію можна відобразити на графічній схемі таким чином (рис. 8.43).

і а2 ... а к-і) а к ^-у-'

к-1

п

п=1

Рис. 8.43. Схема множення

Розглянемо одну з формул, що описує процес множення (8.13). Якщо почати підставляти у неї значення п = 1, 2, 3, 4, 5, ... , а>, то елементи цієї послідовності співмножників (рос. - сомножителей) будуть виглядати так:

1111 1

2  + її Г1 + її     Г і + її" (8.13)

А результати обчислення цієї формули при зміні п, котре моделює К, наведено у таблиці 8.46.

Процес обчислення результату перемноження п елементів, що наведений у цієї таблиці, обмежений величиною є= 1е-7. Тому він закінчився на значенні К = 3162. Треба особливо відмітити, що підхід щодо перевірки вимоги завершення вищенаведеного ітераційного процесу істотно відрізняється від того, котрий розглядався при обчисленні формул додаванні. Це пов'язано з тим, що значення чергового елементу напряму не впливає на кінцевий результат. Тому у алгоритмі був використаний підхід, що закінчує процес обчислення у випадку, коли різниця поміж попереднім і поточним значеннями результату множення стає менше є = 1е-7 (рис. 8.44). Тоді можна бути впевненим, що подальші дії не призведуть до зміни цифр числа у перших 7-ми позиціях (при є = 1е-7).

Таблиця 8.46

Обчислення результатів множення за формулою (8.13)

Значення п

Значення . 1 .

(;+')

к

Значення формули П

п=1

1

2

3

1

0.5

0.5

2

0.6(6)

0.33333333

3

0.75

0.25

4

0.8

0.2

5

0.83(3)

0.16666666

6

0.85714285

0.14285714

7

0.875

0.125

8

0.88888889

0.11111111

9

0.9

0.1

10

0.90909090

0.09090909

11

0.91666666

0.08333333

51

0.98076923

0.01923007

100

0.99009900

0.00990099

160

0.99378882

0.00621118

400

0.99750623

0.00249376

1400

0.99928622

0.00071377

3161

0.99968374 0.00031625

3162

0.99968384 0.00031615

Треба відмітити, що елементи формули множення (стовпчик 2, табл.8.46), не зменшується, як у процесі додавання, а зростає.

і • Я2 ... а к-і) 4-у-'

п

п=1

і а2 . а к-і а к)

V_ _У

к

п

п=1

є

1

Рис. 8.44. Схема порівняння елементів процесу множення для його

своєчасного завершення

00 ^

Алгоритм обчислення множення значень за формулою Пті-л можна

n=1 \- + 1

записати так:

Uses Crt;

Const Eps = 1.e-7;    {Задаємо точність обчислення 8=0.0000001}

Var

Mun, Mun_1, Mun_2,  Elm,  Chis,  Znam :  Real;{Об'являємо

змінні}

n :  Integer;   { Об'являємо змінну для обчислення n} Begin ClrScr;   {Очищаємо екран процедурою ClrScr}

n := 1; {Ініціалізуемо n}

Mun := 1;   { Заносимо одиницю у змінну Mun для множення на

неї}

Mun_1  := 1;  {Заносимо константу 1 для виконання вимоги

циклу і входу у нього} Mun_2  := 0.5;{ Значення першого елемента множення,

обчислене користувачем}

while    abs(Mun_1 - Mun_2)   > Eps do begin

Mun 1:=Mun 2;   {Запам'ятовування передуючого значення функції,

а потім попереднього значення добутку для порівняння з поточним} n := n + 1;   { Моделюємо зміну значень індекса n} Chis  := 1; { Моделюємо значення чисельника дроби} Znam := 1 + 1/ n; { Моделюємо значення знаменника дроби} Elm := Chis/Znam;   {Обчислюємо значення чергового

елементу за формулою -ґ—1}

(П+1)

Mun := Mun * Elm;   {Обчислюємо добуток } Mun_2  := Mun;   {Запам'ятовуємо значення добутку} end;

Writeln('Rezultat= ', Mun);   {Виводимо на екран результат} End.

Вправи

1. Обчислити наближене значення нескінченного множення з точністю до є=0.0001 наступні вирази.

V    n )

n = 1

4n2 - 1

8.22. Підпрограми: процедури і функції. Формальні і фактичні параметри. Передача параметрів "за значенням" та "за адресою"

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

Але надзвичайно широко розповсюджена інша форма повторювання послідовностей дій, що багаторазово виконуються. У алгоритмах такого роду у різних місцях програми зустрічається однакові фрагменти послідовностей операторів, які відрізняються тільки по значенням початкових (рос.-исходных) даних. При розробці програми за таким алгоритмом потрібно задавати одну і ту ж групу операторів, що відповідають кожному з фрагментів, які повторюються. Для підвищення ефективності програмування у мові ТП уведено поняття підпрограми.

Група операторів, що буде повторно використовуватися, оформлюється у вигляді самостійної програмної одиниці - підпрограми. Вона записується одноразово у розділі описів головної програми, а у відповідних місцях просто викликається. При виклику вказується ім'я підпрограми і супутні цьому виклику, так звані, фактичні параметри.

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

так далі (рис. 8.45).

Головна програма

Program Progl;

Виклик підпрограми Р1

Виклик підпрограми Р1

Епсі.

Рис. 8.45. Взаємодія головної програми з підпрограмами, що викликаються

Розрізняються два види підпрограм:

О Підпрограма-функція, результатом роботи якої є одне значення будь-якого типу (дійсного, цілого, стрінгового, логічного та ін.).

© Підпрограма-процедура, результатом роботи якої може бути декілька значень різних типів або послідовності наборів даних різних типів (дійсних, цілих, масивів, записів та ін.).

Тому розрізняються і форми їхніх викликів. Ім'я функції використовується у виразах у виді операнда, тобто елемента виразу. Навпаки, виклик процедури завжди є оператором. Але, так як загальні механізми їх роботи практично однакові, тут і далі під підпрограмами будемо розуміти і процедури і функції.

Процедури і функції описуються у спеціальному розділі описової частини головної програми слідом за описом її констант і змінних. Опис кожної з цих підпрограм починається з заголовка, який містить назву відповідного блоку операторів (Procedure або Function), ім'я цього блоку, список формальних параметрів, а функція ще додатково об'яву типу результату, який вона повертає у програму, що її викликає (рис. 8.46).

P rocedure S1(a, b, c, ...: real, i, j, k, ... : integer;

var S, T, ...:real);

begin

<Оператори>

S := 3.141592653 * a * b;

T := 2 * S;

{Процедура повертає значення виразів через параметри S i T}

<Оператори>

end;

Function S2(a, b, c, ...:real, i, j, k, ... : integer): real; Begin

<Оператори> S2 := 3.141592653 * R * R; {Функція повертає результат через ім'я S2} <Оператори>

end;

Рис. 8.46. Схематичне уявлення описів процедури і функції

Заголовки підпрограм складаються з:

О Визначених зарезервованих слів (Procedure або Function).

© Імен цих підпрограм, що визначаються у відповідності з загальними правилами побудови ідентифікаторів.

© Параметрів, що уявляють собою перелік імен об'єктів для позначення початкових даних і результатів їхньої роботи з обов'язковим описом типів цих даних. Ці параметри звуться формальними.

Заголовок підпрограми-функції завершується описом типу результату, який вона повертає у програму, що її викликає.

У мові ТП можливо описувати підпрограми, що не містять перелік формальних параметрів (рис. 8.47).

Pro cedure beg in

Sl;

end ;

<Оператори>

Function

S2: real;

begin

 

end;

<Оператори>

 

 

Рис. S.47. Опис процедур і функцій, які не містять формальних параметрів

Функція відрізняється від процедури також і тим, що у її кінці обов'язково повинен знаходитися оператор привласнення обчисленого результату до імені цієї функції (рис.8.48, стрічки 4 і 6).

Program Sfunc; Var

x,  y,   z  : real; Function  Sqrt_11(elm :real):Real; {Ф-ція обчислює корінь другого

ступеня}

Begin

Sqrt_11  := sqrt(elm);   {Тут elm - формальний параметр}

End; Begin

X  := 24.68;

Y := Sqrt_ll(X); {Тут X - фактичний параметр, тобто той, що має

значення}

Writeln('Значення Y=', Y);

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 


Похожие статьи

Б С Бусигін - Прикладна інформатика