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

Лiнiйнi алгоритми

Лiнiйнi алгоритми, або лiнiйнi фрагменти алгоритмiв, це тi, що побудованi iз безумовних команд, i в першу чергу, iз команд присвоювання та команд звернення до алгоритмiв-процедур.

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

Приклади розв’язків типових задач

з використанням лінійних алгоритмів

Приклад 1. "Обчислення виразу". Для заданих x i a побудувати алгоритм обчислення значення виразу

алг ВИРАЗ(a,x: дiйс): дiйс

дано значення a,x

треба значення функцiї

поч n,m: дiйс

n := 2 + a^2

m := n + Sin(x)

n := n * Tg(2)

ВИРАЗ := Sqrt(m)/n - Lg(m)

кiн

Даний алгоритм демонструє методику обчислення виразiв. Тут представлено:

  1. Використання промiжної змiнної для обчислення спiвпадаючих фрагментiв виразу;

  2. Перепризначення змiнної, попереднє значення якої вже використано;

  3. Розбиття складного виразу на окремо обчислюванi частини iз застосуванням промiжних змiнних.

Тут також представлено випадок, який показує можливiсть використання саме лiнiйного алгоритму для обчислення виразу. Особливiсть цього випадку полягає в тому, що значення результату може бути одержано при будь-яких значеннях аргументiв.

Приклад 2.. "Рiвновеликий квадрат". Знайти сторону квадрата, що має ту ж саму площу, що й круг iз заданою довжиною кола L.

алг СТОРОНА(L: дiйс): дiйс

поч R,S: дiйс

R := L / ( 2 * 3.14 )

S := 3.14 * R^2

СТОРОНА := Sqrt(S)

кiн

Даний алгоритм теж демонструє методику побудови алгоритмiв. Тут представлено:

  1. Вiдмову вiд перетворень, пiдстановок та виведення остаточної формули для розв'язування задачi;

  2. Використання для розв'язування задачi переважно загальновiдомих формул.

Завдяки цьому алгоритм легше зрозумiти. Ця якiсть алгоритму вважається важливiшою вiд стислостi. Крiм того, така методика зменшує ймовiрнiсть помилок, що можливi пiд час виведення формул.

Приклад 3.. "Обмiн значень". Задано змiннi A i B. Побудувати алгоритм обмiну їх значень.

алг ОБМIН(рез A,B: <тип>)

поч C: <тип>

C := A; A := B; B := C

кiн

Даний алгоритм може бути застосований для обмiну значень змiнних будь-якого спiвпадаючого типу.

Приклад 4. "Площа трикутника". Задано сторони трикутника. Побудувати алгоритм обчислення його площi.

алг ГЕРОН(a,b,c: дiйс): дiйс

поч p: дiйс

p := (a+b+c)/2

ГЕРОН := Sqrt(p*(p-a)*(p-b)*(p-c))

кiн

Приклад 5. "Довжина вiдрiзка". Задано координати кiнцiв вiдрiзка прямої. Знайти довжину вiдрiзка.

алг ДОВЖИНА(x1,y1,x2,y2: дiйс): дiйс

поч

ДОВЖИНА := Sqrt((x2-x1)^2 + (y2-y1)^2)

кiн

Приклад 6. "Отвiр". Є прямокутний отвiр зi сторонами A i B. Побудувати алгоритм, що визначає, чи можна протягнути через цей отвiр дуже довгий пруток прямокутного перерiзу зi сторонами C i D при умовi, що сторони перерiзу паралельнi сторонам отвору.

алг ОТВIР(A,B,C,D: дiйс): лог

поч

ОТВIР := (C<A) i (D<B) або (D<A) i (C<B)

кiн

Результат алгоритму буде iстинним, якщо протягнути пруток через отвiр можливо, i хибним - у протилежному випадку.

Приклад 7. "Сторони трикутника". Задано довiльнi дiйснi числа a,b,c. Побудувати алгоритм визначення, чи може iснувати трикутник з довжинами сторiн, що рiвнi заданим числам.

алг СТОРОНИ(a,b,c: дiйс): лог

поч

СТОРОНИ := (a<b+c) i (b<a+c) i (c<a+b)

кiн

В алгоритмi застосовано вiдому "нерiвнiсть трикутника", що формулює умову його iснування. Неважко переконатись, що ця умова автоматично враховує також те, що значення сторiн трикутника повиннi бути додатнiми числами.

Приклад 8. "Кути трикутника". Задано довiльнi значення кутiв A i B в градусах. Побудувати алгоритм визначення, чи може iснувати трикутник з такими кутами.

алг КУТИ(A,B: дiйс): лог

поч C: дiйс

C := 180-(A+B); КУТИ := (A>0) i (B>0) i (C>0)

кiн

Приклад 9. "Круг". Задано радiус круга R з центром у початку координат. Задано також деяку точку A з координатами (x,y), вiдстань якої вiд початку координат не рiвна R. Побудувати алгоритм, що визначає, чи знаходиться точка A в межах круга.

алг КРУГ(x,y,R: дiйс): лог

поч z: дiйс

z := Sqrt(x^2 + y^2)

КРУГ := z < R

кiн