Xor ax,ax
jmp short @3@58
@3@58:
;
; }
;
mov sp,bp
pop bp
ret
end
Выполнение работы
Измеримые свойства алгоритмов
Pascal
Операторы |
Операнды | ||||
№ |
Оператор |
Число вхождений |
№ |
Операнд |
Число вхождений |
1 |
program |
1 |
1 |
prog_pas |
1 |
2 |
; |
41 |
2 |
Tarr |
3 |
3 |
type |
1 |
3 |
sort |
1 |
4 |
[] |
46 |
4 |
swap |
1 |
5 |
procedure QuickSort |
1 |
5 |
mid |
9 |
6 |
procedure swap |
1 |
6 |
sp |
22 |
7 |
var |
5 |
7 |
right |
10 |
8 |
: |
35 |
8 |
left |
9 |
9 |
() |
26 |
9 |
i |
25 |
10 |
, |
10 |
10 |
j |
26 |
11 |
begin..end |
9 |
11 |
p |
3 |
12 |
while .. do |
6 |
12 |
q |
3 |
13 |
> |
8 |
13 |
hold |
3 |
14 |
div |
1 |
14 |
1 |
21 |
15 |
< |
9 |
15 |
2 |
2 |
16 |
:= |
26 |
16 |
8 |
4 |
17 |
for..to.. do |
2 |
17 |
mass |
5 |
18 |
- |
8 |
18 |
pivot |
10 |
19 |
+ |
9 |
19 |
5 |
1 |
20 |
.. |
2 |
|
Итого: |
159 |
21 |
. |
1 |
|
|
|
|
Итого: |
248 |
|
|
|
C
Операторы |
Операнды | ||||
№ |
Оператор |
Число вхождений |
№ |
Операнд |
Число вхождений |
1 |
void swap |
1 |
1 |
array |
4 |
2 |
, |
21 |
2 |
i |
26 |
3 |
; |
41 |
3 |
j |
19 |
4 |
void quicksort |
1 |
4 |
hold |
3 |
5 |
[] |
47 |
5 |
20 |
2 |
6 |
() |
39 |
6 |
8 |
3 |
7 |
while |
6 |
7 |
swap |
4 |
8 |
< |
11 |
8 |
sort |
1 |
9 |
> |
8 |
9 |
mid |
9 |
10 |
/ |
12 |
10 |
5 |
2 |
11 |
= |
44 |
11 |
1 |
22 |
12 |
- |
8 |
12 |
2 |
3 |
13 |
+ |
13 |
13 |
left |
9 |
14 |
if |
7 |
14 |
right |
10 |
15 |
>= |
2 |
15 |
k |
8 |
16 |
int main |
1 |
16 |
sp |
22 |
17 |
return |
1 |
17 |
pivot |
10 |
18 |
&& |
5 |
18 |
p |
3 |
19 |
|| |
2 |
19 |
q |
3 |
20 |
++ |
2 |
|
Итого: |
163 |
|
Итого: |
272 |
|
|
|
Assembler
Операторы |
Операнды | ||||
№ |
Оператор |
Число вхождений |
№ |
Операнд |
Число вхождений |
1 |
proc |
3 |
1 |
bp |
110 |
2 |
push |
21 |
2 |
sp |
9 |
3 |
mov |
131 |
3 |
4 |
1 |
4 |
sub |
6 |
4 |
si |
32 |
5 |
shl |
39 |
5 |
di |
33 |
6 |
fld |
14 |
6 |
word ptr |
133 |
7 |
fstp |
4 |
7 |
ax |
110 |
8 |
fwait |
13 |
8 |
bx |
109 |
9 |
pop |
17 |
9 |
cl |
48 |
10 |
ret |
3 |
10 |
2 |
25 |
11 |
jae |
4 |
11 |
36 |
2 |
12 |
jmp |
10 |
12 |
8 |
1 |
13 |
cwd |
1 |
13 |
1 |
17 |
14 |
jl |
4 |
14 |
ss |
4 |
15 |
xor |
1 |
15 |
cx |
11 |
16 |
ja |
3 |
16 |
dx |
38 |
17 |
add |
24 |
17 |
near ptr |
6 |
18 |
fcomp |
10 |
|
Итого: |
689 |
19 |
fstsw |
10 |
|
|
|
20 |
sahf |
10 |
|
|
|
21 |
jbe |
2 |
|
|
|
22 |
call |
6 |
|
|
|
23 |
inc |
4 |
|
|
|
24 |
cmp |
7 |
|
|
|
25 |
lea |
17 |
|
|
|
26 |
jb |
1 |
|
|
|
27 |
jg |
3 |
|
|
|
|
Итого: |
368 |
|
|
|
Расчетные характеристики программы
|
Pascal |
C |
Assembler |
Формула |
Число уникальных операторов (n1): |
21 |
20 |
27 |
|
Число уникальных операндов (n2): |
19 |
19 |
17 |
|
Общее число операторов (N1): |
248 |
272 |
368 |
|
Общее число операндов (N2): |
159 |
163 |
689 |
|
|
| |||
Алфавит (n): |
40 |
39 |
44 |
n= n1+ n2 |
Экспериментальная длина программы (Nэ): |
407 |
435 |
1057 |
Nэ= N1+ N2 |
Теоретическая длина программы (Nт): |
172,95 |
167,15 |
197,87 |
Nт =1 log21 + 2 log22 |
Объём программы (V): |
2166,02 |
2299,15 |
5770,62 |
V = Nэ log2 n |
Потенциальный объём (V*): |
8,00 |
8,00 |
8,00 |
V* = (2+ 2*) log2( 2+ 2*) (2=2 – кол. параметров) |
Уровень программы (L): |
0,00369 |
0,00348 |
0,00139 |
L= V*/ V |
Сложность программы (S): |
270,75 |
287,39 |
721,33 |
S = V/ V* |
Ожидание уровня программы (L^): |
0,01138 |
0,01166 |
0,00183 |
L^= 2*2 /(1* N2) |
Интеллект программы (I): |
24,65 |
26,80 |
10,55 |
I= L^*V |
Работа по программированию (Е): |
586457,89 |
660761,32 |
4162505,77 |
E=V/L |
Время кодирования (T): |
58645,79 |
66076,13 |
416250,58 |
T=E/S (S=10 – кол. различений) |
Ожидане времени кодирования (T^): |
19032,52 |
19724,29 |
315737,73 |
T^= (n1*N2* Nэ * log2) / (2*S*n2) |
Уровень языка программирования (Lam): |
0,030 |
0,028 |
0,011 |
Lam =L * V* |
Уровень ошибок (В): |
0,72 |
0,77 |
1,92 |
B= (V*)2 / (3000* Lam) |
Протоколы
Pascal
Statistics for module out.lxm
=====================================
The number of different operators : 18
The number of different operands : 21
The total number of operators : 154
The total number of operands : 174
Dictionary ( D) : 39
Length ( N) : 328
Length estimation ( ^N) : 167.297
Volume ( V) : 1733.61
Potential volume ( *V) : 8
Limit volume (**V) : 8
Programming level ( L) : 0.00461464
Programming level estimation ( ^L) : 0.01341
Intellect ( I) : 23.2477
Time of programming ( T) : 20870.9
Time estimation ( ^T) : 3663.25
Programming language level (lambda) : 0.0369171
Work on programming ( E) : 375676
Error ( B) : 1.73549
Error estimation ( ^B) : 0.577871
Table:
====================================
Operators:
| 1 | 25 | ()
| 2 | 9 | +
| 3 | 8 | -
| 4 | 1 | /
| 5 | 9 | <
| 6 | 25 | =
| 7 | 6 | >
| 8 | 2 | >=
| 9 | 2 | QuickSort
| 10 | 42 | []
| 11 | 5 | and
| 12 | 1 | for
| 13 | 6 | if
| 14 | 2 | or
| 15 | 1 | program
| 16 | 5 | swap
| 17 | 1 | type
| 18 | 4 | while
Operands:
| 1 | 1 | 0
| 2 | 20 | 1
| 3 | 1 | 2
| 4 | 1 | 20
| 5 | 1 | 5
| 6 | 3 | 8
| 7 | 1 | Tarr
| 8 | 3 | hold
| 9 | 25 | i
| 10 | 22 | j
| 11 | 9 | left
| 12 | 3 | mass
| 13 | 9 | mid
| 14 | 2 | n
| 15 | 3 | p
| 16 | 9 | pivot
| 17 | 1 | prog_pas
| 18 | 3 | q
| 19 | 10 | right
| 20 | 22 | sp
| 21 | 25 | x
Summary:
=====================================
The number of different operators : 18
The number of different operands : 21
The total number of operators : 154
The total number of operands : 174
Dictionary ( D) : 39
Length ( N) : 328
Length estimation ( ^N) : 167.297
Volume ( V) : 1733.61
Potential volume ( *V) : 8
Limit volume (**V) : 8
Programming level ( L) : 0.00461464
Programming level estimation ( ^L) : 0.01341
Intellect ( I) : 23.2477
Time of programming ( T) : 20870.9
Time estimation ( ^T) : 3663.25
Programming language level (lambda) : 0.0369171
Work on programming ( E) : 375676
Error ( B) : 1.73549
Error estimation ( ^B) : 0.577871
C
Statistics for module out.lxm
=====================================
The number of different operators : 20
The number of different operands : 24
The total number of operators : 180
The total number of operands : 174
Dictionary ( D) : 44
Length ( N) : 354
Length estimation ( ^N) : 196.478
Volume ( V) : 1932.64
Potential volume ( *V) : 8
Limit volume (**V) : 8
Programming level ( L) : 0.00413942
Programming level estimation ( ^L) : 0.0137931
Intellect ( I) : 26.6571
Time of programming ( T) : 25938.1
Time estimation ( ^T) : 4320.42
Programming language level (lambda) : 0.0331153
Work on programming ( E) : 466887
Error ( B) : 2.0061
Error estimation ( ^B) : 0.644213
Table:
====================================
Operators:
| 1 | 1 | %
| 2 | 5 | &&
| 3 | 29 | ()
| 4 | 9 | +
| 5 | 19 | ,
| 6 | 8 | -
| 7 | 9 | <
| 8 | 24 | =
| 9 | 6 | >
| 10 | 2 | >=
| 11 | 41 | []
| 12 | 4 | _[]
| 13 | 2 | __&
| 14 | 6 | if
| 15 | 1 | main
| 16 | 2 | quicksort
| 17 | 1 | return
| 18 | 5 | swap
| 19 | 4 | while
| 20 | 2 | ||
Operands:
| 1 | 3 | 0
| 2 | 18 | 1
| 3 | 1 | 12
| 4 | 1 | 14
| 5 | 2 | 2
| 6 | 2 | 20
| 7 | 1 | 3
| 8 | 2 | 5
| 9 | 1 | 7
| 10 | 1 | 8
| 11 | 1 | 9
| 12 | 2 | array
| 13 | 3 | hold
| 14 | 25 | i
| 15 | 19 | j
| 16 | 9 | left
| 17 | 9 | mid
| 18 | 2 | n
| 19 | 3 | p
| 20 | 9 | pivot
| 21 | 3 | q
| 22 | 10 | right
| 23 | 22 | sp
| 24 | 25 | x
Summary:
=====================================
The number of different operators : 20
The number of different operands : 24
The total number of operators : 180
The total number of operands : 174
Dictionary ( D) : 44
Length ( N) : 354
Length estimation ( ^N) : 196.478
Volume ( V) : 1932.64
Potential volume ( *V) : 8
Limit volume (**V) : 8
Programming level ( L) : 0.00413942
Programming level estimation ( ^L) : 0.0137931
Intellect ( I) : 26.6571
Time of programming ( T) : 25938.1
Time estimation ( ^T) : 4320.42
Programming language level (lambda) : 0.0331153
Work on programming ( E) : 466887
Error ( B) : 2.0061
Error estimation ( ^B) : 0.644213
Выводы
В результате выполнения лабораторной работы заданный алгоритм сортировки был реализован на различных языках программирования (Pascal,C,Assembler). Для созданных программ были оценены метрические характеристики (измеримые и расчетные) по Холстеду.