Скачиваний:
23
Добавлен:
01.05.2014
Размер:
286.21 Кб
Скачать

Метрические характеристики (по Холстеду)

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.Словарь ŋ=ŋ12=9+17=26

6.Опытная (экспериментальная) длина Nэ=N1+N2=58+124=182

7.Теоретическая длина программы NТ 1log2 ŋ12 log2 ŋ2= 9log29+17log217= 98.009

|Nэ -NТ|/Nэ *100% =46.14%

8.Объем V=Nэlog2ŋ =182log226=855.48

  1. 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

  1. 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

Ассемблер

  1. Текст программы

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

Соседние файлы в папке Sissy_Metr