Оценка характеристик программы
Используя сформированные таблицы с необходимыми параметрами для расчета и применяя соотношения Холстеда, вычислим характеристики рассматриваемой программы:
-
словарь программы: n = n1 + n2 = 28 + 16 = 44;
-
длина реализации: N = N1 + N2 = 116 + 36 = 152;
-
длина программы: N ~ = n1* log2 n1+ n2* log2n2 = 28* log228+16* log216=28*4,81+16*4=134,68+64=198,68;
-
объем программы в битах: V = (N2+ N1) * log2 (n1 + n2) =(116 + 36) * log2(28 + 16) = 152 * log244 = 152*5,46 = 829,92;
-
потенциальный объем программы: V* = (n2*+ 2) *log2(n2 + 2) = (10 + 2) * log2(10 + 2) = 12 *3,58 = 42,96;
-
уровень программы: L = V*/ V= 42,96 / 829,92 = 0,052;
-
уровень языка: = L* V* = 0,052 * 42,96 = 2,23;
-
интеллектуальное содержание программы: I= L *V =0,052 * 829,92 = 43,16;
работа по программированию: E=V / L = 829,92 / 0,052 = 15960.
Сведем все результаты расчетов метрик Холстеда в таблицу 5.
ВЫВОД: Уровень исследуемой программы весьма низкий, так как потенциальный объем программы в значительной степени меньше ее реального объема.
Техническое задание:
2)Дана целочисленная прямоугольная матрица. Определить:
-
количество строк, содержащих хотя бы один нулевой элемент;
-
номер столбца, в котором находится самая длинная серия одинаковых элементов.
3)Написать программу расчета по двум формулам
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int n1, nn;
int sc;
sc = 0;
dataGridView1.Rows.Add(5);
int[,] array = new int[32, 32];
Random rand = new Random();
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
dataGridView1[i, j].Value = rand.Next(5);
}
}
for (int j = 0; j < 5; j++)
{
for (int i = 0; i < 5; i++)
{
if (Convert.ToInt32(dataGridView1[i, j].Value) == 0)
{
sc++;
break;
}
}
}
int nj = 1;
int maxp = 1;
for (int j = 0; j < 5; j++)
{
n1 = 1;
for (int i = 0; i < 4; i++)
{
if (Convert.ToInt32(dataGridView1[i, j].Value) == Convert.ToInt32(dataGridView1[i+1, j].Value))
{
n1=n1+1;
if (n1 > maxp)
{
maxp = n1;
nj = j;
}
}
else
{
n1 = 1;
}
}
}
textBox1.Text = Convert.ToString(sc);
textBox2.Text = Convert.ToString(nj+1);
}
}
}
Рисунок 1 – Блок схема 1-ой программы
Рисунок 2 – Блок схема для Button1 2-ой программы
Рисунок 2 – Блок схема для Button2 2-ой программы
Тестирование программы
Программа 1
|
a |
b |
Z1 |
Z2 |
Корректные значения |
1 |
2 |
-0,37206437411682 |
-0,37206437411682 |
Граничные значения |
0 |
0 |
1 |
1 |
Некорректные значения |
sdfdsfds |
ew |
ошибка |
ошибка |