Файл: Технологии программирования.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.05.2023

Просмотров: 279

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Но существует каждый проверенный примитивного символ нужно родитель опять добавить в преподаются массив с его НИЦ числовым вхождением. бинарный Для этого смысле был использован экономистов тот же Хартли самый массив, лишь но он нулей увеличивался на так то количество, сообщению которое было ввёл проверено «setlength(a,KolSim)». В «Memo1» вывел свободные результат подсчета Современные символов.

begin

нежели Button2.Enabled:=true;

Button1.Enabled:=false;

была Memo1.Clear;

Memo2.Clear;

s:=Edit1.text;

кодами st:=s;

KolSim:=0;

осуществлялось while length(s)>0 имеющая do

begin

c:=s[1];

j:=0;

Если repeat

i:=pos(c,s);

if i>0 Borland then

begin

управления inc(j);

delete(s,i,1);

условием end;

until исследуемой not(i>0);

Memo1.Lines.Add(c+' -> '+inttostr(j));

дереве inc(KolSim);

setlength(a,KolSim);

a[KolSim-1].Simvol:=c;

a[KolSim-1].Kolizestvo:=j;

a[KolSim-1].R:=-1;

a[KolSim-1].L:=-1;

a[KolSim-1].x:=1;

предполагает end;

Далее превосходящего находим два Еще наименьших элемента количеству массива. Для событиями этого были стандартной переменены две базирующиеся переменные Ind1 и стоимость Ind2 – исходные каких листья дерева. поступать Им было синтез присвоено значение «-1» т.е изучить они пустые. текст Определил цикл коэффициентный прохождения по выполнили массиву, и ввел Определил еще две сообщений переменных минимального анализа значения: MinEl1 построения MinEl2. Эти изучения элементы мы и Но находим, но ТЕОРЕТИЧЕСКИЕ для каждого реже создаём свой больших цикл нахождения:

использованы repeat

MinEl1:=0;

не MinEl2:=0;

Ind1:=-1;

отображения Ind2:=-1;

for i:=0 Edit to KolSim-1 счисления do

if (a[i].x<>-1) убывания and ((a[i].Kolizestvo<MinEl1) or (MinEl1=0)) следующая then

begin

следующее Ind1:=i;

MinEl1:=a[i].Kolizestvo;

алгоритмы end;

for i:=0 система to KolSim-1 полученных do

if (Ind1<>i) По and (a[i].x<>-1) and ((a[i].Kolizestvo<MinEl2) распространенных or (MinEl2=0)) then

циклический begin

Ind2:=i;

Пусть MinEl2:=a[i].Kolizestvo;

end;

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

любом if (MinEl1>0) and (MinEl2>0) равны then

begin

Цели inc(KolSim);

setLength(a,KolSim);

a[KolSim-1].Simvol:='';

a[KolSim-1].Kolizestvo:=MinEl2+MinEl1;

a[KolSim-1].R:=Ind1;

a[KolSim-1].L:=Ind2;

a[Ind1].x:=-1;

a[Ind2].x:=-1;

бинарных end;

until указать not((MinEl1>0) and (MinEl2>0));


входят Теперь всю объединенные информацию выведем в « значения Memo2 », а длину скользит всего сообщения в « до Еdit2».

for i:=0 слов to KolSim-1 Если do

begin

описаны Memo2.Lines.Add(' s-> '+a[i].Simvol);

Memo2.Lines.Add('Veroat -> '+inttostr(a[i].Kolizestvo));

Кодовое Memo2.Lines.Add('R -> '+inttostr(a[i].R));

Memo2.Lines.Add('L -> '+inttostr(a[i].L));

должна Memo2.Lines.Add('------------------------');

end;

ветви Edit2.Text:=inttostr(KolSim);

Рис.1. случая Отображение информации в основ полях

Теперь комбинациями осталось лишь скопировать закодировать каждый минимизирует введённый символ. ПК Для этого Граф была использована length рекурсия.

Индексами современных были помечены Еdit все правые и обратную левые ветви просматривать дерева. Рекурсия двоичный будет просматривать как всё дерево, соответствующего начиная с корня. Создается Если будем буквами идти по реализовано правой ветви, появления то расстоянию обстоятельств от уза стандартные до узла Цехановский присвоим 0, по существенный левому - 1. Ветви закодирован буду просматриваться канала до тех длины пор пока движении не будет последовательности достигнуто исходных курсовой листьев «-1 » (символов).

После аспектах достижения «-1» рекурсия широком заканчивает работу и гораздо выводит полученный точно результат в Memo3 (рис. 2).

история Memo3.Lines.Add(a[Ind].Simvol+' -> '+s);

exit;

каждому end;

if a[Ind].R<>-1 выгодный then

f(a[Ind].R,s+'0');

if a[Ind].L<>-1 слишком then

f(a[Ind].L,s+'1');

Рис.2. Цель Полученный результат кодирования

Таким образом, мы программно реализовали алгоритм кодирования Хаффмана в объектно-ориентированной технологии программирования, с помощью среды разработки Borland Delphi 7.0. на языка программирования Delphi.

2.2 Интерфейс пользователя приложения «Код Хаффмана»

На рис. 3 «Приложения код Хаффмана» изображена главная форма созданного нами программного продукта «Код Хаффмана».

На форме присутствуют следующие элементы:

Edit1 - «Строка» для ввода сообщения которое нужно закодировать.

Edit2 - «Длинна» служит для отображения длины всего массива т.е. индекса массива – это объединение двух символов с наименьшими вероятностями.

Memo1 - служит для отображения количество вхождений каждого символа в сообщение введённое в Edit1 - «Строка».


Memo2 - служит для отображения индексов нового узла (ячейки) массива и из каких элементов он состоит.

Memo3 - служит для отображения кодов каждого уникального символа введённого в Edit1 - «Строка».

Кнопка «Определить» - запускает работу алгоритма построения дерева.

Кнопка «Освободить» - освобождает весь массив и поля для дальнейшей работы с программой.

Кнопка «Кодирование» - запускает работу алгоритма который кодирует строку введённую в Edit1 и выводит бинарный код для каждого уникального символа введённого в Edit1.

Кнопка «Закрыть» - завершает работу программы.

Рис.3. «Приложения код Хаффмана»

Для запуска и работы программы «Код Хаффмана» необходимо скопировать откомпилированный exe – файл который находится на СD-диске в любую из директорий жесткого диска компьютера или флеш-накопителя. Для запуска нужно открыть файл «Код Хаффмана.exe» двойным щелчком мыши.

Рис.4. «Пример работы приложения»

На рис 4 «Пример работы приложения» изображён пример работы программы «Код Хаффмана». В поле «Строка» мы вводим сообщении в данном случаи «привет», которое будит закодировано. Далее нажимаем на кнопку «Определить» и видим что в поле «Длинна» отображается длина всего массива, в поле Memo1 отображается количество вхождений каждого символа в сообщение введённое в поле «Строка», а в Memo2 отображается индекс нового узла (ячейки) массива и из каких элементов он состоит. Далее для получения кода символов введённых в поле «Строка» нужно нажать на кнопку «Кодирование» и в поле Memo3 отображаются бинарные коды символов. Для закрытия программы нажимаем на форме соответствующую кнопку «Закрыть».

ЗАКЛЮЧЕНИЕ

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

В результате исследования была достигнута поставленная цель –изучения основ кодирования информации в частности метод кодирования Хаффмана и применить их в процессе программной реализации этого метода. Цель курсовой работы достигнута за счёт выполнения следующих задач.

Рассмотрены основные понятия и принципы кодирования информации;

Изучен метод кодирования Хаффмана.


Изучены алгоритмы кодирования информации для реализации программного продукта «Код Хаффмана», с использованием современной технологии программирования;

После выполнения целей и задач курсовой работы были сделаны следующие выводы.

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

До появления работ Шеннона, Фано а позже и Хаффмана, кодирование символов алфавита при передаче сообщения по каналам связи осуществлялось одинаковым количеством бит, получаемым по формуле Хартли. С появлением этих работ начали появляться способы, кодирующие символы разным числом бит в зависимости от вероятности появления их в тексте, то есть более вероятные символы кодируются короткими кодами, а редко встречающиеся символы - длинными (длиннее среднего).

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

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

программный кодирующий хаффман

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ:

  1. Федеральный закон от 27.07.2006 N 149-ФЗ (ред. от 13.07.2015) "Об информации, информационных технологиях и о защите информации" (с изм. и доп., вступ. в силу с от 06.07.2016 N 374-ФЗ)
  2. Агальцов В.П. Информатика для экономистов: Учебник / В.П. Агальцов, В.М. Титов. - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2013. - 448 с.
  3. Балдин К.В. Информационные технологии: Учеб. для студ. учреждений высш. проф. образования / К.В. Балдин. - М.: ИЦ Академия, 2016. - 288 с.
  4. Вдовин В.М. Информационные технологии: Практикум / В.М. Вдовин. - М.: Дашков и К, 2014. - 248 с.
  5. Венделева М.А. Информационные технологии в управлении: Учебное пособие для бакалавров / М.А. Венделева, Ю.В. Вертакова. - М.: Юрайт, 2013. - 462 с.
  6. Гвоздева В. А. Информатика, автоматизированные информационные технологии и системы: учебник / В. А. Гвоздева. – Москва: Форум: Инфра-М, 2015. – 541 с.
  7. Голицына О.Л. Информационные технологии: Учебник / О.Л. Голицына, Н.В. Максимов, Т.Л. Партыка, И.И. Попов. - М.: Форум, ИНФРА-М, 2013. - 608 с.
  8. Гохберг Г.С. Информационные технологии: Учебник для студ. учрежд. сред. проф. образования / Г.С. Гохберг, А.В. Зафиевский, А.А. Короткин. - М.: ИЦ Академия, 2015. - 208 с.
  9. Каймин В.А.: Информатика. - М.: ИНФРА-М, 2013
  10. Кирюхин В.М. Информатика.Выпуск 3. – М.: Просвещение, 2013. – 222 с
  11. Логинов В.Н. Информационные технологии управления: Учебное пособие / В.Н. Логинов. - М.: КноРус, 2013. - 240 с.
  12. Максимов Н.В. Современные информационные технологии: Учебное пособие / Н.В. Максимов, Т.Л. Партыка, И.И. Попов. - М.: Форум, 2013. - 512 с.
  13. Метелица Н.Т. Основы информатики [Электронный ресурс]: учебное пособие/ Метелица Н.Т., Орлова Е.В.— Электрон. текстовые данные.— Краснодар: Южный институт менеджмента, 2015,с.113
  14. Советов Б.Я. Информационные технологии: Учебник для бакалавров / Б.Я. Советов, В.В. Цехановский. - М.: Юрайт, 2013. - 263 с.
  15. Федотова Е.Л. Информационные технологии и системы: Учебное пособие / Е.Л. Федотова. - М.: ИД ФОРУМ, НИЦ ИНФРА-М, 2015. - 352 с.
  16. Хлебников А.А. Информационные технологии: Учебник / А.А. Хлебников. - М.: КноРус, 2014. - 472 с.
  17. Лашина Соловьев: Информационные системы и технологии: [Электронный ресурс]. URL: http://www.labirint.ru/books/575128/: (дата обращения: 18.12.2017).
  18. Официальный сайт компании «КонсультантПлюс». [Электронный ресурс]. URL: http://www.consultant.ru/ (дата обращения: 27.12.2017).
  19. Тюрин И.: Вычислительная техника и информационные технологии. Учебное пособие: [Электронный ресурс]. URL: http://www.labirint.ru/books/573267/ (дата обращения: 27.12.2017).