Метрические характеристики (по Холстеду)
Statisticsformoduleoutpas.lxm
=====================================
The number of different operators : 25
The number of different operands : 24
The total number of operators : 168
The total number of operands : 141
Dictionary ( D) : 49
Length ( N) : 309
Length estimation ( ^N) : 226.136
Volume ( V) : 1734.95
Potential volume ( *V) : 19.6515
Limit volume (**V) : 38.2071
Programming level ( L) : 0.0113269
Programming level estimation ( ^L) : 0.013617
Intellect ( I) : 23.6248
Time of programming ( T) : 8509.49
Time estimation ( ^T) : 5180.14
Programming language level (lambda) : 0.22259
Work on programming ( E) : 153171
Error ( B) : 0.954252
Error estimation ( ^B) : 0.578315
Table:
====================================
Operators:
| 1 | 10 | ()
| 2 | 4 | *
| 3 | 2 | +
| 4 | 1 | -
| 5 | 71 | ;
| 6 | 1 | <>
| 7 | 16 | =
| 8 | 18 | []
| 9 | 3 | ary
| 10 | 3 | ary2
| 11 | 2 | ary2s
| 12 | 2 | arys
| 13 | 1 | const
| 14 | 10 | for
| 15 | 2 | get_data
| 16 | 1 | if
| 17 | 6 | integer
| 18 | 3 | procedure
| 19 | 1 | program
| 20 | 4 | real
| 21 | 2 | square
| 22 | 1 | type
| 23 | 1 | write
| 24 | 2 | write_data
| 25 | 1 | writeln
Operands:
| 1 | 1 | ' '
| 2 | 1 | ':'
| 3 | 2 | 0
| 4 | 20 | 1
| 5 | 4 | 2
| 6 | 2 | 5
| 7 | 2 | 7
| 8 | 8 | a
| 9 | 1 | ary
| 10 | 1 | ary2
| 11 | 1 | ary2s
| 12 | 1 | arys
| 13 | 5 | cmax
| 14 | 6 | g
| 15 | 15 | i
| 16 | 5 | j
| 17 | 13 | k
| 18 | 8 | l
| 19 | 1 | matr1
| 20 | 11 | ncol
| 21 | 10 | nrow
| 22 | 3 | rmax
| 23 | 12 | x
| 24 | 8 | y
Summary:
=====================================
The number of different operators : 25
The number of different operands : 24
The total number of operators : 168
The total number of operands : 141
Dictionary ( D) : 49
Length ( N) : 309
Length estimation ( ^N) : 226.136
Volume ( V) : 1734.95
Potential volume ( *V) : 19.6515
Limit volume (**V) : 38.2071
Programming level ( L) : 0.0113269
Programming level estimation ( ^L) : 0.013617
Intellect ( I) : 23.6248
Time of programming ( T) : 8509.49
Time estimation ( ^T) : 5180.14
Programming language level (lambda) : 0.22259
Work on programming ( E) : 153171
Error ( B) : 0.954252
Error estimation ( ^B) : 0.578315
Си
#include <iostream.h>
#include <conio.h>
#define rmax 5
#define cmax 5
typedef float ary[ rmax ];
typedef float arys[ cmax ];
typedef float ary2[ rmax ][ cmax ];
typedef float ary2s[ cmax ][ cmax ];
ary y;
arys g;
ary2 x;
ary2s a;
int nrow,ncol;
void get_data( ary2 x, ary y, int &nrow, int &ncol)
// get the values for nrow, ncol, and arrays x,y
{
int i,j,s;
nrow = 2; // this value can be chaged
ncol = 2;
for ( i = 0; i < nrow ; i++)
{
x[i][0] = 1;
for ( j = 1; j < ncol ; j++)
x[i][j] = i * x[i][j-1];
s = i+1;
y[i] = 2 * s;
}
} // procedure get_data
void write_data()
// print out the answers
{
int i ,j;
clrscr();
cout <<"\n";
cout <<"\n X Y\n\n\n";
for ( i = 0; i < nrow ; i++)
{
for ( j = 0; j < ncol ; j++)
cout <<x[i][j] <<" ";
cout <<": "<<y[i] <<"\n\n\n";
}
//la suite du programme
cout <<"\n\n A G\n\n\n";
for ( i = 0; i < ncol ; i++)
{
for ( j = 0; j < ncol ; j++)
cout << a[i][j]<<" ";
cout <<": " << g[i] <<"\n\n\n";
}
}// write_data
void square(ary2 x,
ary y,
ary2s a,
arys g,
int nrow,
int ncol)
//matrix multiplication routine
// a= transpose x times x
// g= y times x
{
int i,k,l;
// square
for ( k = 0; k < ncol ; k++)
{
for ( l = 0; l < k ; l++)
{
a[k][l] = 0;
for ( i = 0; i < nrow ; i++)
{
a[k][l] = a[k][l] + x[i][l] * x[i][k];
if (k != l) a[l][k] = a[k][l];
}
} // l-loop
g[k] = 0;
for ( i = 0; i < nrow ; i++)
{
g[k] = g[k] + y[i] * x[i][k];
}
} // k-loop
} // square
void main()
{
get_data(x,y,nrow,ncol);
square(x,y,a,g,nrow,ncol);
write_data();
getch();
}
Метрические характеристики
Операторы
№ |
Оператор |
f1j |
1 |
{}() |
11 |
2 |
= |
22 |
3 |
if else |
1 |
4 |
++ |
10 |
5 |
!= |
1 |
6 |
for |
10 |
7 |
get_data(x,y,nrow,ncol); |
1 |
8 |
square(x,y,a,g,nrow,ncol); |
1 |
9 |
write_data(); |
1 |
Операнды
№ |
Операнд |
f1i |
1 |
rmax |
3 |
2 |
cmax |
5 |
3 |
ncol |
11 |
4 |
nrow |
10 |
5 |
y |
7 |
6 |
g |
6 |
7 |
a |
8 |
8 |
x |
11 |
9 |
i |
29 |
10 |
j |
13 |
11 |
s |
3 |
12 |
k |
16 |
13 |
l |
11 |
14 |
0 |
12 |
15 |
l |
4 |
16 |
5 |
2 |
17 |
2 |
3 |
1.Число простых операторов ŋ1=9
2.Общее число всех операторов N1= 58
3.Число простых операндов ŋ 2= 17
4.Общее число всех операторов N2=124
5.Словарь ŋ=ŋ1+ŋ2=9+17=26
6.Опытная (экспериментальная) длина Nэ=N1+N2=58+124=182
7.Теоретическая длина программы NТ =ŋ1log2 ŋ1+ŋ2 log2 ŋ2= 9log29+17log217= 98.009
|Nэ -NТ|/Nэ *100% =46.14%
8.Объем V=Nэlog2ŋ =182log226=855.48
9.Потенциальный объем V*=Nlog2ŋ =(ŋ 1* +ŋ 2*)log2 (ŋ 1* + ŋ 2*)= (3 + 10)log2(3 +10)=13*log213=13*3.7=48.1
10.Граничный объем
Vгр= (ŋ 1*log2ŋ 1*+ŋ 2*log2ŋ 2* )log2(ŋ 2* + ŋ 1*)= (3*log23+10*log210)log2(3+10) = 140.5040
11.Уровень программы L=V*/V=48.1/2151.15=0,3423
12.Сложность программы S=1/L=1/0,0043=2.921
13.Оценка уровня программы L^=2/ ŋ1 * ŋ2/N2=2/9*17/124=0.05920
14.Информационное (интеллектуальное) содержание программы
I=2ŋ2 /ŋ1N2 *(N1 +N2) log2 (ŋ 1+ ŋ2) = 2 * 17 / (9 * 124 ) * ( 39+124)log226= 26.063
15.Работа по программированию E=Nlog2 ŋ/L=V2/V*=15215.09
16. Время программирования Tпр=E/S= 15215.09/2.921=5208.86
17.Уровень языка программирования λ=V**L=48.1*0,3423 =16.480
17. Ожидаемое число ошибок B=E/E0*k=
Метрические характеристики (по Холстеду)
Statisticsformoduleoutc.lxm
=====================================
The number of different operators : 30
The number of different operands : 16
The total number of operators : 244
The total number of operands : 149
Dictionary ( D) : 46
Length ( N) : 393
Length estimation ( ^N) : 211.207
Volume ( V) : 2170.76
Potential volume ( *V) : 19.6515
Limit volume (**V) : 38.2071
Programming level ( L) : 0.00905281
Programming level estimation ( ^L) : 0.00715884
Intellect ( I) : 15.5401
Time of programming ( T) : 13321.6
Time estimation ( ^T) : 9053.41
Programming language level (lambda) : 0.177901
Work on programming ( E) : 239788
Error ( B) : 1.28656
Error estimation ( ^B) : 0.723587
Table:
====================================
Operators:
| 1 | 1 | !=
| 2 | 11 | ()
| 3 | 4 | *
| 4 | 3 | +
| 5 | 10 | ++
| 6 | 22 | ,
| 7 | 1 | -
| 8 | 70 | ;
| 9 | 10 | <
| 10 | 21 | =
| 11 | 27 | []
| 12 | 6 | _[]
| 13 | 2 | __&
| 14 | 4 | ary
| 15 | 4 | ary2
| 16 | 3 | ary2s
| 17 | 3 | arys
| 18 | 1 | clrscr
| 19 | 2 | continue
| 20 | 4 | float
| 21 | 10 | for
| 22 | 2 | get_data
| 23 | 1 | getch
| 24 | 1 | if
| 25 | 8 | int
| 26 | 1 | main
| 27 | 2 | square
| 28 | 4 | typedef
| 29 | 4 | void
| 30 | 2 | write_data
Operands:
| 1 | 12 | 0
| 2 | 4 | 1
| 3 | 3 | 2
| 4 | 8 | a
| 5 | 4 | cmax
| 6 | 6 | g
| 7 | 28 | i
| 8 | 13 | j
| 9 | 16 | k
| 10 | 11 | l
| 11 | 11 | ncol
| 12 | 10 | nrow
| 13 | 2 | rmax
| 14 | 3 | s
| 15 | 11 | x
| 16 | 7 | y
Summary:
=====================================
The number of different operators : 30
The number of different operands : 16
The total number of operators : 244
The total number of operands : 149
Dictionary ( D) : 46
Length ( N) : 393
Length estimation ( ^N) : 211.207
Volume ( V) : 2170.76
Potential volume ( *V) : 19.6515
Limit volume (**V) : 38.2071
Programming level ( L) : 0.00905281
Programming level estimation ( ^L) : 0.00715884
Intellect ( I) : 15.5401
Time of programming ( T) : 13321.6
Time estimation ( ^T) : 9053.41
Programming language level (lambda) : 0.177901
Work on programming ( E) : 239788
Error ( B) : 1.28656
Error estimation ( ^B) : 0.723587
Ассемблер
Текст программы
DGROUP group _DATA,_BSS
assume cs:_TEXT,ds:DGROUP
_DATA segment word public 'DATA'
d@ label byte
d@w label word
_DATA ends
_BSS segment word public 'BSS'
b@ label byte
b@w label word
_y label dword
db 20 dup (?)
_g label dword
db 20 dup (?)
_x label dword
db 100 dup (?)
_a label dword
db 100 dup (?)
_nrow label word
db 2 dup (?)
_ncol label word
db 2 dup (?)
_BSS ends
_TEXT segment byte public 'CODE'
assume cs:_TEXT
@get_data$qpa5$fpfrit3 proc near
push bp
mov bp, sp
sub sp,4
push si
push di
mov bx, word ptr [bp+8]
mov word ptr [bx],2
mov bx, word ptr [bp+10]
mov word ptr [bx],2
xor si,si
jmp @1@226
@1@58:
mov ax,si
mov dx,20
imul dx
mov bx, word ptr [bp+4]
add bx, ax
mov word ptr [bx+2],16256
mov word ptr [bx],0
mov di,1
jmp short @1@142
@1@86:
mov word ptr [bp-4],si
fild word ptr [bp-4]
mov ax,si
mov dx,20
imul dx
mov bx, word ptr [bp+4]
add bx, ax
mov ax, di
dec ax
mov cl,2
shl ax, cl
add bx, ax
fmul dword ptr [bx]
mov ax, si
mov dx,20
imul dx
mov bx, word ptr [bp+4]
add bx, ax
mov ax, di
mov cl,2
shl ax, cl
add bx, ax
fstp dword ptr [bx]
fwait
inc di
@1@142:
mov bx, word ptr [bp+10]
cmp word ptr [bx],di
jg short @1@86
mov ax, si
inc ax
mov word ptr [bp-2],ax
mov ax, word ptr [bp-2]
shl ax,1
mov word ptr [bp-4],ax
fild word ptr [bp-4]
mov ax, si
mov cl,2
shl ax, cl
mov bx, word ptr [bp+6]
add bx, ax
fstp dword ptr [bx]
fwait
inc si
@1@226:
mov bx, word ptr [bp+8]
cmp word ptr [bx],si
jle @@6
jmp @1@58
@@6:
pop di
pop si
mov sp, bp
pop bp
ret
@get_data$qpa5$fpfrit3 endp
assume cs:_TEXT
@write_data$qv proc near
push bp
mov bp, sp
push si
push di
call near ptr _clrscr
@2@58:
xor di, di
jmp short @2@142
@2@86:
mov ax, offset DGROUP:s@+21
push ax
mov ax, si
mov dx,20
imul dx
mov dx, di
mov cl,2
shl dx, cl
add ax, dx
mov bx, ax
fld dword ptr DGROUP:_x[bx]
sub sp,4
fstp dword ptr [bp-10]
mov ax, offset DGROUP:_cout
push ax
fwait
inc di
@2@142:
cmp di, word ptr DGROUP:_ncol
jl short @2@86
mov ax, offset DGROUP:s@+29
push ax
mov bx, si
mov cl,2
shl bx, cl
fld dword ptr DGROUP:_y[bx]
sub sp,4
fstp dword ptr [bp-10]
mov ax, offset DGROUP:s@+26
push ax
mov ax, offset DGROUP:_cout
push ax
fwait
@2@226:
cmp si,word ptr DGROUP:_nrow
jge @@7
jmp @2@58
@@7:
mov ax,offset DGROUP:s@+33
push ax
mov ax,offset DGROUP:_cout
push ax
xor si,si
jmp short @2@450
@2@282:
xor di, di
jmp short @2@366
@2@310:
mov ax, offset DGROUP:s@+53
push ax
mov ax, si
mov dx,20
imul dx
mov dx, di
mov cl,2
shl dx, cl
add ax, dx
mov bx, ax
fld dword ptr DGROUP:_a[bx]
sub sp,4
fstp dword ptr [bp-10]
mov ax, offset DGROUP:_cout
push ax
fwait
@2@366:
cmp di, word ptr DGROUP:_ncol
jl short @2@310
mov ax, offset DGROUP:s@+61
push ax
mov bx, si
mov cl,2
shl bx, cl
fld dword ptr DGROUP:_g[bx]
sub sp,4
fstp dword ptr [bp-10]
mov ax, offset DGROUP:s@+58
push ax
mov ax, offset DGROUP:_cout
push ax
fwait
@2@450:
cmp si,word ptr DGROUP:_ncol
jge @@8
jmp @2@282
@@8:
pop di
pop si
pop bp
ret
@write_data$qv endp
assume cs:_TEXT
@square$qpa5$fpft1t2ii proc near
push bp
mov bp, sp
sub sp,2
push si
push di
xor si, si
jmp @3@422
@3@58:
mov word ptr [bp-2],0
jmp @3@254
@3@86:
mov ax,si
mov dx,20
imul dx
mov bx, word ptr [bp+8]
add bx, ax
mov ax, word ptr [bp-2]
mov cl,2
shl ax, cl
add bx, ax
mov word ptr [bx+2],0
mov word ptr [bx],0
xor di, di
jmp @3@198
@3@114:
mov ax, di
mov dx,20
imul dx
mov bx, word ptr [bp+4]
add bx, ax
mov ax, word ptr [bp-2]
mov cl,2
shl ax, cl
add bx, ax
fld dword ptr [bx]
mov ax, di
mov dx,20
imul dx
mov bx, word ptr [bp+4]
add bx,ax
mov ax,si
mov cl,2
shl ax, cl
add bx, ax
fmul dword ptr [bx]
mov ax, si
mov dx,20
imul dx
mov bx, word ptr [bp+8]
add bx, ax
mov ax, word ptr [bp-2]
mov cl,2
shl ax, cl
add bx, ax
fadd dword ptr [bx]
mov ax, si
mov dx,20
imul dx
mov bx, word ptr [bp+8]
add bx, ax
mov ax, word ptr [bp-2]
mov cl,2
shl ax, cl
add bx, ax
fstp dword ptr [bx]
fwait
cmp si, word ptr [bp-2]
je short @3@170
mov ax, si
mov dx,20
imul dx
mov bx, word ptr [bp+8]
add bx, ax
mov ax, word ptr [bp-2]
mov cl,2
shl ax, cl
add bx, ax
fld dword ptr [bx]
mov ax, word ptr [bp-2]
mov dx,20
imul dx
mov bx, word ptr [bp+8]
add bx,ax
mov ax,si
mov cl,2
shl ax, cl
add bx, ax
fstp dword ptr [bx] _clrsrc
fwait
@3@170:
inc di
@3@198:
cmp di, word ptr [bp+12]
jge @@9
jmp @3@114
@@9:
inc word ptr [bp-2]
@3@254:
cmp word ptr [bp-2],si
jge @@10
jmp @3@86
@@10:
mov ax,si
mov cl,2
shl ax, cl
mov bx, word ptr [bp+10]
add bx, ax
mov word ptr [bx+2],0
mov word ptr [bx],0
xor di, di
jmp short @3@366
@3@310:
mov ax, di
mov dx,20
imul dx
mov bx, word ptr [bp+4]
add bx,ax
mov ax,si
mov cl,2
shl ax, cl
add bx, ax
fld dword ptr [bx]
mov ax, di
mov cl,2
shl ax, cl
mov bx, word ptr [bp+6]
add bx, ax
fmul dword ptr [bx]
mov ax, si
mov cl,2
shl ax, cl
mov bx, word ptr [bp+10]
add bx, ax
fadd dword ptr [bx]
mov ax, si
mov cl,2
shl ax, cl
mov bx, word ptr [bp+10]
add bx, ax
fstp dword ptr [bx]
fwait
inc di
@3@366:
cmp di, word ptr [bp+12]
jl short @3@310
inc si
@3@422:
cmp si, word ptr [bp+14]
jge @@11
jmp @3@58
@@11:
pop di
pop si
mov sp, bp
pop bp
ret
@square$qpa5$fpft1t2ii endp
assume cs:_TEXT
_main proc near
push bp
mov bp, sp
mov ax, offset DGROUP:_ncol
push ax
mov ax, offset DGROUP:_nrow
push ax
mov ax, offset DGROUP:_y
push ax
mov ax, offset DGROUP:_x
push ax
call near ptr @get_data$qpa5$fpfrit3
add sp,8
push word ptr DGROUP:_ncol
push word ptr DGROUP:_nrow
mov ax, offset DGROUP:_g
push ax
mov ax, offset DGROUP:_a
push ax
mov ax, offset DGROUP:_y
push ax
mov ax, offset DGROUP:_x
push ax
call near ptr @square$qpa5$fpft1t2ii
add sp,12
call near ptr @write_data$qv
call near ptr _getch
pop bp
ret
_main endp
_TEXT ends
_DATA segment word public 'DATA'
s@ label byte
db 10
db 0
db 10
db ' X Y'
db 10
db 10
db 10
db 0
db ' '
db 0
db ': '
db 0
db 10
db 10
db 10
db 0
db 10
db 10
db ' A G'
db 10
db 10
db 10
db 0
db ' '
db 0
db ': '
db 0
db 10
db 10
db 10
db 0
_DATA ends
_TEXT segment byte public 'CODE'
_TEXT ends
extrn __turboFloat:word
public _main
public @square$qpa5$fpft1t2ii
public @write_data$qv
public @get_data$qpa5$fpfrit3
public _ncol
public _nrow
public _a
public _x
public _g
public _y
extrn _getch:near
extrn _clrscr:near
extrn _cout:word
extrn @ostream@outstr$qpxzct1:near
extrn @ostream@$blsh$qg:near
_s@ equ s@
end