Автор работы: Пользователь скрыл имя, 10 Декабря 2013 в 18:00, курсовая работа
Компьютеры являются неотъемлемой частью нашей жизни, так как мы каждый день используем их на работе, дома и во множестве других мест.
Возможности применения компьютера в учебном процессе, весьма многообразны. Он может служить для моделирования изучаемых явлений или систем, для реализации учебных игр, применяться для выполнения вычислений, для редактирования текстов, в качестве различного рода тренажеров, как инструмент автоматизации проектирования, программируемого управления экспериментами, как информационно-поисковая или экспертная система и, наконец, как средство практического обучения самой компьютерной технике и программированию.
Введение
Компьютеры являются неотъемлемой частью нашей жизни, так как мы каждый день используем их на работе, дома и во множестве других мест.
Возможности применения компьютера
в учебном процессе, весьма многообразны.
Он может служить для
Основной задачей современного программиста при написании программы является не подвергание её бесконечным тестированиям, а тщательный, полный анализ исходного текста программы, а также отладка программы с помощью дополнительных программных средств.
Целью моей курсовой работы
является повторение и закрепление
материала, изученного по языку программирования
высокого уровня Паскаль. Задачами является
повышение навыков
Разработать программу для OS MS-DOS "Поразрядная сортировка", Использовать средства встроенного Ассемблера, реализующие алгоритм, работу с файла (считывание из файла), пользовательский интерфейс.
Поразрядная сортировка — алгоритм сортировки за линейное время.
Алгоритм сортировки, числа сортируются по разрядам. Существует два варианта 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 языка программирования: Turbo Pascal и Си. Для реализации программы в качестве основного был выбран язык программирования Turbo Pascal, который представляется мне наиболее оптимальным для разработки MS-DOS приложений и который отлично подходит для реализации заданий средней сложности, какой и является моя программа. Данный язык мне кажется наиболее удобным, ясным и понятным для программирования.
Разработка программы велась в среде Turbo Pascal 7.0. Система программирования Turbo-Pascal была разработана в середине 80-х годов фирмой Borland International (США). Turbo-Pascal включает в себя как язык программирования - одно из расширений языка Pascal для ЭВМ типа IBM, так и среду, предназначенную для написания, отладки и запуска программ. Практически он полностью реализует аппаратные возможности персонального компьютера фирмы IBM и совместимых с ним. Система имеет два основных достоинства: простота и естественность языка программирования Pascal, великолепные сервисные возможности диалоговой среды программирования фирмы Borland. Язык характеризуется расширенными возможностями по сравнению со стандартом, хорошо развитой библиотекой стандартных модулей, позволяющих использовать возможности операционной системы, создавать оверлейные структуры, организовывать ввод-вывод , формировать графические изображения и т.д.
Именно поэтому, на мой
взгляд, язык Turbo Pascal является универсальным
и оптимальным для
Так же согласно заданию данной курсовой работы в данной программе использованы средства встроенного Ассемблера, реализующие алгоритм поиска «Поразрядная сортировка», работу с файлами (считывание из файла), пользовательский интерфейс.
Описание переменных, используемых в исполнительном файле 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 |
Переменная для связи массива и файла |
Все процедуры в исполнительном файле RAZR.PAS приведены в таблице 2.
Таблица 2. Процедуры модуля RAZR.PAS
Идентификатор |
Назначение |
MainMenu |
Вывод меню |
Таблица 2. Процедуры модуля RAZR.PAS(Продолжение)
Идентификатор |
Назначение |
Vihod |
Выход из программы |
About |
О программе |
MenuSpr |
Вывод информации о входных данных |
ZapVFail |
Вывод информации о записи данных |
Schit |
Считывание данных из файла |
Zapis |
Запись данных в файл |
RazSort |
Поразрядная сортировка |
В комплект готовой программы входят файлы: RAZR.PAS, RAZR.EXE, in.txt
При запуске исполняемого файла программы BINARNIY.EXE появляется основное окно программы (Рисунок 1.)
Рисунок 1.Основное меню программы.
При нажатии на 1, появляется окно (Рисунок 2)
Рисунок 2.Окно по нажатии пункта 2.
При нажатии пункта 2, происходит запуска алгоритма «Поразрядной сортировки» (Рисунка 3).
Рисунок 3.Запуск алгоритма поиска.
При нажатии пункта 3, происходит сохранение в файл под названием OUT.txt (Рисунок 4).
Рисунок 4.Сохранение в файл.
По нажатию пункта 4 происходит вывод справочной информации (Рисунок 5).
Рисунок 5.Справочная информация
По нажатию пункта 0 происходит выход из программы(Рисунок 6)
Рисунок 6.Выход из программы
Проверка правильности работы
программы и отсутствия ошибок в
ней была проведена на следующих
компьютерах разными
В процессе тестирования никаких ошибок и неисправностей не выявлено. Программа работает стабильно и без ошибок.
Был изучен и реализован алгоритм «Поразрядной сортировки».Как было указано возможно использование алгоритма и для сортировки строк, но был реализован «цифровой» алгоритм. Это обусловлено той причиной, что алгоритм более продуктивно работает с числами, давая высокие результаты.
Все выше указанные задачи были успешно реализованы на языке Pascal, с применением «ассемблерных вставок», что значительно увеличивает скорость работы алгоритма.
Приложение
Ниже приведён листин разрабатываемой программы:
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