Сортировка подсчетом визуализатор на языке программирования Java

Автор работы: Пользователь скрыл имя, 24 Декабря 2012 в 01:41, курсовая работа

Описание

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

Работа состоит из  1 файл

Пояснительная записка.docx

— 179.52 Кб (Скачать документ)

б) он не может запуститься до тех пор, пока не запустится виртуальная Java-машина, и это может занять значительное время при первом запуске;

в) создание и дизайн хорошего пользовательского интерфейса с использованием апплетов считается более сложной задачей, чем с помощью технологии, основанной на HTML;

г) некоторые организации допускают только программное обеспечение, установленное администраторами. В результате многие пользователи не могут видеть апплеты по умолчанию;

д) апплеты могут потребовать использования определенного JRE.

Еще одной альтернативой апплетов для клиента Java является Java Web Start, который запускается вне браузера. В дополнение к функциям, доступным в апплете, простой доступ к полям предоставляет программам Java Web Start доступ по чтению и/или записи определенных файлов, хранящихся у клиента, а также к буферу обмена клиента [1].

1.9 Сравнение сред разработки Java и .Net

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

 Многоплатформенность. Для разработчика важно то, что и .Net, и J2EE предоставляют средства для создания Web-служб. До сих пор J2EE могла гордиться своей поддержкой многоплатформенности, но, если верить Microsoft, более это не является прерогативой J2EE. Microsoft позиционирует .Net как платформу с двухступенчатой компиляцией, что позволяет создавать среду выполнения для любой платформы, подобно Java. Eric Rutter, старший вице-президент Microsoft запустил информацию о переносе .Net на FreeBSD. FreeBSD – это операционная система, производная от BSD (Berkeley Software Distribution) Unix. Он объявил, что Microsoft в самом деле занимается созданием среды выполнения для FreeBSD. Создание такой среды нарушило бы гегемонию Java в области платформенной независимости, однако не стоит пока полагаться на эту информацию. Создание CLR для наиболее популярных операционных систем может занять много лет. Более того, однажды, Microsoft уже делала подобные заявления в отношении переноса DCOM (Distributed Component Object Model) на другие платформы. Однако такой перенос так и не был осуществлен.

  Таким образом, на сегодняшний день единственной средой разработки, поддерживающей многоплатформенность, является J2EE.

Многоязыковая поддержка. Единственной языковой основой J2EE является Java, что сильно отличается от .Net, где поддерживается более двух дюжин языков, включая Fortran, COBOL, C++ и Visual Basic. Можно, конечно, поспорить насчет того, что единственный язык является более элегантным решением, однако надо признать, что .Net предлагает более простое решение для организаций, которые хотят пользоваться знаниями, которые уже имеются у их разработчиков. Ведь для тех разработчиков, которые используют языки, отличные от Java, .Net дает возможность создавать Web-службы на привычном им языке с минимальными затратами на переобучение.

 В то время как вокруг . Net и J2EE бушуют споры, мы должны четко понимать, что представляет собой каждая из платформ. Каждая из технологий позволяет создавать Web-службы, доступные потребителям, использующим самые разные технологии. Web-служба на платформе .Net может вызывать J2EE Web-службу и наоборот, поскольку все Web-службы удовлетворяют одинаковым стандартам. Более того, даже если выяснится, что одна из технологий имеет преимущество, то эффективно использовать это преимущество сможет только высоко квалифицированный программист. Инструменты и средства хороши настолько, насколько хорош программист, их использующий.

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

 Web-службы создают однородное представление для неоднородной среды.  И если это верно, то Web-службы должны прекратить споры о том, какая из платформ является лучшей; разработчикам нет нужды беспокоиться о платформе, разрабатывая сервисы, поскольку Web-службы обеспечивают однородное представление.

  Лучше всего попробовать разработать Web-службы и с помощью .Net, и с помощью J2EE. Тогда можно быстро понять, какая из платформ лучше. Выбирая поставщика, многие используют такое эмпирическое правило: если в настоящий момент вы используете платформу Microsoft, то выбирайте .Net, в противном случае – J2EE.

1.10 Преимущества языка программирования Java

Одно из главных преимуществ  языка Java – его независимость от платформы, на которой выполняются программы. Таким образом, один и тот же код можно запускать под управлением операционных систем Windows, Linux, FreeBSD, Solaris, Apple Mac и др. Это становится очень важным, когда программы загружаются посредством глобальной сети интернет и используются на различных платформах.

 Другим не менее важным  преимуществом Java является большая схожесть с языком программирования C++. Поэтому тем программистам, которые знакомы с синтаксисом С и С++ будет просто освоить Java.

 Кроме того, Java – полностью объектно-ориентированный язык, даже в большей степени, чем С++. Все сущности в языке Java являются объектами, за исключением немногих основных типов(primitive types), например чисел. В свое время объектно-ориентированное программирование(ООП) заменило структурное программирование.

 Важно и то, что разрабатывать  на Java программы, которые не содержат ошибок, значительно легче, чем на С++.

 Все дело в том, что разработчиками  языка Java из компании Sun был проведен фундаментальный анализ программ на языке С++. Анализировались "узкие места" исходного кода, которые и приводят к появлению трудновыявимых ошибок. Поэтому было принято решение проектировать язык Java с учетом возможности создавать программы, в которых были бы скрыты наиболее распространенные ошибки.

 Для этого было сделано  следующее: 

а) Разработчики исключили возможность явного выделения и освобождения памяти.

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

б) Введение истинных массивов и запрещение указателей.

Теперь программисты не могут стереть  данные из памяти по причине неправильного  использования указателей.

г) Была исключена возможность перепутать оператор присваивания с оператором сравнения на равенство. Как правило, проблема со знаком "=" очень часто приводит в С и С++ к логическим ошибкам, которые не так просто обнаружить. Особенно в крупных программах.

д) Полностью исключено множественное наследование. Оно было заменено новым понятием – интерфейсом, идея которого была позаимствована из языка Objective C.

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

Выбранная среда программирования хороша тем, что Java одинаково хорошо функционирует и на Windows, и на юниксовидных системах.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1.  АЛГОРИТМИЧЕСКИЙ АНАЛИЗ

2.1 Постановка задачи

Разработать апплет на языке Java, который выполняет следующие действия:

а) формирует и выводит массив случайных чисел;

б) выводит сформированный массив;

в) отражает шаги сортировки;

г) выводит отсортированный массив.

 

2.2 Исходные данные к проекту

 

Исходными данными к проекту  является массив, в котором 20 элементов, сформированных программой случайно на промежутке от 0 до 9.

2.3 Описание алгоритма сортировки подсчетом

 

Сортировка подсчетом - специализированный алгоритм, который очень хорошо работает, если элементы данных — целые числа, значения которых находятся в  относительно узком диапазоне. Этот алгоритм работает достаточно быстро, например, если значения находятся  между 1 и 1000.

    Если список  удовлетворяет этим требованиям,  сортировка подсчетом выполняется  невероятно быстро.

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

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

 

2.4 Анализ алгоритма для его визуализации

 

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

 • показать массив A, заполненный  начальными значениями;

 • отразить ход решения  задачи – процесс заполнения  массива С, основанный на значениях  элементов массива А;

 • показать подсчет частичных  сумм в массиве С;

 • отразить процесс последнего  этапа решения задачи – заполнения  массива В.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ

 

3.1 Структура программного  комплекса

 

Апплет состоит из 4 классов: CountSortApplet, CSCanvas, CSControls и AutoThread.

 

Таблица 3.1 – Содержимое класса CountSortApplet

Имя

Вид элемента

Тип

Спецификатор

Описание

1

2

3

4

5

init

Метод

void

public

Инициализация апплета

destroy

Метод

void

public

Удаление ссылок

start

Метод

void

public

Запуск апплета

stop

Метод

void

public

Остановка апплета

processEvent(AWTEvent e)

Метод

void

public

События процессов на   пункте меню

getAppletInfo()

Метод

void

public

Возвращает текстовую информацию об аплете в виде объекта класса String.


 

 

Таблица 3.2 – Содержимое класса CSCanvas

 

Имя

Вид элемента

Тип

Спецификатор

Описание

1

2

3

4

5

N

Поле

int

private static

Размер массива, который нужно отсортировать

K

Поле 

int

private static final

Диапазон чисел

i0

Поле

int

private static

Переменная цикла. Счетчик

i

Поле

int

public static

Переменная цикла. Счетчик

j

Поле

int

public static

Переменная цикла. Счетчик

m

Поле

int

static

Переменная цикла. Счетчик

a[]

Поле

int[]

static

Входная последовательность

b[]

Поле

int[]

static

Выходная отсортированная последовательность

c[]

Поле

int[]

static

Вспомогательный массив

astep

Поле

int

static

Переменная для сравнения

bstep

Поле

int

static

Переменная для сравнения


Продолжение таблицы 3.2

1

2

3

4

5

сstep

Поле

int

static

Переменная для сравнения

state

Поле

int

static

Переменная для сравнения

comment

Поле

string

static

Комментарии к каждому  шагу выполнения

comment2

Поле

string

static

Комментарии к каждому  шагу выполнения

comment3

Поле

string

static

Комментарии к каждому  шагу выполнения

init

Метод

void

static

Инициализация апплета

restart

Метод

void

static

Перезапуск апплета

randomStart

Метод

void

static

Заполнение входной последовательности случайными числами

paint

Метод

void

static

Рисует текст и граф. компоненты

makeStep

Метод

void

static

Метод для пошагово выполнения


Таблица 3.3 – Содержимое класса CSControls

 

Имя

Вид элемента

Тип

Спецификатор

Описание

1

2

3

4

5

auto

Поле

boolean

private

Переменная для сравнения

INITIAL_DELAY

Поле

int

private static

Задержка инициализации

DELAYS

Поле

int

private static

Задержка выполнения шага при выполнении в автоматическом режиме

CSControls(CSCanvas canvas)

Метод

void

public

Метод для отрисовки элементов управления

Start

Метод

void

public

Запуск автоматического  выполнения

Stop

Метод

void

public

Остановка автоматического  выполнения

actionPerformed(ActionEvent ev)

Метод

void

public

Выполнение события на элементы управления

Информация о работе Сортировка подсчетом визуализатор на языке программирования Java