Метрики Холстеда
Автор: Опрятнова Татьяна • Март 19, 2021 • Практическая работа • 630 Слов (3 Страниц) • 982 Просмотры
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра «Автоматизированные системы обработки информации и управления»
Практическое занятие
по дисциплине
«Измерительные средства аналитики программных средств и технологий»
на тему:
«Метрики Холстеда»
Студента группы
ИСТ-191 Березуцкого М.В.
Руководитель работы
ассистент
Зубарев А.А.
Работа защищена с оценкой________
Омск 2020
Задача
Рассчитать характеристики реализации алгоритма, выполненной на знакомом языке программирования (одном языке). Размер листинга примерно одна–две страницы формата А4, индивидуален для каждого студента.
Предложить смысловую трактовку как используемых данных, так и описываемых характеристик.
Примеры листингов, возможных к использованию в задаче, приведены в приложениях А и Б. ( Я выбрал программу написанную на C++ )
Код программы
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
BorderStyle=bsSingle ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Memo1->Clear(); //очищаем Мемо для нового текста
OpenDialog1->Execute(); //Открываем директории и ищем файл
Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
Edit1->Text=OpenDialog1->FileName;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
SaveDialog1->Execute(); //Открываем директории и ищем файл
Memo1->Lines->SaveToFile(SaveDialog1->FileName);
Edit1->Text=OpenDialog1->FileName;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Memo1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
exit(0);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
int dl, colstr, p;
char S[1000]; // символьные пременные до 1000 символов
colstr=Memo1->Lines->Count; // присваевывем переменной colstr строки в поле memo1
if (RadioButton1->Checked) p=2; // если установлен в положении шифровать то p=2
else p=-2; //дешивровать p=-2
for (int i=0; i<colstr; i++) //цикл
{
AnsiString s = Memo1->Lines->Strings[i]; // строка s будет содержать i-ый элемент из Memo1->Lines->Strings
strcpy(S, s.c_str()); //копирует указатель на строку s в строку S
dl=strlen(S); //dl возвращает длину строки S
for (int i=0; i<dl; i++) S[i]=S[i]+p; // запускаем цикл и каждый из элементов строки S увеличиваем на p
Memo1->Lines->Strings[i]=S; //новые элементы S выводим в Memo1
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N6Click(TObject *Sender)
{
Memo1->Clear();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
Memo1->Lines->SaveToFile(Edit1->Text);
}
Операторы исследуемого кода
Оператор | Уникальный n1 | N1 |
; | 1 | 25 |
{} | 2 | 7 |
() | 3 | 24 |
= | 4 | 12 |
: : | 5 | 8 |
+ | 6 | 6 |
++ | 7 | 2 |
- | 8 | 2 |
[] | 9 | 5 |
: | 10 | 1 |
for (int i=0; i<dl; i++) | 11 | 1 |
if (RadioButton1->Checked) | 16 | 2 |
int | 17 | 1 |
Random | 18 | 2 |
new | 19 | 3 |
Console.WriteLine | 20 | 4 |
.-> | 21 | 28 |
Console.ReadLine | 22 | 2 |
Console.Write | 23 | 1 |
else | 24 | 1 |
< | 25 | 2 |
void | 26 | 7 |
exit() | 27 | 1 |
* | 28 | 10 |
strcpy(S, s.c_str()) | 29 | 1 |
for (int i=0; i<colstr; i++) | 30 | 1 |
Memo1->Lines->SaveToFile(Edit1->Text) | 31 | 1 |
Memo1->Clear(); | 32 | 3 |
Memo1->Lines->Strings[i] | 33 | 2 |
Edit1->Text | 34 | 3 |
OpenDialog1->Execute(); | 35 | 1 |
Memo1->Lines->LoadFromFile(OpenDialog1->FileName); | 36 | 1 |
OpenDialog1->FileName | 37 | 4 |
SaveDialog1->Execute() | 38 | 1 |
Memo1->Lines->SaveToFile(SaveDialog1->FileName); | 39 | 1 |
OpenDialog1->FileName; | 40 | 3 |
Memo1->Lines->Count | 41 | 1 |
RadioButton1->Checked | 42 | 1 |
...