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

Лабороторна робота №3

Завдання:

Написати програму, в якій виконати обчислення із застосуванням заданої функції.Розрахувати працемісткість використаного алгоритму. Вважати, що при використанні однієї змінної використовується одна умовна α одиниця пам’яті, при виконанні однієї машинної операції використовується одна умовна β одиниця пам’яті. Вагові коефіцієнти: с1=с3=0,2; с2=с4=0,3.

Пояснення до завдання:

Програма повинна формувати масив за задною формулою та виводити сформований масив на екран. Також програма повина розраховувати та виводити на екран працемісткість алгоритму.

Теоретичні відомості:

Під трудомісткістю алгоритма для данного конкретного входу – Fa(N), будемо розуміти кількість «елементарних» операцій здійснюваних алгоритмом для вирішення конкретної проблеми в даній формальній системі.

Комплексний аналіз алгоритма може бути виконаний на основі комплексної оцінки ресурсів формальної системи, які потрібні для алгоритму для вирішення конкретних проблем. Очевидно, що для різних областей застосування, об'єм ресурсів буде різний, що приводить до наступної комплексної оцінки алгоритма:

c1 * Fa(N) + c2 *  + c3 * Sd + c4 * S , де ci – вага ресурсів.

Для отримання функції трудомісткості алгоритму, представленого у формальній системі введеної абстрактної машини необхідно уточнити поняття «елементарних» операцій, співвіднесених з мовою високого рівня.

В якості таких «елементарних» операцій пропонується використовувати наступні:

1) Просте присвоювання: а:= b;

2) Одновимірна індексація a[i] : (адреса (a)+i*довжина елемента);

3) Арифметичні операції: (*, /, -, +);

4) Операції порівняння: a < b;

5) Логічні операції (l1) {or, and, not} (l2);

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

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

А) Конструкція “Слідування”:

Трудомісткість конструкції є сума трудомісткостей

блоків, слідуючих один за іншим.

F «следование» = f1 + … + fk, де k – кількість блоків.

B) Конструкція «Розгалуження»:

if ( l ) then

fthen з імовірністю p

else

felse з імовірністю (1-p)

Загальна трудомісткість конструкції «Розгалуження» вимагає аналіз виконання переходів на блоки «Then» і «Else» і визначається як:

F «ветвление» = fthen * p + felse * (1-p).

C) Конструкція «Цикл»

for i ¬ 1 to N

end

Після зведення конструкції до елементарних операцій її трудомісткість визначається як:

F «цикл» = 1+3*N+N*f«тіла циклу»

Код програми:

program Lexus;

uses crt;

const x=-3.41; c1=0.2;c2=0.3;c3=0.2;c4=0.3;M=2;

type mas=array[1..7] of real;

var R:mas; i:integer;y,Sd,Fa:real;

begin

y:=32.2;

for i:=1 to 7 do begin

R[i]:=(sqrt(abs(sin(x*y)+cos(x*y)))+sqrt(abs(sin(x)+cos(x))))/(sqrt(abs(sin(y)+cos(y)))+2.1);

writeln('R[',i,']= ',R[i]);

y:=y+0.2;

end;

writeln;

writeln('Трудомiсткiсть:');

Fa:=3+3*i+19*i;

sd:=1+1*i;

writeln('c1*Fa+c2*M+c3*Sd= ',c1*Fa+c2*M+c3*Sd);

end.

Пояснення до виконаного завдання:

При запусканні програми одразує видається результат виконання:

виводяться сформовані елементи масиву R[1]...R[7] , формула по якій обчислюється трудомісткість і результат трудомісткості.

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