Алгоритм «Поразрядная сортировка»
Введение
Компьютеры являются неотъемлемой частью нашей жизни, так как мы каждый день используем их на работе, дома и во множестве других мест.
Возможности применения компьютера
в учебном процессе, весьма многообразны.
Он может служить для
Основной задачей современного программиста при написании программы является не подвергание её бесконечным тестированиям, а тщательный, полный анализ исходного текста программы, а также отладка программы с помощью дополнительных программных средств.
Целью моей курсовой работы
является повторение и закрепление
материала, изученного по языку программирования
высокого уровня Паскаль. Задачами является
повышение навыков
1. Задание
Разработать программу для OS MS-DOS "Поразрядная сортировка", Использовать средства встроенного Ассемблера, реализующие алгоритм, работу с файла (считывание из файла), пользовательский интерфейс.
2.Основная часть
2.1 Алгоритм «Поразрядная сортировка»
Поразрядная сортировка — алгоритм сортировки за линейное время.
Алгоритм сортировки, числа сортируются по разрядам. Существует два варианта least significant digit (LSD) и most significant digit (MSD). При LSD сортировке, сначала сортируются младшие разряды, затем старшие. При MSD сортировке все наоборот. При LSD сортировке получается следующий порядок: короткие ключи идут раньше длинных, ключи одного размера сортируются по алфавиту, это совпадает с нормальным представлением чисел: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. При MSD сортировке получается алфавитный порядок, который подходит для сортировки строк. Например "b, c, d, e, f, g, h, i, j, ba" отсортируется как "b, ba, c, d, e, f, g, h, i, j". Если MSD применить к числам разной длины, то получим последовательность 1, 10, 2, 3, 4, 5, 6, 7, 8, 9.
При MSD сортировке последовательность
сортируется по старшему значимому
двоичному разряду так, чтобы
все ключи начинающиеся с 0 оказались
перед всеми ключами
Вместо сравнения N-й битовой позиции в слове сравнивается N-й байт строки.
Нулевой проход использует
только нулевые символы в каждой
строке и является корзинной сортировкой
по нулевому символу. Эффективная реализация
возможна при использовании массива
ссылок на строки вместо самих строк,
дополнительного массива «
N-й (для N > 0) проход
выполняется последовательно
Операция завершается при N, равном максимальной длине строки, или же в ситуации, когда все «подкорзины» получили длину 1.
.
2.2 Выбор языка и среды разработки
В процессе моего обучения мною были освоены 2 языка программирования: Turbo Pascal и Си. Для реализации программы в качестве основного был выбран язык программирования Turbo Pascal, который представляется мне наиболее оптимальным для разработки MS-DOS приложений и который отлично подходит для реализации заданий средней сложности, какой и является моя программа. Данный язык мне кажется наиболее удобным, ясным и понятным для программирования.
Разработка программы велась в среде Turbo Pascal 7.0. Система программирования Turbo-Pascal была разработана в середине 80-х годов фирмой Borland International (США). Turbo-Pascal включает в себя как язык программирования - одно из расширений языка Pascal для ЭВМ типа IBM, так и среду, предназначенную для написания, отладки и запуска программ. Практически он полностью реализует аппаратные возможности персонального компьютера фирмы IBM и совместимых с ним. Система имеет два основных достоинства: простота и естественность языка программирования Pascal, великолепные сервисные возможности диалоговой среды программирования фирмы Borland. Язык характеризуется расширенными возможностями по сравнению со стандартом, хорошо развитой библиотекой стандартных модулей, позволяющих использовать возможности операционной системы, создавать оверлейные структуры, организовывать ввод-вывод , формировать графические изображения и т.д.
Именно поэтому, на мой
взгляд, язык Turbo Pascal является универсальным
и оптимальным для
Так же согласно заданию данной курсовой работы в данной программе использованы средства встроенного Ассемблера, реализующие алгоритм поиска «Поразрядная сортировка», работу с файлами (считывание из файла), пользовательский интерфейс.
2.3Описание переменных
Описание переменных, используемых в исполнительном файле RAZR.PAS приведено в таблице 1.
Таблица 1.Описание переменных исполнительного файла RAZR.PAS
Идентификатор |
Тип данных |
Назначение |
lng |
integer |
Хранит длину строки |
s |
string |
Строка для вывода на экран текста |
f |
txt |
Переменная привязки файла с входными данными |
g |
txt |
Переменная привязки файла с выходными данными |
ic |
integer |
Переменная-счётчик |
p |
integer |
Переменная-счётчик |
n |
integer |
Переменная-счётчик |
m |
string |
Массив входных значений |
gf |
string |
Массив выходных значений |
ks |
string |
Переменная для связи массива и файла |
2.4 Описание процедур
Все процедуры в исполнительном файле RAZR.PAS приведены в таблице 2.
Таблица 2. Процедуры модуля RAZR.PAS
Идентификатор |
Назначение |
MainMenu |
Вывод меню |
Таблица 2. Процедуры модуля RAZR.PAS(Продолжение)
Идентификатор |
Назначение |
Vihod |
Выход из программы |
About |
О программе |
MenuSpr |
Вывод информации о входных данных |
ZapVFail |
Вывод информации о записи данных |
Schit |
Считывание данных из файла |
Zapis |
Запись данных в файл |
RazSort |
Поразрядная сортировка |
2.5 Комплект файлов, входящих в состав программы
В комплект готовой программы входят файлы: RAZR.PAS, RAZR.EXE, in.txt
2.6 Интерфейс
При запуске исполняемого файла программы BINARNIY.EXE появляется основное окно программы (Рисунок 1.)
Рисунок 1.Основное меню программы.
При нажатии на 1, появляется окно (Рисунок 2)
Рисунок 2.Окно по нажатии пункта 2.
При нажатии пункта 2, происходит запуска алгоритма «Поразрядной сортировки» (Рисунка 3).
Рисунок 3.Запуск алгоритма поиска.
При нажатии пункта 3, происходит сохранение в файл под названием OUT.txt (Рисунок 4).
Рисунок 4.Сохранение в файл.
По нажатию пункта 4 происходит вывод справочной информации (Рисунок 5).
Рисунок 5.Справочная информация
По нажатию пункта 0 происходит выход из программы(Рисунок 6)
Рисунок 6.Выход из программы
2.7 Тестирование программы
Проверка правильности работы
программы и отсутствия ошибок в
ней была проведена на следующих
компьютерах разными
- Celeron 433, 128Mb ОЗУ, RivaTNT-2, OC Windows Me;
- AMD 64, 512Mb ОЗУ, 3.0Ггц, Radeon X9600, OC Windows XP SP2;
- Intel Pentium 4, 2.8 GHz, 512 Mb ОЗУ, Sapphire ATI Radeon 9600 XT, ОС Windows XP Sp 2;
- Intel Celeron D 2.6 GHz, 512 Mb ОЗУ, NVidia GeForce 6600,
- OC Windows XP SP2;
- Intel Pentium 3 733 Mгц, 420Mb ОЗУ, GeForce2 440 MX,
- OC Windows XP SP2;
В процессе тестирования никаких ошибок и неисправностей не выявлено. Программа работает стабильно и без ошибок.
Заключение
Был изучен и реализован алгоритм «Поразрядной сортировки».Как было указано возможно использование алгоритма и для сортировки строк, но был реализован «цифровой» алгоритм. Это обусловлено той причиной, что алгоритм более продуктивно работает с числами, давая высокие результаты.
Все выше указанные задачи были успешно реализованы на языке Pascal, с применением «ассемблерных вставок», что значительно увеличивает скорость работы алгоритма.
Список литературы:
- Кнут Д., Искусство программирования для ЭВМ, т. 3 "Сортировка и поиск", М., Мир, 1978
- Вирт Н., Алгоритмы и структуры данных, М., Мир, 1989.
- Абрамов С.А., Зима В.С. Начало программирования на языке Паскаль. – М.: Наука, 1987. – 112 с.
- Вальвачев А.Н., Крисевич В.С. Программирование на языке Паскаль для персональных ЭВМ ЕС: Справочное пособие. – Мн.: Вышэйшая школа, 1989. – 223 с.
- Дробышевский Р.В., Лифенко А.П., Персональный компьютер для начинающих. – Л.: ИМА–пресс, 1990. – 88 с.
- Зуев Е.А. Язык программирования Turbo Pascal 6.0. – М.: Унитех , 1992. – 298 с.
- Котов В.М., Волков B.А., Лапо И.А., Методы алгоритмизации. – М.: Народная асвета, 1997. – 159 с.
- Павловский А.И., Пупцев А.Е., Гращенко П.Л, Информатика 10. – М.: Народная асвета, 2000. – 222 с.
- Фаронов В.В. Программирование на персональных ЭВМ в среде Турбо Паскаль. – М.: Изд-во МГТУ, 1990. – 590 с.
- Фаронов В.В. Турбо Паскаль 7.0. Начальный курс: Учеб. пособие. – М.: Нолидж, 1998. – 616 с.
Приложение
Ниже приведён листин разрабатываемой программы:
program razrSort;
uses
Crt;
var
buf: char;
lng, i: integer;
s: string;
NameTxt: string;
f,g:Text;
ic,p,n:integer;
m:array [1..100] of string;
gf:array [1..100] of string;
ks:string;
ppc:integer;
psk:string;
res:string;
mas:pointer;
len:word;
procedure Pause;forward;
procedure MainMenu;forward;
procedure MenuInf;forward;
procedure Vihod;
var
key: Char;
begin
asm
mov AH,0
mov AL,3
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,28
mov DH,10
int 10h
end;
s:='Hotite viyty?';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,0eh
mov AL,10
mov BH,0
int 10h
mov AH,0eh
mov AL,13
mov BH,0
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,28
mov DH,12
int 10h
end;
s:='Da - Enter';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,48
mov DH,12
int 10h
end;
s:='Net - Esc';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,28
mov DH,10
int 10h
end;
repeat
asm
mov AH,0
int 16h
mov key,AL
end;
if key = #13 then Halt(1);
until key = #27;
MainMenu;
end;
procedure Information;
var
f:file of char;
p:char;
begin
asm
mov AH,0
mov AL,3
int 10h
end;
assign(f, NameTxt);
reset(f);
if IOResult<>0 then begin
s:='Ошибка! Файл не найден!';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,0eh
mov AL,10
mov BH,0
int 10h
mov AH,0eh
mov AL,13
mov BH,0
int 10h
end;
end
else
begin
while not eof(f) do
begin
read(f,p);
write(p);
end;
close(f);
end;
asm
mov AH,0
int 16h
end;
MenuInf;
end;
procedure Pause;
begin
asm
mov AH,0
int 16h
end;
end;
procedure About;
begin
asm
mov AH,0
mov AL,3
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,34
mov DH,6
int 10h
end;
s:='O programme';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,26
mov DH,8
int 10h
end;
s:='>>>>>>>>>>>Kursovaya rabota Porazradnaya sortirovka<<<<<<<<';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,26
mov DH,10
int 10h
end;
s:='******************';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,36
mov DH,18
int 10h
end;
s:='>>>>>>AF RGSU<<<<<<';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,36
mov DH,20
int 10h
end;
s:='2011 god';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,26
mov DH,24
int 10h
end;
s:='Dla vihoda nachmite lubuiy knopky';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,0
int 16h
end;
mainmenu;
end;
procedure B;
var
i, j: Integer;
T:string;
begin
for i := 1 to n do
for j := n downto i+1 Do
if m[Pred(j)] > m[j] then begin { < }
T := m[Pred(j)]; m[Pred(j)] := m[j]; m[j] := T
end
end;
procedure MenuSpr;
var ccc:char;
begin
repeat
asm
mov AH,0
mov AL,3
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,5
mov DH,5
int 10h
end;
s:='zagruzka faila..';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,5
mov DH,6
int 10h
end;
{for i:=1 to n do writeln(m[i]);}
s:='>>>>>>>>> Obrabotka faila.......|';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,5
mov DH,7
int 10h
end;
begin
{ if IOResult<>0 then begin
s:='Ошибка! Файл не найден!';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH, 0eh
mov AL, buf
mov BH, 0
int 10h
end;
end;
asm
mov AH, 0eh
mov AL, 10
mov BH, 0
int 10h
mov AH, 0eh
mov AL, 13
mov BH, 0
int 10h
end;
end
else
begin}
end;
{asm
mov AH,0
int 16h
end;
end; }
{begin
assign(f,'in.txt');
reset(f);
{while not eof(f) do begin
s:='Dla vozvrata nazhmite "0"';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,40
mov DH,22
int 10h
end;
asm
mov AH,0
int 16h
mov ccc,AL
end;
until(ccc='0');
case ccc of
'0': mainmenu
end;
asm
mov AH,0
int 16h
end;
end;
procedure Zapvfail;
var ccc:char;
begin
repeat
asm
mov AH,0
mov AL,3
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,5
mov DH,5
int 10h
end;
s:='>>>>>>>>> Otkritie faila.........|';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,5
mov DH,6
int 10h
end;
s:='>>>>>>>>> Zapis dannih v fail.....|';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,5
mov DH,7
int 10h
end;
begin
end;
{ if IOResult<>0 then begin
s:='Ошибка! Файл не найден!';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH, 0eh
mov AL, buf
mov BH, 0
int 10h
end;
end;
asm
mov AH, 0eh
mov AL, 10
mov BH, 0
int 10h
mov AH, 0eh
mov AL, 13
mov BH, 0
int 10h
end;
end
else
begin}
{begin
for i:=1 to n do
begin
write(g,m[i],' ');
end;
close(g);
end;
{asm
mov AH,0
int 16h
end;
end; }
{begin
assign(f,'in.txt');
reset(f);
{while not eof(f) do begin
s:='Dla vozvrata v menu nazhmite "0"';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,40
mov DH,22
int 10h
end;
asm
mov AH,0
int 16h
mov ccc,AL
end;
until(ccc='0');
case ccc of
'0': mainmenu
end;
asm
mov AH,0
int 16h
end;
end;
procedure schit;
begin
assign(f,'vhodnie.txt'); reset(f);
assign(g,'vihodnie.txt'); rewrite(g);
while not eof(f) do begin {считываем ВЕСЬ файл}
readln(f,ks); {считываем очередную строку}
ic:=0; {ставим счётчик слов на 0}
repeat {*********предложение
разбиваем на слова и
inc(ic); {увеличиваем счётчик текущего ПРЕДЛОЖЕНИЯ}
p:=pos(' ',ks); {смотрим где находится пробел}
m[ic]:=copy(ks,1,p-1); {записываем текущее слово в массив}
delete(ks,1,p); {то слово, которое заприсали в массив - удаляем}
until p=0; {****************}
n:=ic+1; {конец массива}
if s[length(ks)]='.' then {если строчка заканчивается точкой}
begin m[n]:=copy(ks,1,length(ks)-1); m[1]:=m[1]+'.' {то эту точку перемещаем на 1 слово}
end else m[n]:=ks; {а если нет точки - то просто его записываем в массив}
writeln(g);;
for i:=5 downto 1 do write(g,gf[i],' '); {идём с конца массива в начало и записываем слова в обратном порядке}
end;
close(f); close(g);
MenuSpr;
end;
procedure schit2;
begin
assign(f,'vhodnie.txt'); reset(f);
assign(g,'vihodnie.txt'); rewrite(g);
while not eof(f) do begin {считываем ВЕСЬ файл}
readln(f,ks); {считываем очередную строку}
ic:=0; {ставим счётчик слов на 0}
repeat {*********предложение
разбиваем на слова и
inc(ic); {увеличиваем счётчик текущего ПРЕДЛОЖЕНИЯ}
p:=pos(' ',ks); {смотрим где находится пробел}
gf[ic]:=copy(ks,1,p-1); {записываем текущее слово в массив}
delete(ks,1,p); {то слово, которое заприсали в массив - удаляем}
until p=0; {****************}
n:=ic+1; {конец массива}
if s[length(ks)]='.' then {если строчка заканчивается точкой}
begin gf[n]:=copy(ks,1,length(ks)-1)
end else gf[n]:=ks; {а если нет точки - то просто его записываем в массив}
writeln(g);;
for i:=1 to n do write(g,m[i],' '); {идём с конца массива в начало и записываем слова в обратном порядке}
end;
close(f); close(g);
end;
procedure zapis;
begin
schit2;
begin
zapvfail;
end;
end;
procedure RazSort;
begin
{asm
dec n
@CycleExt:
xor ebx, ebx
mov ecx, n
mov esi, 0
@CycleIn:
mov edi, M[esi]
cmp edi, M[esi+4]
jg @Exchange
add esi, 4
loop @CycleIn
jmp @Check
@Exchange:
mov ebx, M[esi+4]
mov M[esi+4], edi
mov M[esi], ebx
add esi, 4
loop @CycleIn
@Check:
cmp ebx, 0
je @Exit
jmp @CycleExt
@Exit: }
end;
procedure sort;
var ccc:char;
begin
asm
mov AH,0
mov AL,3
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,5
mov DH,5
int 10h
end;
s:='Sortiruem..';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,5
mov DH,6
int 10h
end;
begin
B;
end;
{ if IOResult<>0 then begin
s:='Ошибка! Файл не найден!';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH, 0eh
mov AL, buf
mov BH, 0
int 10h
end;
end;
asm
mov AH, 0eh
mov AL, 10
mov BH, 0
int 10h
mov AH, 0eh
mov AL, 13
mov BH, 0
int 10h
end;
end
else
begin}
{begin
for i:=1 to n do
begin
write(g,m[i],' ');
end;
close(g);
end;
{asm
mov AH,0
int 16h
end;
end; }
{begin
assign(f,'in.txt');
reset(f);
{while not eof(f) do begin
repeat
s:='Otsortirovan.Dla vozvrata nazhmite "0"';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,2
mov BH,0
mov DL,40
mov DH,22
int 10h
end;
asm
mov AH,0
int 16h
mov ccc,AL
end;
until(ccc='0');
case ccc of
'0': mainmenu
end;
asm
mov AH,0
int 16h
end;
end;
procedure MainMenu;
var a:char;
begin
repeat
asm
mov AH,0
mov AL,3
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,40
mov DH,7
int 10h
end;
s:='Glavnoe menu';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,0eh
mov AL,10
mov BH,0
int 10h
mov AH,0eh
mov AL,13
mov BH,0
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,35
mov DH,10
int 10h
end;
s:='** 1) - Zagruzit ishodnie dannie **';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,0eh
mov AL,10
mov BH,0
int 10h
mov AH,0eh
mov AL,13
mov BH,0
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,35
mov DH,12
int 10h
end;
s:='** 2) - Vipolnit Sortirovky **';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,0eh
mov AL,10
mov BH,0
int 10h
mov AH,0eh
mov AL,13
mov BH,0
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,35
mov DH,14
int 10h
end;
s:='** 3) - Sohranit rezultati **';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,0eh
mov AL,10
mov BH,0
int 10h
mov AH,0eh
mov AL,13
mov BH,0
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,35
mov DH,16
int 10h
end;
s:='** 4) - Copyright **';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,0eh
mov AL,10
mov BH,0
int 10h
mov AH,0eh
mov AL,13
mov BH,0
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,35
mov DH,18
int 10h
end;
s:='** 0) - Vihod v windows **';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,0eh
mov AL,10
mov BH,0
int 10h
mov AH,0eh
mov AL,13
mov BH,0
int 10h
end;
asm
mov AH,2
mov BH,0
mov DL,30
mov DH,24
int 10h
end;
s:='>>>>>Viberite punkt menu<<<<<';
lng:=length (s);
for i:= 1 to lng do
begin
buf:=s[i];
asm
mov AH,0eh
mov AL,buf
mov BH,0
int 10h
end;
end;
asm
mov AH,0eh
mov AL,10
mov BH,0
int 10h
mov AH,0eh

- Алгоритм построения оптимального префиксного кода
- Алгоритм построения шкалы Лайкерта
- Алгоритм пошуку в рядках. Алгоритм Хорспула
- Алгоритм принятия решений об увольнении сотрудников
- Алгоритм принятия управленческих решений
- Алгоритм принятия управленческого решения при различных типах менеджмента
- Алгоритм разработки анкеты
- Алгоритм осмотра места происшествия
- Алгоритм планирования потребности в кадрах
- Алгоритм планирования пути на местности
- Алгоритм поиска гамильтонова пути в графе
- Алгоритм поиска кратчайшего пути
- Алгоритм поиска по бинарному дереву
- Алгоритм поиска экстремумов заданной функции методами Монте-Карло