Хелпикс

Главная

Контакты

Случайная статья





Отчет по лабораторной работе №2



 

Министерство образования Республики Беларусь

Учреждение образования

«Белорусский государственный университет информатики и радиоэлектроники»

 

 

Кафедра метрологии и стандартизации

 

Отчет по лабораторной работе №2

на тему: «Метрики Холстеда. Метрики сложности потока данных. »:

Вариант № 10

 

 

Выполнила: студент гр. 624401 Корешков М. Л.
Проверил: Трус В. В.

 

 

Минск 2017

Задание: Ввести массив А (10, 10). Найти максимальный элемент в главной диагонали и минимальный элемент в побочной диагонали массива А и поменять данные элементы местами. Вывести максимальный и минимальный элементы, номера строк и столбцов, в которых они находятся, исходный и результирующий массивы.

 

Метрики Холстеда. Метрики сложности потока данных.

Для разработанной в первой индивидуальной практической работе схемы алгоритма разработать текст программы. По тексту программы рассчитать метрики Холстеда и метрики сложности потока данных (спен и метрику Чепина).

import java. util. Random;
public class Code {
public static void main(String[] args) {
       int A[][]=new int[10][10];
       int i, j, max, min, MaxPosition=0, RowMin=0, ColumnMin=0;
       Random rnd = new Random();
       for(i=0; i< 10; i++)
       {
           for(j=0; j< 10; j++)
            {
               A[i][j]=RandomGenerator. nextInt(100);
           }
       }
       System. out. println(" Initial array: " );
       for(i=0; i< 10; i++)
       {
           for(j=0; j< 10; j++)
           {
              System. out. print(" " +A[i][j]);
           }
           System. out. println();
       }
       max=A[0][0];
       min=A[0][9];
       for(i=0; i< 10; i++)
       {
           if(A[i][i]> max)
           {
               max = A[i][i];
               MaxPosition = i;
           }
       }
       System. out. println(" Max element = " +max+". Row: " +(MaxPosition+1)+". Column: " +(MaxPosition+1)+". " );
       j=9;
       for(i=0; i< 10; i++)
       {
           if(A[i][j]< min)
           {
               min=A[i][j];
               RowMin=i;
               ColumnMin=j;
           }
           j--;
       }
       System. out. println(" Min element = " +min+". Row: " +(RowMin+1)+". Column: " +(ColumnMin+1)+". " );
       i=A[MaxPosition][MaxPosition];
       A[MaxPosition][MaxPosition]=A[RowMin][ColumnMin];
       A[RowMin][ColumnMin]=i;
       System. out. println(" Result array: " );
       for(i=0; i< 10; i++)
       {
           for(j=0; j< 10; j++)
           {
               System. out. print(" " +A[i][j]);
           }
           System. out. println();
       }
}

 

}

 

Словарьпрограммы h = 19+8 = 27

Длина программыN = 226+89= 315

Объем программы V = 315log2 27= 315*4. 755=1487. 825

 

Метрика Чепина базируется на анализе характера использования в программе переменных. Существуют различные варианты метрики Чепина. Ниже рассмотрен вариант (назовем данный вариант полной метрикой Чепина), в котором все множество переменных программы разбивается на четыре функциональные группы:

1. Р – вводимые переменные, содержащие исходную информацию, но не модифицируемые в программе и не являющиеся управляющими переменными;

2. М – модифицируемые переменные и создаваемые внутри программы константы и переменные, не являющиеся управляющими переменными;

3. С – переменные, участвующие в управлении работой программного модуля (управляющие переменные);

4. Т – не используемые в программе («паразитные») переменные, например, вычисленные переменные, значения которых не выводятся и не участвуют в дальнейших вычислениях.

Значение метрики Чепина определяется по формуле:

Q = a1 p + a2 m + a3 c + a4 t,

где а1, a2, a3, a4 – весовые коэффициенты; p, m, c, t – количество переменных в группах Р, М, С, Т соответственно.

Весовые коэффициенты позволяют учитывать различное влияние на сложность программы каждой функциональной группы. Наиболее часто применяются следующие значения весовых коэффициентов: а1 = l, а2 = 2, а3 = 3, а4 = 0, 5.

Табл 2.

Расчет метрики Чепина.

 

Полная метрика Чепина

Метрика Чепина ввода/вывода

Группа переменных Р М С Т Р М С Т
Переменные, относящиеся к группе i, j A[][], MaxPosition, RowMin, ColumnMin, max, min A[][], MaxPosition, RowMin, ColumnMin, max, min
Количество переменных в группе
Метрика Чепина

Q = 1*0+2*2+6*3+0, 5*0=20

Q = 1*0+2*0+3*6+0, 5*0=18

 

 

Спен идентификатора – это число повторных появлений идентификатора (число появлений после его первого появления) в тексте программы. Идентификатор, встречающийся в тексте программы п раз, имеет спен, равный п—1.

Величина спена связана со сложностью тестирования и отладки программы. Например, если спен идентификатора равен 10, то при трассировании программы по этому идентификатору следует ввести в текст программы 10 контрольных точек, что усложняет тестирование и отладку программы.

 

Идентификатор i j A[][] max min MaxPosition RowMin ColumnMin
Спен

 

Суммарный спен программы

 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.