Теоретическая длина программы это

Цель работы – программа обработки данных, представленной на языке Паскаль, разработать вычислительный алгоритм и варианты программ его реализации на языках программирования Си и Ассемблер. Добиться, чтобы программы на Паскале и Си были работоспособны и давали корректные результаты (это потребуется в дальнейшем при проведении с ними измерительных экспериментов). Для получения ассемблерного представления программы можно либо самостоятельно написать код на ассемблере, реализующий заданный алгоритм, либо установить опцию Code generation/Generate assembler source при компиляции текста программы, представленной на языке Си. При этом в ассемблерном представлении программы нужно удалить директивы описаний и отладочные директивы, оставив только исполняемые операторы.

Цель работы – программа обработки данных, представленной на языке Паскаль, разработать вычислительный алгоритм и варианты программ его реализации на языках программи-рования Си и Ассемблер. Добиться, чтобы программы на Паскале и Си были работоспособны и давали корректные результаты (это потребуется в дальнейшем при проведении с ними измерительных экспериментов). Для получения ассемблерного представления программы можно либо самостоятельно написать код на ассемблере, реализующий заданный алгоритм, либо установить опцию Code generation/Generate assembler source при компиляции текста программы, представленной на языке Си. При этом в ассемблерном представлении программы нужно удалить директивы описаний и отладочные директивы, оставив только исполняемые операторы.

Эмпирические и теоретические методы

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

1. Измеримые характеристики программ:

— число простых(отдельных) операторов, в данной реализации;

— число простых (отдельных) операндов, в данной реализации;

— общее число всех операторов в данной реализации;

Читайте также:
Программа защиты ресурсов обнаружила поврежденные файлы но не может восстановить некоторые из них

— общее число всех операндов в данной реализации;

— число вхождений j-го оператора в тексте программы;

— число вхождений j-го операнда в тексте программы;

2. Расчетные характеристики программы:

— реальный, потенциальный и граничный объемы программы;

— уровень используемого языка программирования;

ожидаемое число ошибок в программе.

Для каждой характеристики следует рассчитать как саму характеристику, так и ее оценку.

Расчет оценок программ выполнить двумя способами:

1) вручную или с помощью одного из доступных пакетов математических вычислений DERIVE, MATHCAD или MATLAB.

2) с помощью программы автоматизации расчета метрик Холстеда, краткая инструкция по работе с которой приведена в файле usage.rtf (для С- и Паскаль-версий программ).

Для варианта расчета с использованием программы автоматизации желательно провести анализ влияния учета тех или иных групп операторов исследуемой программы на вычисляемые характеристики за счет задания разных ключей запуска.

Результаты расчетов представить в виде таблиц с текстовыми комментариями.

Лекция 1 | Теоретическая информатика | Александр Охотин | Лекториум

type ary = array[1..rmax] of real;

arys = array[1..cmax] of real;

ary2 = array[1..rmax,1..cmax] of real;

ary2s = array[1..cmax,1..cmax] of real;

procedure get_data(var x: ary2;

var nrow,ncol: integer);

Источник: www.myunivercity.ru

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

holst / Метрика Холстеда.txt

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Cannot retrieve contributors at this time
105 lines (66 sloc) 7.5 KB

Читайте также:
Как называется программа которая сжимает видео

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents Copy raw contents

Copy raw contents

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

  • Copy lines
  • Copy permalink
  • View git blame
  • Reference in new issue

Источник: github.com

Метрики Холстеда. Лабораторная работа №1

Программирование на языке Python (§ 54 - § 61)

Для выполнения работы:
601-800
9
370
13
1. Изучить содержимое презентации.
2. Самостоятельно выбрать код программы (не менее 40-50 строк)
содержащий классы, условия, циклы, присваивания, вычисления,
объявления, методы и т.п.
3. Спроектировать и составить работающую программу на любом
языке программирования для вычисления метрик Холстеда.
4. Выбранный код (п.2) считывать в программе (п.3) как текстовый и
вычислить метрики Холстеда (слайд 5).
4. Оформить отчет в формате соответствующей
оформлению курсовой работы.

3.

Метрики сложности по Холстеду
601-800
9
370
13
3
Базовые метрики реализации
η1 – размер словаря операторов – число различных операторов
языка программирования, включая символы-разделители, имена
процедур и знаки операций, встречающихся в тексте программы
η2 – размер словаря операндов – число различных операндов,
включая имена переменных и константы, встречающихся в тексте
программы
η = η1 + η2 – размер словаря реализации
N1 – общее число всех операторов в программе
N2 – общее число всех операндов в программ
N = N1 + N2 – размер (длина) реализации
Maurice Halstead

4.

5.

На основе данных:
Число уникальных операторов (η1),
Число уникальных операндов (η2),
Общее число операторов (N1),
Общее число операндов (N2).
601-800
9
370
13
Вычислить:
Алфавит (η):
η1+η2
Длина программы (N): N1+N2
Теоретическая длина программы (Nт):
η1∙log2(η1) + η2∙log2(η2)
Объём программы (V): N∙log2(η)
Потенциальный объём (V*):
(N1*+N2*)∙log2(η1* + η2*)
Уровень программы (L):
V* / V (от 0 до 1)
Сложность программы (S):
L-1
Ожидание уровня программы (L*): (2/η1)∙(η2/N2)
Интеллект программы (I):
L* ∙ V
Работа по программированию (Е): V∙S ≡ V/L
Время кодирования (T): E/St (St – число Страуда от 5 до 20, берем 10)
Ожидаемое время кодирования (T^):
η1∙N2 ∙ N∙log2(η) / (2∙St∙η2)
Уровень языка программирования (λ):
(V*)∙(V*)/V
Уровень ошибок (В):
V / 3000

Читайте также:
Показатели производственной программы по то и тр подвижного состава

6.

Контрольный
код для вычислений
на C++
1
2
3
601-800
9
370
13
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Operands
«Input Data: n»
«a: %3.1f, b: %3.1fn»
«x[%d] = %3.1f y[%d] =
%3.1fn»
«y_calc = %3.1fn»
0
10
20
a
b
i
n
size
sum_x
sum_x2
sum_xy
sum_y
sum_y2
sxx
sxy
syy
x
xi
y
y_calc
yi
1
1
1
1
10
5
1
6
6
27
7
8
7
5
5
7
4
4
3
2
7
6
6
5
6
#include
#define size 20
void linfit1(double x[size],double y[size], double* y_calc, double* a, double* b,int n)
int i; double sum_x,sum_y,sum_xy,sum_x2,sum_y2,xi,yi,sxy,sxx,syy;
sum_x = 0;
sum_y = 0;
sum_xy = 0;
sum_x2 = 0;
1
sum_y2 = 0;
for (i=0; i 2
xi=x[i];
3
yi=y[i];
4
sum_x += xi;
sum_y += yi;
5
sum_xy += xi*yi;
6
sum_x2 += xi*xi;
7
sum_y2 += yi*yi;
>
8
sxx = sum_x2-sum_x*sum_x/n;
9
sxy = sum_xy-sum_x*sum_y/n;
10
syy = sum_y2-sum_y*sum_y/n;
*b=sxy/sxx;
11
*a=((sum_x2*sum_y-sum_x*sum_xy)/n)/sxx;
12
for (i=0;i
13
*(y_calc+i) = *a + *b * x[i];
14
>
void main(void)
15
int i;
16
double a,b,x[size],y[size],y_calc[size];
17
randomize();
printf(«Input Data: n»);
18
for (i=0;i
19
20
x[i] = 10+i*10;
y[i] = 10+i*10 + random(20) — 10;
21
printf(«x[%d] = %3.1f y[%d] = %3.1fn»,i,x[i],i,y[i]);
>
linfit1(x,y,a,
printf(«a: %3.1f, b: %3.1fn»,a,b);
for (i=0;i
printf(«y_calc = %3.1fn»,y_calc[i]);
>
Operators
()
7
*
11
+
5
++
4
+=
5
<>
4

5
/
6
4
=
19
[]
9
_https://ppt-online.org/1326125″ target=»_blank»]ppt-online.org[/mask_link]

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru