Теория вычислительных процессов
Написание на языке ассемблер программы, реализующей вычитание двух целых упакованных 128-разрядных чисел. Краткое описание операционной семантики и верификация связной совокупности команд в подпрограмме. Построение сети Петри для данной подпрограммы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 15.07.2012 |
Размер файла | 128,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Ивановский государственный энергетический университет имени В.И. Ленина»
Кафедра ПОКС
Контрольная работа
по курсу «Теория вычислительных процессов»
Выполнил
студент группы III-42к
Черный И.А.
Проверил:
к.т.н Зубков В.П.
Иваново 2012
СОДЕРЖАНИЕ
1. Введение
2. АНАЛИЗ
3. АЛГОРИТМ
4. СЕМАНТИКА
5. СХЕМА
6. ВЕРИФИКАЦИЯ
7. СЕТЬ ПЕТРИ
8. ТЕКСТ ПРОГРАММЫ
1. ВВЕДЕНИЕ
ассемблер программа верификация
Написать на языке ассемблер программу, реализующую вычитание двух целых упакованных 128- разрядных чисел.
Описать операционную семантику и провести верификацию связной совокупности команд в подпрограмме.
Построить сеть Петри для подпрограммы.
2. АНАЛИЗ ЗАДЧИ
Для решения поставленной задачи с клавиатуры вводятся уменьшаемое и вычитаемое. Далее выполняется проверка положительности введенных чисел следующим образом:
1) Если уменьшаемое и вычитаемое - положительные числа, то
выполняется проверка: какое из этих чисел больше.
· если уменьшаемое больше вычитаемого, то производится
операция вычитания;
· если вычитаемое больше уменьшаемого, то выводится “-“
(признак отрицательности результата), уменьшаемое и вычитаемое меняются местами и производится операция вычитания;
2) Если уменьшаемое - положительное число, а вычитаемое- отрицательное (знак отбрасывается), то производится операция сложения;
3) Если уменьшаемое - отрицательное число, а вычитаемое- положительное, то выводится “-“ и производится операция сложения;
4) Если уменьшаемое и вычитаемое - отрицательные числа(знаки отбрасываются), то выполняется проверка: какое из этих чисел больше.
· если уменьшаемое больше вычитаемого, то выводится
“-“ и производится операция вычитания;
· если вычитаемое больше уменьшаемого, то уменьшаемое и вычитаемое меняются местами и производится операция вычитания.
Описание переменных на ассемблере
message1 db 'Vvedite pervoe chislo: ','$'
message2 db 'Vvedite vtoroe chislo: ','$'
message3 db 'Dla polucheniya rezultata nazmite Enter ',0dh,0ah,'$'
message4 db 'ESC to exit or any key to continue...',0dh,0ah,'$'
message5 db 0dh,0ah,'$'
Sign db 0 ; признак отрицательности
Sign1 db 0 ; первое число отрицательное
Sign2 db 0 ; второе число отрицательное
flagbuf1 db 0 ; флаг работы с первым числом
buf1 db 255 ; максимальная длина строки
db 0 ; реальная длина
db 255 dup(30h) ; буфер для строки
length1 db ? ; длина первого числа
length2 db ? ; длина второго числа
Choice db 0 ; выбор пользователя
3. АЛГОРИТМ
Размещено на http://www.allbest.ru/
4. СЕМАНТИКА
Операционная семантика команды sub al, 1
L1(al)
1 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
# |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
# |
L2
1. q01X1 Top1 q11
2. q11X1B1q02
3. q02X2 Top2 q12
4. q12X2 02 q22
5. q22X2 L2 q32
6. q32#2B2q52
7. q32X2 B2 q21
8. q21X11 B1 q31()St1
9. q31X1 L1 q41
10. q41X1 B2 q42
11. q42X2()St1 q22
12. q52X2Top2q51
13. q51S2 Top2 q62
14. q62X2 B2 q72()St1
15. q72X2L2q82
16. q82X1 B1 q61
17. q61X1 ()St1 q71
18. q71X1 L1 q81
19. q81#1 B1 q91
20. q81X1 B2 q62
21. q91S1 Top1 q92
22. q92S2 Top2 q102
5. Схема подпрограммы вычитания
1. Старт(,,а) |
||
mov al,adg |
||
mov di,1 |
2. i:=b; |
|
add di,ax |
3. ; |
|
mov cl,adg |
4. z:=a; |
|
CLC |
5. k:=0; |
|
mmm: mov al,buf1[di] |
6. ; |
|
mov ah,buf2[di] |
7. ; |
|
sbb al,ah |
8. ; |
|
aas |
9. ; |
|
mov buf3[di],al |
10. ; |
|
dec di |
11. ; |
|
loop mmm |
12. если P(z), то на 13, иначе на 6; |
|
call VivodRes |
13. вывод(x); |
|
14. Стоп |
Символов, использующихся в данной схеме:
Ш переменные:
- уменьшаемое
- вычитаемое
- разность
Ш константы:
a =длина числа;
b =1;
Ш функциональные символы:
- операция увеличения значения на a;
- операция пересылки информации;
- операция:()
- операция преобразования содержимого в неупакованное двоично- десятичное число;
- операция уменьшения значения на единицу;
Ш предикатные символы:
P - предикат "равно 0"
Ш специальные символы:
старт, стоп, если, вывод
ГрафическОЕ ОБОЗНАЧЕНИЕ
схемЫ ПОДПРОГРАММЫ вычитания
Размещено на http://www.allbest.ru/
6. Верификация
1. Без ветвлений:
a) mov di,1
mov al,adg
add di,ax
mov al,buf1[di]
mov ah,buf2[di]
sbb al,ah
TRUE
b) mov dl,buf1[di]
mov bl,buf2[di]
mov buf1[di],bl
mov buf2[di],dl
TRUE {dl=buf1[di] ,bl=buf2[di] ,buf1[di]=bl ,buf2[di]=dl}
(buf1[di]= buf2[di]( buf2[di]= buf1[di])
TRUE {dl=buf1[di] , bl=buf2[di] , buf1[di]=bl}
(buf1[di]= buf2[di])( dl= buf1[di])
TRUE { dl=buf1[di] , bl=buf2[di]}
(bl= buf2[di])( dl= buf1[di])
TRUE { dl=buf1[di]}
(buf2[di]= buf2[di])( dl= buf1[di])
TRUE (buf2[di]= buf2[di])( buf1[di]= buf1[di])
TRUE TRUE
TRUE
TRUE TRUE
TRUE
2. С ветвлением:
a) cmp flagbuf1,1
je FirstNum
jne SecondNum
FirstNum:
mov Sign1,1
…
jmp EndPerev
SecondNum:
mov Sign2,1
…
jmp EndPerev
EndPerev:
…
Для доказательства того, что
(flagbuf1=1)(flagbuf1=0)
{ if flagbuf1=1 then Sign1:=1 else Sign2:=1}
(Sign1=1Sign2=1)
необходимо доказать три условия истинности:
1) без побочных эффектов (flagbuf1=1)
2) ((flagbuf1=1)(flagbuf1=0)) & (flagbuf1=1) {Sign1:=1} (Sign1=1Sign2=1)
((flagbuf1=1)(flagbuf1=0)) & (flagbuf1=1) ( 1=1 Sign2=1)
True True
True
3) ((flagbuf1=1)(flagbuf1=0)) & (flagbuf1=0) {Sign2:=1} (Sign1=1Sign2=1)
((flagbuf1=1)(flagbuf1=0)) & (flagbuf1=0) (Sign1=1 1=1)
True True
True
b) mov di,2
mov cl,adg
LViv:
mov al,buf3[di]
inc di
…
loop LViv
В этом примере является инвариантом.
Для доказательства того, что
покажем, что цикл всегда завершается, и продемонстрируем истинность следующих утверждений:
1. Инвариант цикла удовлетворяется при входе в цикл, т.е. предусловие включает в себя инвариант:
2. Если инвариант истинен перед вычислением предиката управляющим циклом, то он истинен после его вычисления:
Т.к. вычисление свободно от побочных эффектов, то входное условие на рушиться не может, следовательно, утверждение истинно.
3. Инвариант цикла удовлетворяется в теле цикла:
True
4. Инвариант цикла и отрицание условия выполнения имплицируют постусловие:
True
7. СЕТЬ ПЕТРИ
Начальная разметка сети: одна фишка в позиции S1.
После завершения функционирования сети фишка будет в позиции S2
Расшифровка переходов:
1. T1 - push f
2. T2 - push si
3. T3 - push di
4. T4 - push cx
5. T5 - push ax
6. T6 - clc
7. T7 - mov si,127
8. T8 - mov di,127
9. T9 - mov cx,128
10. T10 - mov al,[bx+si]
11. T11 - adc [bp+di],al
12. T12 - cmp byte ptr[bp+di],9
13. T13 - sub [bp+di],10
14. T14 - stc
15. T15 - clc
16. T16 -увеличение количества фишек
17. T17 - увеличение количества фишек
18. T18 - dec di
19. T19 - dec si
20. T20 -уменьшение количества фишек
21. T21 - pop ax
22. T22 - pop cx
23. T23 - pop di
24. T24 - pop si
25. T25 - popf
8. ТЕКСТ ПРОГРАММЫ
.model small
.stack 200h
.386
.data
message1 db 'Vvedite pervoe chislo: ','$'
message2 db 'Vvedite vtoroe chislo: ','$'
message3 db 'Dla polucheniya rezultata nazmite Enter ',0dh,0ah,'$'
message4 db 'ESC to exit or any key to continue...',0dh,0ah,'$'
message5 db 0dh,0ah,'$'
Sign db 0 ; признак отрицательности
Sign1 db 0
Sign2 db 0
O2GrO1 db 0
flagbuf1 db 0 ; флаг работы с первым числом
crlf db 0dh,0ah,'$'
buf db 255
db 0
db 255 dup(30h)
buf1 db 255 ; максимальная длина строки
db 0 ; реальная длина
db 255 dup(30h) ; буфер для строки
length1 db ?
buf2 db 255
db 0
db 255 dup(30h)
buf3 db 255
db 0
db 255 dup(0h)
length2 db ?
bcg db ?
bcg1 db ?
bcg2 db ?
bcgP db ? ; длина числа
adg db ?
opr db 3
db 0
db 3 dup(30h)
Choice db 0 ; выбор пользователя
cr equ 0dh
; символ возврата каретки
lf equ 0ah
; символ перехода на следующую строку
EndMsg equ '$'
.code
;===================================
CLRSCR proc ; очистка экрана
push bp
mov bp,sp
push ax
push bx
push cx
push dx
xor cx,cx
mov dx,184FH ; координаты левого верхнего угла CH-y,CL-x
mov al,0 ; координаты правого нижнего угла DH-y,DL-x
mov ah,06H ; количество сдвигаемых строк, если 0, то весь экран
mov bh,7 ; номер подфункции - очистка окна
int 10h ; атрибут цвета (черно-белый)
pop dx
pop cx
pop bx
pop ax
pop bp
ret
CLRSCR endp
;==================================
CXY proc ; установка курсора
push bp
mov bp,sp
push ax
push bx
mov bh,0
mov ah,2 ; номер видеостраницы
mov dh,0
mov dl,0
int 10h
pop bx
pop ax
pop bp
ret
CXY endp
;==================================
Print proc far
mov ah,09h
int 21h
ret
Print endp
;==================================
quit proc
mov dx, offset message5
call Print
mov dx, offset message4
call Print
mov ah,1
int 21h
mov Choice,al
cmp Choice,27 ; нажатие клавиши esc
je Vihod
jne start
Vihod:
mov ax,4c00h ; выход в DOS
int 21h
ret
quit endp
;==================================
Swap proc
xor di,di
xor dx,dx
xor cx,cx
xor ax,ax
xor bx,bx
mov al,bcg2
add di,ax
add di,1
ciclSwap1:
mov dl,buf1[di]
mov bl,buf2[di]
mov buf1[di],bl
mov buf2[di],dl
dec di
cmp di,1
jg ciclSwap1
xor ax,ax
xor bx,bx
mov al,bcg1
mov bl,bcg2
mov bcg1,bl ; bcg1:=bcg2
mov bcg2,al ; bcg2:=bcg1
ret
Swap endp
;===================================
Addition proc ; cложение чисел
mov di,1
xor ax,ax
mov al,adg
add di,ax ; сколько раз записывали в стек 1 число
xor si,si
mov cl,adg
CLC ; сброс флага переноса CF=0
xor ax,ax
pmm:
mov al,buf1[di]
mov ah,buf2[di]
adc al,ah
; (1-й операнд)=(1-й операнд)+(2-й операнд)+(флаг CF)
aaa ; комманда коррекции
mov buf3[di],al
push ax
inc si
dec di
loop pmm
jnc Viv ; переход, если нет переноса
mov al,0
mov ah,0
adc al,ah
push ax
add adg,1
jmp Viv
Viv:
call VivodRes
call quit
ret
Addition endp
;===================================
AddNulls proc ; добавление нулей
mov al,bcg2
cmp bcg1,al
jg ll3 ; bcg1>bcg2
jl ll4 ; bcg1<bcg2
jmp ANL
;Начало (Добавление нулей)
ll3:
; bcg1>bcg2-добавляем нули ко второму числу
xor di,di
xor si,si
xor ax,ax
xor cx,cx
xor bx,bx
xor al,al
add al,bcg1
sub al,bcg2
add di,2
add di,ax
mov cl,bcg2
mov si,2
lip:
mov bl,buf2[si]
mov buf3[di],bl
inc di
inc si
loop lip
xor si,si
xor cx,cx
xor bx,bx
mov si,2
mov cl,bcg1
lop:
mov bl,buf3[si]
mov buf2[si],bl
inc si
loop lop
jmp ANL
ll4:
; bcg1<bcg2-добавляем нули к первому числу
xor di,di
xor si,si
xor ax,ax
xor cx,cx
xor bx,bx
mov al,bcg2
mov adg,al
xor al,al
add al,bcg2
sub al,bcg1
add di,2
add di,ax
mov cl,bcg1
mov si,2
l4p:
mov bl,buf1[si]
mov buf3[di],bl
inc di
inc si
loop l4p
xor si,si
xor cx,cx
xor bx,bx
mov si,2
mov cl,bcg2
lo4:
mov bl,buf3[si]
mov buf1[si],bl
inc si
loop lo4
ANL: ret
AddNulls endp
;=====================================
Subtraction proc ; вычитание чисел
mov di,1
xor ax,ax
mov al,adg
add di,ax ; сколько раз записывали в стек 1 число
xor si,si
mov cl,adg
CLC
xor ax,ax
mmm:
mov al,buf1[di]
mov ah,buf2[di]
sbb al,ah
aas
mov buf3[di],al
push ax
inc si
dec di
loop mmm
call VivodRes ; вывод результата
call quit
Subtraction endp
;========================================
compression proc ; сжатие числа, ds:bx - @ числа
push di ; di - длина числа
push si ; si - смещение:куда записать правый символ
push ax
push cx
dec di
NEXT_SYMBOL:
cmp di,0
je l1
mov al,[BX+di-1]
MOV CL,4
SHL AL,CL
ADD AL,[BX+di]
JMP L2
L1:
MOV Al,byte ptr [BX+di]
L2:
MOV [bx+si],AL
SUB di,2
DEC si
CMP di,0
JNL NEXT_SYMBOL
l3: ; дозапись первых символов 0
cmp si,0
JL L4
MOV byte ptr [bx+si],0
DEC si
JMP L3
L4:
pop cx
pop ax
pop si
pop di
ret
compression endp
;=========================================
Binary_to_DecPacked proc ; преобразует двоичное число в Упакованный формат, ds:bp - @ числа, ds:bx - @ упакованного числа
push si
push ax
push di
push cx
MOV CX,13
NEXT:
push cx
mov cx,5
mov al,0
_min:
MOV DI,0 ; число > 10 ?
MOV CX,4
NEXT_DI:
mov al,[bp+DI]
CMP byte ptr [bp+DI],0
JNE DIVISION
INC DI
LOOP NEXT_DI
DIVISION: ; a=a-10
push bx
pop bx
push bp
push bx
pop bx
pop bp
jmp _min
OSTATOC: ; запись остатка
pop cx
mov di,cx
mov al,[bp+4]
mov [bx+di-1],al
mov di,0
next_char:
mov [bp+di],al
inc di
cmp di,5
jl next_char
loop NEXT ; след разряд
mov di,13 ; сжатие дес. числа
mov si,12
call compression
pop cx
pop di
pop ax
pop si
ret
Binary_to_DecPacked endp
;========================================
VivodRes proc ; вывод результата
mov di,2
mov cl,adg
LViv:
mov al,buf3[di]
inc di
or al,30h
mov ah,2
mov dl,al
int 21h
loop LViv
ret
VivodRes endp
;=========================================
StrTo proc ; перевод в строку
push bp
mov bp,sp
xor di,di
xor si,si
xor ax,ax
xor dx,dx
xor cx,cx
mov al,bcgP ; длина числа
add di,ax
add di,1
lp1:
mov dl,[bx+di]
dec di
cmp dl,'-' ; если нашли знак "минус"
je OtricatChislo ; то, фиксируем отрицательное число
jne PolozhChislo ; иначе, число положительное
OtricatChislo:
cmp flagbuf1,1 ; если это первое число
je FirstNum ; да
jne SecondNum ; нет
FirstNum: ; признак отрицательности первого числа
mov Sign1,1
mov Sign,1
jmp EndPerev
SecondNum:
mov Sign2,1 ; признак отрицательности второго числа
mov Sign,1
jmp EndPerev
PolozhChislo:
and dl,0fh ; очищаем зону тройки
xor dh,dh
push dx
inc si
xor dx,dx
cmp di,1 ; если последний символ
jg lp1 ; нет (di>1)
EndPerev:
mov cx,si
mov bcgP,cl
xor ax,ax
xor di,di
add di,2
lp2:
pop ax
mov [bx+di],al
cmp flagbuf1,1 ; если это первое число
je flb1
jne flb2
flb1:
mov buf1[di],al
mov buf[di],al
jmp dalshe
flb2:
mov buf2[di],al
dalshe:
inc di
loop lp2
pop bp
QuitP:
mov flagbuf1,0 ; обнуляем флаг работы с первым числом
ret
StrTo endp
;=========================================
start:
call CLRSCR
call CXY
mov ax, DGROUP
mov ds,ax
mov dx, offset message1
call Print
xor dx,dx
mov dx, offset buf1
mov ah,0Ah
int 21h
mov dx, offset crlf
call Print
mov cl,buf1[1]
mov length1,cl ; пересылка в cl длины первого числа
mov dx, offset message2
call Print
xor dx,dx
mov dx, offset buf2
mov ah,0Ah
int 21h
mov dx, offset crlf
call Print
mov cl,buf2[1]
mov length2,cl ; пересылка в cl длины второго числа
mov dx, offset message3
call Print
mov ah,1
int 21h
mov Choice,al
cmp Choice,13
je Nach
jne quit
Nach: ; начало:
mov Sign,0 ; признак положительности обоих чисел
mov Sign1,0 ; признак положительности первого числа
mov Sign2,0 ; признак положительности второго числа
mov bx,OFFSET Buf1;
; загрузка в bx адреса первого числа buf1
mov al, length1 ; в al длина первого числа
mov bcgP,al ; длина числа
mov flagbuf1,1 ; флаг=1 работы с первым числом
call StrTo
; двочно-десятичное число в неупакованном формате
mov al,bcgP ; сколько раз записывали в стек 1 число
mov bcg1,al
mov bx,OFFSET Buf2;
; загрузка в bx адреса второго числа buf2
mov al, length2 ; в al длина второго числа
mov bcgP,al
call StrTo
mov al,bcgP ; сколько раз записывали в стек 2 число
mov bcg2,al
mov al,bcg1
mov adg,al ; сколько раз записывали в стек 1число
call AddNulls ; добавляем нули
nxt:
cmp Sign,1 ; если одно из чисел отрицательное
je YesSign
jne sravnpolozh ; да
YesSign: ; нет - оба положительные, производим сравнение
cmp Sign1,1 ; если отрицательно первое число
je YesSign1; да
jne NoSign1 ; нет
YesSign1:
cmp Sign2,0 ; второе положительное, то выводим минус, а числа суммируем
je VivodMinus
jne ObaOtricat ; оба отрицательны
VivodMinus:
mov dl,'-'
mov ah,2
int 21h
jmp AddDigit ; сложение
ObaOtricat:
sub length1,1
sub length2,1
mov cl,length1
cmp cl,length2 ; сравнение длин чисел
jg FirstGreat ; длина первого числа больше
jl SecondGreat ; длина второго числа больше
je Sravnenie ; длины равны
FirstGreat:
mov dl,'-' ; выводим минус
mov ah,2
int 21h
jmp OnSub ; вычитание
Sravnenie:
lea bx,buf1
xor di,di
add di,2
cicl:
mov ah,[bx+di]
cmp ah,buf2[di]
jg FirstGreat
jl SecondGreat
loop cicl
SecondGreat:
call Swap
jmp OnSub ; вычитание
NoSign1: ; первое число положительное
cmp Sign2,1 ; а второе отрицательное
je Summa
Summa:
jmp AddDigit
sravnpolozh:
mov cl,length1
cmp cl,length2 ; сравнение длин чисел
jg FirstGreatP ; длина первого числа больше
jl SecondGreatP ; длина второго числа больше
je SravnenieP ; длины равны
SravnenieP:
lea bx,buf1
xor di,di
add di,2
ciclP:
mov ah,[bx+di]
cmp ah,buf2[di]
jg FirstGreatP
jl SecondGreatP
loop ciclP
FirstGreatP:
jmp OnSub ; вычитание
SecondGreatP:
call Swap
mov dl,'-' ; выводим минус
mov ah,2
int 21h
jmp OnSub ; вычитание
AddDigit: ; сложение
call Addition
OnSub: ; вычитание
call Subtraction
end start
Размещено на Allbest.ru
Подобные документы
Моделирование арифметико-логического устройства для вычитания УДЦ для 18 разрядов. Операционная и аксиоматическая семантика команды ассемблера. Верификация линейного участка программы, участка, содержащего ветвления, цикла. Сети Петри для подпрограммы.
курсовая работа [121,2 K], добавлен 13.07.2012Построение математической модели программы, одноленточного автомата над алфавитом, допускающего различные множества слов. Алфавит терминальных символов, множество состояний и переходов. Определение начального и конечного состояний. Понятие сети Петри.
контрольная работа [294,8 K], добавлен 17.09.2013Общее описание и особенности использования программы, предназначенной для определения нечетных чисел, находящихся в массиве чисел. Листинг и методы оптимизации данной компьютерной программы. Источники оптимизации кода, описание выполненных команд.
лабораторная работа [17,4 K], добавлен 25.03.2011Изучение языка низкого уровня ассемблер для написания примера программы для 16 битного приложения. Разработка и реализация алгоритма поднесения чисел к степени чисел над полем за основанием 2 (mod 2). Иллюстрация техники создания DOS приложения.
курсовая работа [33,3 K], добавлен 08.11.2011Поиск взаимно простых чисел. Алгоритм Евклида для целых чисел. Описание выбранного языка программирования. Алгоритм решения задачи. Обзор средств программирования. Текст и описание программы. Руководство оператора, программа и методика испытаний.
курсовая работа [843,5 K], добавлен 15.06.2011Ввод и вывод чисел при помощи подключаемого модуля IO. Особенности работы с одномерными и двухмерными массивами. Тестирование состояние флагов. Рринципы и навыки работы с компилятором и отладчиком. Разработка схемы алгоритма программы на языке ассемблер.
курсовая работа [1,3 M], добавлен 02.12.2009Анализ технического задания. Разработка программы по вычислению функции на языке ассемблер для микропроцессора Кр580ВМ80. Алгоритмы программного умножения, деления, сложения, вычитания и сдвига влево многобайтных чисел. Расчет времени работы программы.
курсовая работа [88,2 K], добавлен 19.09.2012Описание принципа развивающей игры в слова "Виселица". Разработка программы, реализующей задачу данной игры на языке Delphi. Обоснование выбора среды программирования, листинг файла, результаты отладки и тестирования, руководство для пользователя.
курсовая работа [572,7 K], добавлен 14.07.2012Методы моделирования, отличные от инструментария "сети Петри". Пример моделирования стандартом IDEF0 процесса получения запроса браузером. Раскрашенные (цветные) сети Петри. Моделирование процессов игры стандартными средствами сетей Петри, ее программа.
курсовая работа [1,6 M], добавлен 11.12.2012Написание программы для генерации случайных чисел, в которой реализуются возможности генерации абсолютно случайных чисел. Приложение на языке С/С++. Описание узла, содержащего данные; функций и методов работы; чтения данных из памяти и вывода их на экран.
курсовая работа [172,4 K], добавлен 23.05.2012