Функция на языке 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!