Цель исследования. Цель — получить навыки в расчете базовых метрик Холстеда, относящихся к метрикам размера программ.
Основу метрики составляют шесть измеряемых характеристик программы:
• n1 — число уникальных операторов программы, включая символы-разделители, имена процедур и знаки операций (словарь операторов);
• n₂ — число уникальных операндов программы (словарь операндов);
• N1 — общее число операторов в программе;
• N2 — общее число операндов в программе;
• n’1— теоретическое число уникальных операторов;
• n’2 — теоретическое число уникальных операндов.
Опираясь на эти характеристики, получаемые
непосредственно при анализе исходных текстов программ, М. Холстед вводит следующие оценки:
■ словарь программы:
n=n1+n2
■ длина программы:
N=N1+N2
■ измеряемый в битах объем программы:
V = Nlog2n
Под битом подразумевается логическая единица информации — символ, оператор, операнд.
Теоретический словарь программы n’, т. е. словарный запас, необходимый для ее написания:
n'=n’1+n’2
Используя n’, Холстед вводит оценку V’
V’=n’log2n’
с помощью которой описывается потенциальный объем программы, соответствующий максимально компактному тексту программы, которая реализует данный алгоритм.
Пример выполнения работы. Рассмотрим выполнение данной работы на примере программы вычисления выражения у = sin x, листинг которой представлен далее:
# include <iostream>
#include <stdio.h>
using namespase std;
main( )
{
const double cst=0.0001;
double х, у;
int n; double bs;
cin<<x; // Инициализация х путём консольного ввода
у=х;
n=2;
bs=x;
do
{
bs= -bs*x*x/(2*n-1/2*n-2);// формирование слагаемого
n++;
y+=bs;
}
while(abs(bs)>=cst);// При выполнении условия выход из цикла
cout>>x>>y>>cst;
} В таблице представлен расчет метрик Холстеда по формулам
Словарь программы: n=n1+n2=15+6=21
Длина программы: N=N1+N2=37+24=61
Объем программы: V = Nlog2n= 61log221≈276
ЗАДАНИЕ: Ввести массив, состоящий из 16 элементов целого типа. Заменить все элементы, кратные трем, нулями. Определить количество замен.
Основу метрики составляют шесть измеряемых характеристик программы:
• n1 — число уникальных операторов программы, включая символы-разделители, имена процедур и знаки операций (словарь операторов);
• n₂ — число уникальных операндов программы (словарь операндов);
• N1 — общее число операторов в программе;
• N2 — общее число операндов в программе;
• n’1— теоретическое число уникальных операторов;
• n’2 — теоретическое число уникальных операндов.
Опираясь на эти характеристики, получаемые
непосредственно при анализе исходных текстов программ, М. Холстед вводит следующие оценки:
■ словарь программы:
n=n1+n2
■ длина программы:
N=N1+N2
■ измеряемый в битах объем программы:
V = Nlog2n
Под битом подразумевается логическая единица информации — символ, оператор, операнд.
Теоретический словарь программы n’, т. е. словарный запас, необходимый для ее написания:
n'=n’1+n’2
Используя n’, Холстед вводит оценку V’
V’=n’log2n’
с помощью которой описывается потенциальный объем программы, соответствующий максимально компактному тексту программы, которая реализует данный алгоритм.
Пример выполнения работы. Рассмотрим выполнение данной работы на примере программы вычисления выражения у = sin x, листинг которой представлен далее:
# include <iostream>
#include <stdio.h>
using namespase std;
main( )
{
const double cst=0.0001;
double х, у;
int n; double bs;
cin<<x; // Инициализация х путём консольного ввода
у=х;
n=2;
bs=x;
do
{
bs= -bs*x*x/(2*n-1/2*n-2);// формирование слагаемого
n++;
y+=bs;
}
while(abs(bs)>=cst);// При выполнении условия выход из цикла
cout>>x>>y>>cst;
}
В таблице представлен расчет метрик Холстеда по формулам
Словарь программы: n=n1+n2=15+6=21
Длина программы: N=N1+N2=37+24=61
Объем программы: V = Nlog2n= 61log221≈276
ЗАДАНИЕ:
Ввести массив, состоящий из 16 элементов целого типа. Заменить все элементы, кратные трем, нулями. Определить количество замен.