Функция на языке MATLAB
Входные параметры:
n-длинна формируемого массива случайных чисел
nac-начало диапазона случайных чисел
kon-конец диапазона случайных чисел
k_med-количество элементов массива для подсчёта медианы
function [X] = RandomSumMediana(n,nac,kon,k_med)
if(n>0 & nac<kon & k_med>0)
for i=1:n
A(i)= round(nac + (kon-nac)*rand);
B(i)= round(nac + (kon-nac)*rand);
end
k=n;
for i=1:n
if(A(i)<0 & B(k)<0)
AB(i)=A(i)*B(k);
else
AB(i)=A(i)+B(k);
end
k=k-1;
end
j=0;
x_k=0;
for i=1:n
j=j+1;
BUF(j)=AB(i);
if(j==k_med | i==n)
x_k=x_k+1;
X(x_k)=median(BUF);
clear BUF;
j=0;
end
end
else
error('Параметры заданы неверно');
end
end
Рисунок 1. Результаты работы профилировщика
Рисунок 2. Результаты работы профилировщика – строки кода, на выполнение которых затрачено наибольшее время выполнения, а так же покрытие программы
Рисунок 3. Результаты работы профилировщика – строки кода, на выполнение которых затрачено наибольшее время выполнения
Блок-схема алгоритма:
Граф потока данных и линейно-независимые маршруты прохождения программы:
Таблица – перечень операторов и операндов, использующихся в программе
№ | Оператор | Операнд | Количество |
= | |||
+ | |||
- | |||
: | |||
; | |||
for | |||
< | |||
> | |||
() | |||
round | |||
rand | |||
median | |||
* | |||
clear | |||
error | |||
if | |||
& | |||
| | |||
== | |||
' | |||
n | |||
nac | |||
kon | |||
k_med | |||
A | |||
B | |||
k | |||
AB | |||
BUF | |||
i | |||
j | |||
x_k | |||
X | |||
|
|
Оценивание структурной сложности программного модуля по метрике Маккейба:
Для определения цикломатического числа Z исходного графа программы используется полное количество его вершин n, количество связывающих его дуг Y и число связных компонент Q:
Z = Y - n + Q
Z = 25 – 19 + 1 = 7
Оценивание логической сложности программного модуля по метрике Джилба:
В приведенной программе 3 условные конструкции типа IF-THEN-ELSE, это число характеризует абсолютную сложность CL программы по метрике Джилба. Общее число операторов в программе составляет 92 оператора, относительная сложность программы равна cl = CL / 92 = 3 / 92 = 0.033.
Оценивание сложности программного модуля по метрике Холстеда:
n1 = 20 (число уникальных операторов программы, включая символы-разделители,
имена процедур и знаки операций - словарь операторов);
n2 = 14 (число уникальных операндов программы - словарь операндов);
|
|
N1 = 92 (общее число операторов в программе);
N2 = 54 (общее число операндов в программе);
1) полный словарь n = n1 + n2 = 20 + 14 = 34 определяет, что для описания данного алгоритма на данном языке программирования требуется 34 операторов и операндов;
2) поскольку в данном примере представлена программа небольшого объема, длина программы определяется прямым подсчетом, косвенная оценка не производится. При определении полной длины программы Nс = N1 + N2 = 92 + 54 = 146 показана связь между длиной программы и размером словаря, то есть из словаря n, который составляет 34 операндов и операторов составлена программа, полная длина N которой составляет 146 операндов и операторов;
3) объем текста программы V = Nc*log2n = 146*log234 = 743 бита
4) поскольку обычно потенциальный объем неизвестен, для определения качества программирования производится косвенная оценка L = 2*n2 / n1*N2 = 2*14/20*54 = 0,026. Так как L = 0,026 < 1, уровень качества программы достаточно высокий, так как общее количество операндов N2 достаточно близко к минимально необходимому объему словаря n2;
5) уровень языка программирования l= L^2*V = 0,5 низкий (по сравнению с уровнем языка программирования Ассемблер, для которого λ = 0,88);
|
|
6) оценка интеллектуальных усилий на создание программы объемом V = 724 бита E=V/L=28659 характеризует среднее количество различаемых элементов, которые составляют программу и которые необходимо разработать;
7) трудоемкость разработки программы может быть определена по формуле:
t = (Nc^2 * log2n) / 4S,
где S – интенсивность анализа и принятия решения по каждой компоненте, 5 < S < 20. Пусть S = 10, тогда t = (146^2 * log232) / 4*10 = 817 секунд.
Дата добавления: 2016-01-05; просмотров: 17; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!