Разработка планировщика процессов в ОС MS-DOS

Функции планировщика процессов: добровольный вызов, переключение между процессами, анализ нажатия клавиш Ctrl-D. Составление алгоритма работы программы, разработка процедуры планировщик и процедуры анализа клавиш. Организация интерфейса пользователя.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 20.01.2015
Размер файла 480,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Анализ проставленной задачи

2. Разработка процедур, реализующих процессы

3. Разработка процедур планировщика

4. Разработка процедур анализа клавиш

5. Организация интерфейса пользователя

6. Руководство пользователя

Заключение

Список литературы

Приложение

планировщик клавиша программа интерфейс

Введение

В данной курсовой работе разрабатывается планировщик процессов в ОС MS-DOS. Количество моделируемых процессов - 6. Планировщик вызывается добровольно. Переключение между процессами осуществляется по алгоритму "очередь с накапливаемыми приоритетами". Для отображения работы планировщика каждый процесс рисует линии. Выход из приложения выполняется комбинацией клавиш "Ctrl+D".

В ходе работы должен быть произведен анализ поставленной задачи, составлен алгоритм работы программы, разработаны процедуры, реализующие процессы, разработаны процедуры планировщика, разработаны процедуры анализа клавиш.

1. Анализ поставленной задачи

В соответствии с задание программа должна выполнять следующие действия:

1) Добровольный вызов планировщика

2) Переключение между процессами

3) Анализ нажатия клавиш Ctrl-D

Добровольный вызов планировщика базируется на идее перехвата прерывания 60h (пользовательское прерывание). Для этого в таблицу векторов прерываний записывается адрес процедуры планировщика процессов в формате сегмент:смещение. Вызов планировщика происходит после того как процесс полностью истратит отведенный ему квант времени. Т.е. процесс добровольно освободит машинный ресурс для следующего процесса и перейдет в режим ожидания.

Переключения между процессами выполняется по алгоритму "очередь с накапливаемыми приоритетами". Суть данного алгоритма в том, что каждый процесс имеет свой приоритет и переключение на него будет происходить с определенной вероятностью P. Чем ниже число приоритета, тем выше вероятность P. Данный алгоритм может быть реализован генератором случайных чисел (ГСЧ). Пусть An - массив размерностью n, где n - кол-во выборок случайной величины. Также пусть ГСЧ генерирует числа от 1 до n с вероятностью P=1/n. Тогда каждый элемент массива может быть выбран случайно с одинаковой вероятностью 1/n. Если массив А заполнить числами от 1 до 6 так, что число m повторяется (7-m) раз то вероятность выборки случайного числа m из массива А будет равна P=m/n. Т.е. чем чаще повторяется число, тем выше вероятность выборки этого числа с помощью ГСЧ. Для накопления приоритета через каждые K выборок приоритет каждого процесса увеличивается. А именно A[i]:=A[i]+1. Если A[i] будет равен максимальному числу приоритета, то ему присваивается минимальное число приоритета.

Для анализа нажатия клавиши необходимо проверить тот факт, что клавиша была нажата. Если была нажата какая-либо клавиша, то проводится анализ и проверка нажатых комбинаций. В случае если была нажата комбинация Ctrl+D, то программа завершает свою работу и передает управление MS-DOS. Учитывая особенность функций ввода с клавиатуры в языке ассемблер проверка нажатия клавиш будет производится 2 раза. Первый раз - проверка клавиши Ctrl, второй - клавиши D. Для завершения работы программы используется прерывание 20h.

Кроме того, планировщик должен:

1)сохранять параметры процесса;

2)загружать параметры процесса

После того как процесс приостановится, но не завершится, его параметры изменятся и их необходимо сохранить. Для хранения параметров используется специальным образом организованная область памяти, такая как стек. Под каждый процесс выделяется некоторый объем памяти (кол-во адресного пространства). Таким образом стек условно делится на несколько стеков. Для того чтобы сохранить данные в стек, необходимо переместить указатель стека на дно стека текущего процесса. Затем занести в стек параметры и сохранить адрес вершины стека. Для загрузки параметров в указатель стека записывается сохраненный адрес вершины стека. Т.е. для стека каждого процесса необходимо минимум две переменные: 1 - хранит адрес дна стека, 2 - адрес вершины стека.

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

2. Разработка процедур, реализующих процессы

Каждый процесс представляет собой процедуру (proc_1, proc_2, proc_3, proc_4, proc_5, proc_6), состоящую из адреса начала процедуры, команд процесса и команды возврата. Для визуального отображения работы планировщика каждый процесс должен закрасить 3200 пикселей в виде прямоугольника. Закрашивание пикселя выполняется с помощью функции 0ch прерывания 10h. Входные параметры:

1) Цвет линии (регистр AL);

2) Координата Y (регистр DX);

3) Координата Х (регистр СХ);

4) Видеостраница (регистр BH);

Если данная функция будет вызываться циклически, то кол-во итераций - квант времени. Изменяемыми параметрами являются значения регистров CX, AL, DX. После того как процесс завершится и передаст управление основной программе значения этих регистров должны быть сохранены в стек данного процесса.

Так как метка на каждый процесс содержит адрес, то для того чтобы вызвать нужную процедуру достаточно записать этот адрес в переменную proc_p. А для вызова процесса будет использоваться команда call [cs:proc_p]. Такой подход позволит избежать ветвлений из условных операторов для проверки некоторого параметра содержащего номер процесса.

Алгоритм работы процесса

1)Рг.BL:=50

2)Рг.AH:=0ch

3)Рг.BH:=1

4)выполнить прерывание 10h

5)Рг.СХ:=Рг.СХ-1

6) Рг.BL:=Рг.BL-1

7)сравнить BL c 0.

8)Если не равно 0, то перейти на метку 2

9)сравнить СХ с 0

10)если не равно 0, то перейти на метку 13

11)Рг.AL:=Рг.AL+1

12)Рг.СХ:=3200

3. Разработка процедур планировщика

Основными процедурами планировщика являются: сохранение словосостояния текущего процесса, загрузка выбранного процесса, переключение между процессами.

Для сохранения словосостояний процесса используется процедура save_. Входным параметром данной процедуры является переменная р. Данная переменная хранит адрес по которому в памяти записан номер приостановленного процесса. Используя команды cmp и jСС значение по адресу p сравнивается с числами 1h, 2h, 3h, 4h, 5h, 6h. При совпадении с одним из чисел выполняется переход на метку ms1, ms2, ms3, ms4, ms5 или ms6. После каждой из меток выполняются команды сохранения регистров CX, AX, DX в стек. После записи в стек адрес вершины стека записывается как значение по адресу на который указывает одна из переменных sp1, sp2, sp3, sp4, sp5, sp6. Данные переменные содержат адрес по которому записан адрес вершины каждого из стеков после записи.

Алгоритм процедуры save_

1)Загрузить номер процесса в BX

2)Сравнить BX с 1h

3)Если BX = 1h, то переход на метку 14

4)Сравнить BX с 2h

5)Если BX = 2h, то переход на метку 15

6)Сравнить BX с 3h

7)Если BX = 3h, то переход на метку 16

8)Сравнить BX с 4h

9)Если BX = 4h, то переход на метку 17

10)Сравнить BX с 5h

11)Если BX = 5h, то переход на метку 18

12)Сравнить BX с 6h

13)Если BX = 6h, то переход на метку 19

14)Загрузить параметры в стек ss1 и перейти на метку 20

15) Загрузить параметры в стек ss2 и перейти на метку 20

16) Загрузить параметры в стек ss3 и перейти на метку 20

17) Загрузить параметры в стек ss4 и перейти на метку 20

18) Загрузить параметры в стек ss5 и перейти на метку 20

19) Загрузить параметры в стек ss6 и перейти на метку 20

20)Передать управление основной программе и переключиться на её стек

После каждой сохранения словосостояния адрес вершины стека записывается по адресу соответствующей переменной.

Для загрузки словосостояния процесса используется процедура load_. Работа данной процедуры идентична процедуре save_. Отличием будет то, что для работы со стеком переменные sp1, sp2, sp3, sp4, sp5, sp6 не нужны.

Процедура load_ вызывается перед вызовом процедуры по адресу proc_p. После завершения работы вызванной процедуры вызывается процедура save_.

Планировщик реализуется процедурой proc. Для записи адреса данной процедуры в таблицу векторов прерываний используются команды запрета и разрешения прерываний и каманды пересылки mov. При вызове прерывания 60h происходит переход на процедуру proc по адресу [cs:proc]. Данная процедура выполняет следующие действия

1) Инициализация генератора случайных чисел;

2) Генерация случайной величены;

3) Выборка из массива процессов по сгенерированному случайному индексу;

4) Запись адреса выбранного процесса;

5) Запись номера выбранного процесса.

В языке ассемблер отсутствует встроенный генератор случайных чисел. Поэтому он должен быть описан в виде процедуры. Для данной программы можно выбрать минимальный генератор Парка-Миллера. Данный генератор состоит из процедуры WIrandom, Wrandom и WIRandomInit. Полученное случайное число записывается в регистр EAX. Так как диапозон генерируемых чисел от 0 до 20 то можно будь использовать регистр AX.

Полученное число используется как индекс элемента массива. Используя индексную адресацию со смещением, значение из массива mass записывается в регистр DX. Необходимое значение хранится в младшем байте регистра.

Сравнивая значение в регистре DL выполняется переход по определенной метке, в которой в переменную proc_p записывается адрес процедуры процесса, а в переменную p номер процесса.

Метка main указывает на адрес начала основного кода программы в котором происходит вызов планировщика, загрузка и сохранение процесса. Вызов процедуры процесса, смена приоритетов, проверка нажатия Ctrl+D.

4. Разработка процедур анализа клавиш

Процедура анализа клавиш расположена в основном коде программы после метки main. Проверка нажатия клавиш происходит поэтапно:

1)проверка факта нажатия клавиши

2)проверка нажатия клавиши Ctrl

3)проверка нажатия клавиши D

Для проверки факта нажатия клавиши используется функция 0bh прерывания 21h. Данная функция проверяет кольцевой буфер клавиатуры. Если он содержит код нажатой/отжатой клавиши, то флаг Z=1 иначе Z=0. Поэтому использование данной функции позволит выполнять следующие, после проверки, команды без ожидания нажатия клавиш. Если была нажата какая-либо клавиша, то вызывается функция 02h прерывания 16h. При нажатии на клавишу Ctrl в регистр AL помещается байт. Наличие 1 в третьем бите говорит о том, что была нажата клавиша Ctrl. Если нажата Ctrl, то командой in из порта 60h в регистр AL будет помещен код следующей нажатой клавиши. При этом, независимо от того как долго прошло времени между нажатием клавиши Ctrl и следующей клавишей, в регистр AL при считывании из порта 60h будет помещен скан-код последней нажатой клавиши. Т.е. в случае комбинации D+Ctrl программа не завершит свою работу и не передаст управление MS-DOS.

5. Организация интерфейса пользователя

Программа работает в графическом режиме 320х200, 256 цветов. Моделирование процессов происходит сразу после запуска программы. В левом верхнем углу выводится текст "DLya vihoda iz programmi nazhmite Ctrl+D". На рисунке 1 представлен интерфейс пользователя.

Рисунок 1 - интерфейс пользователя

6. Руководство пользователя

Программа является исполняемым com файлом. Предназначена для моделирования работы планировщика, управляющего 6-ю процессами с заранее заданными параметрами. Процессы переключаются добровольно. Выбор следующего процесса осуществляется по алгоритму "очередь с накапливаемыми приоритетами". Каждые 100 вызовов процессов их приоритеты изменяются.

Системные требования:

- IBM-PC совместимый компьютер с процессором 80368,

- 4мб памяти,

- видеоадаптер EGA,

- ОС MS-DOS 3.3.

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

После запуска программы ввод данных не требуется.

Выход осуществляется нажатием комбинации клавиш Ctrl+D.

Заключение

В курсовой работе разработана программа планировщика для 6 процессов. Каждый процесс выполняется с заданным приоритетом. Визуально можно заметить что те процессы которые имеют более низкий приоритет выполняются менее часто. Однако не смотря на то, что процесс имеет самый низкий приоритет, ему гарантированно будет выделен квант времени.

Загрузка и сохранение словосостояние каждого процесса выполняется не в самом прерывании 60h а перед вызовом процесса и после. После того как процесс истратил свой квант времени он не вызывает прерывание 60h. Прерывание вызывается после проверки комбинации клавиш.

Одной из основных задач, решаемых в данной курсовой работе, является переключение стеков и загрузка/сохранение параметров процессов, так как вызов процедур сохранения и загрузки приводит к потере данных если они были записаны в регистры. Для решения данной проблемы процедуры загрузки и сохранения были помещены перед и после вызова процесса. Однако эти процедуры должны выполняться непосредственно в процедуре планировщика. Для того чтобы загрузка и сохранение выполнялись внутри планировщика можно продублировать параметры в память. А после выполнения процесса обновить эти параметры. Вызов процедур и остальные команды не затронут параметры.

Список литературы

1. Олифер В., Олифер Н. Сетевые операционные системы: учебник для вузов. 2-е изд. - СПб.: Питер, 2009. - 669с.:ил.

2. Гордеев А.В. Операционные системы: учебник для вузов. 2-е изд. - СПб.: Питер, 2006. - 420с.:ил.

3. Таненбаум Э. Современные операционные системы. 3-е издание. - СПб.: Питер, 2010, 1120 с.

Приложение А

use16

org 100h

jmp start

ss1 dw 100h dup (?)

ss2 dw 100h dup (?)

ss3 dw 100h dup (?)

ss4 dw 100h dup (?)

ss5 dw 100h dup (?)

ss6 dw 100h dup (?)

sp1 dw ?

sp2 dw ?

sp3 dw ?

sp4 dw ?

sp5 dw ?

sp6 dw ?

main_sp dw ?

proc_p dw ?

p dw ?

str1 db 'Dlya vihoda nazhmite Ctrl+D','$'

mass db 1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,5,5,6

random_seed dd ?

start:

mov ax,cs

mov ds,ax

mov ax,0

mov es,ax

cli

mov ax,proc

mov [es:60h*4],ax

mov [es:60h*4+2],cs

sti

mov ah,00h

mov al,13h

int 10h

mov ah,09h

mov DX,str1

int 21h

mov [main_sp],sp

mov sp,ss1

mov ax,1

mov dx,20

mov cx,3200

push ax

push dx

push cx

mov [sp1],sp

mov sp,ss2

mov ax,1

mov dx,40

mov cx,3200

push ax

push dx

push cx

mov [sp2],sp

mov sp,ss3

mov ax,1

mov dx,60

mov cx,3200

push ax

push dx

push cx

mov [sp3],sp

mov sp,ss4

mov ax,1

mov dx,80

mov cx,3200

push ax

push dx

push cx

mov [sp4],sp

mov sp,ss5

mov ax,1

mov dx,100

mov cx,3200

mov di,p

mov bl,5

mov [di],bl

push ax

push dx

push cx

mov [sp5],sp

mov sp,ss6

mov ax,1

mov dx,120

mov cx,3200

push ax

push dx

push cx

mov [sp6],sp

mov sp,[main_sp]

xor cx,cx

main:

push cx

int 60h

call load_

call [cs:proc_p]

call save_

pop cx

inc cx

cmp cx,100

jne main1

mov di,mass

mov cx,21

main4:

mov al,[di]

cmp al,6

jne main2

mov al,1

mov [di],al

jmp main3

main2:

inc al

mov [di],al

main3:

inc di

loop main4

main1:

mov ah,0bh

int 21h

cmp al,0

je main

mov ah,02h

int 16h

test al,00000100b

jz main

in al,60h

cmp al,20h

jne main

int 20h

proc:

call WRandomInit

call WIRandom

mov di,mass

add di,ax

mov dx,[di]

cmp dl,1

je m11

cmp dl,2

je m22

cmp dl,3

je m33

cmp dl,4

je m44

cmp dl,5

je m55

cmp dl,6

je m66

jmp m77

m11:

mov dx,proc1

mov [proc_p],dx

mov [p],1h

jmp m77

m22:

mov dx,proc2

mov [proc_p],dx

mov [p],2h

jmp m77

m33:

mov dx,proc3

mov [proc_p],dx

mov [p],3h

jmp m77

m44:

mov dx,proc4

mov [proc_p],dx

mov [p],4h

jmp m77

m55:

mov dx,proc5

mov [proc_p],dx

mov [p],5h

jmp m77

m66:

mov dx,proc6

mov [proc_p],dx

mov [p],6h

m77:iret

WRandom:

push edx ecx

mov eax, [random_seed]

xor edx,edx

mov ecx,12773

div ecx

mov ecx,eax

mov eax,16807

mul edx

mov edx,ecx

mov ecx,eax

mov eax,2836

mul edx

sub ecx,eax

xor edx,edx

mov eax,ecx

mov [random_seed],ecx

mov ecx,100000

div ecx

mov eax,edx

pop ecx edx

ret

WRandomInit:

push eax edx

rdtsc

xor eax,edx

mov [random_seed],eax

pop edx eax

ret

WIRandom:

push edx ecx

mov ecx,20

sub ecx,0

inc ecx

call WRandom

xor edx,edx

div ecx

mov eax,edx

add eax,0

pop ecx edx

ret

proc1:

mov bl,5

mproc1_3:

mov ah,0Ch

mov bh,1

mproc1_1:

int 10h

push cx

mov cx,2000

mproc1_2:

dec cx

cmp cx,0

jne mproc1_2

pop cx

dec cx

dec bl

cmp bl,0

jne mproc1_3

cmp cx,0

jne mproc1_4

inc al

mov cx,3200

mproc1_4:

ret

proc2:

mov bl,5

mproc2_3:

mov ah,0Ch

mov bh,1

mproc2_1:

int 10h

push cx

mov cx,2000

mproc2_2:

dec cx

cmp cx,0

jne mproc2_2

pop cx

dec cx

dec bl

cmp bl,0

jne mproc2_3

cmp cx,0

jne mproc2_4

inc al

mov cx,3200

mproc2_4:

ret

proc3:

mov bl,5

mproc3_3:

mov ah,0Ch

mov bh,1

mproc3_1:

int 10h

push cx

mov cx,2000

mproc3_2:

dec cx

cmp cx,0

jne mproc3_2

pop cx

dec cx

dec bl

cmp bl,0

jne mproc3_3

cmp cx,0

jne mproc3_4

inc al

mov cx,3200

mproc3_4:

ret

proc4:

mov bl,5

mproc4_3:

mov ah,0Ch

mov bh,1

mproc4_1:

int 10h

push cx

mov cx,2000

mproc4_2:

dec cx

cmp cx,0

jne mproc4_2

pop cx

dec cx

dec bl

cmp bl,0

jne mproc4_3

cmp cx,0

jne mproc4_4

inc al

mov cx,3200

mproc4_4:

ret

proc5:

mov bl,5

mproc5_3:

mov ah,0Ch

mov bh,1

mproc5_1:

int 10h

push cx

mov cx,2000

mproc5_2:

dec cx

cmp cx,0

jne mproc5_2

pop cx

dec cx

dec bl

cmp bl,0

jne mproc5_3

cmp cx,0

jne mproc5_4

inc al

mov cx,3200

mproc5_4:

ret

proc6:

mov bl,5

mproc6_3:

mov ah,0Ch

mov bh,1

mproc6_1:

int 10h

push cx

mov cx,2000

mproc6_2:

dec cx

cmp cx,0

jne mproc6_2

pop cx

dec cx

dec bl

cmp bl,0

jne mproc6_3

cmp cx,0

jne mproc6_4

inc al

mov cx,3200

mproc6_4:

ret

load_:

mov [main_sp],sp

mov bx,[p]

cmp bx,1h

je ml1

cmp bx,2h

je ml2

cmp bx,3h

je ml3

cmp bx,4h

je ml4

cmp bx,5h

je ml5

cmp bx,6h

je ml6

jmp ml7

ml1:

mov sp,[sp1]

pop cx

pop dx

pop ax

jmp ml7

ml2:

mov sp,[sp2]

pop cx

pop dx

pop ax

jmp ml7

ml3:

mov sp,[sp3]

pop cx

pop dx

pop ax

jmp ml7

ml4:

mov sp,[sp4]

pop cx

pop dx

pop ax

jmp ml7

ml5:

mov sp,[sp5]

pop cx

pop dx

pop ax

jmp ml7

ml6:

mov sp,[sp6]

pop cx

pop dx

pop ax

ml7:mov sp,[main_sp]

ret

save_:

mov [main_sp],sp

mov bx,[p]

cmp bx,1h

je ms1

cmp bx,2h

je ms2

cmp bx,3h

je ms3

cmp bx,4h

je ms4

cmp bx,5h

je ms5

cmp bx,6h

je ms6

jmp ms7

ms1:

mov sp,ss1

push ax

push dx

push cx

mov [sp1],sp

jmp ms7

ms2:

mov sp,ss2

push ax

push dx

push cx

mov [sp2],sp

jmp ms7

ms3:

mov sp,ss3

push ax

push dx

push cx

mov [sp3],sp

jmp ms7

ms4:

mov sp,ss4

push ax

push dx

push cx

mov [sp4],sp

jmp ms7

ms5:

mov sp,ss5

push ax

push dx

push cx

mov [sp5],sp

jmp ms7

ms6:

mov sp,ss6

push ax

push dx

push cx

mov [sp6],sp

ms7:mov sp,[main_sp]

ret

Приложение Б

Рисунок 1 - приоритет "1" у процесса 1

Рисунок 2 - приоритет "1" у процесса 4

Рисунок 3 - изменение приоритетов процесса. Первый процесс имеет больший приоритет чем второй.

Рисунок 4 - результат завершения работы программы

Приложение В

Блок-схема алгоритма работы программы

Блок-схема алгоритма планировщика

Блок-схема алгоритма загрузки параметров

Блок-схема алгоритма загрузки параметров

Размещено на Allbest.ru


Подобные документы

  • Общая организация файловой системы. Виртуальные страницы. Команды для работы с ФС. Способы организации файлов. Системные вызовы управления процессами. Алгоритм работы планировщика процессов. Мультипрограммный режим работы ОС. Структура ядра системы.

    курсовая работа [645,3 K], добавлен 23.03.2015

  • Изучение характеристик и режимов работы ВТА 2000-30. Составление блок-схемы алгоритма программы. Рассмотрение особенностей интерфейса вычислительных систем. Описание кодов символьных и функциональных клавиш, полученных при выполнении практической работы.

    отчет по практике [26,6 K], добавлен 04.04.2015

  • Разработка и практическая апробация действия драйвер-фильтра клавиатуры для операционной системы Windows, переопределяющего значение любых клавиш и отключающего клавиши клавиатуры. Составление программы для установки и управления данным драйвером.

    курсовая работа [226,8 K], добавлен 18.06.2009

  • Разработка приложения для шифрования данных с помощью алгоритма DES5: процесс шифрования, расшифрования, получение ключей. Спецификация программы, процедуры и функции; описание интерфейса пользователя. Реализация задачи в среде программирования DELPHI.

    курсовая работа [812,6 K], добавлен 27.03.2012

  • Этапы процедуры принятия решений. Разработка математического алгоритма. Блок-схема алгоритма работы программы. Разработка программы на языке программирования С++ в среде разработки MFC. Текст программы определения технического состояния станка с ЧПУ.

    курсовая работа [823,0 K], добавлен 18.12.2011

  • Составление схемы алгоритма и программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Пример вычисления степенного ряда с помощью схемы Горнера. Описание переменных программы, листинг, процедуры и функции.

    курсовая работа [67,6 K], добавлен 20.11.2012

  • Методы обработки информации при решении прикладных задач. Математическая модель задачи. Блок-схема алгоритма программы. Компоненты, которые используются для работы в программе: элементы интерфейса; процедуры; операторы. Текст программы с пояснениями.

    курсовая работа [954,0 K], добавлен 07.01.2011

  • Символьные типы данных, работа со строками, составление блок-схемы алгоритма и программы для работы с массивами. Организация программы с использованием процедур и функций. Процедуры и функции, использующиеся при обработке файлов; компонентные файлы.

    контрольная работа [52,9 K], добавлен 03.10.2010

  • Считывание информации из файла, анализ заголовка. Установка видеорежима и анализ его параметров. Разработка процедуры вывода изображения на экран. Методы вывода сообщений. Разработка алгоритма, удовлетворяющего требованиям задания и интерфейса программы.

    курсовая работа [23,6 K], добавлен 17.05.2013

  • Разработка база данных в виде таблицы, включающей поля: ФИО, адрес, номер телефона, наименование услуги, сумма оплаты, срок выполнения. Процедуры программы и соответствующие им пункты в меню. Описание исходных данных, интерфейса и работы каждой процедуры.

    курсовая работа [997,3 K], добавлен 08.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.