Сортировка вводимых с клавиатуры слов
Описание языка программирования Java: общие характеристики, главные свойства, краткий обзор. Надежность и безопасность, производительность и базовая система программы. Разработка программы поиска по словарю, алгоритм её работы. Общий вид кода программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 28.10.2012 |
Размер файла | 20,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Реферат
В рамках выполнения курсовой работы будет разработана программа сортировщика по разным параметрам. В качестве языка программирования предлагается Java. Java имеет такие преимущества как:
язык программирования объектно-ориентирован, в то же время довольно прост для освоения;
приложение получается автоматически переносимым между множеством платформ и операционных систем;
за счет встроенной системы сборки мусора программист освобождается от необходимости явного управления памятью;
в приложении достигнута высокая производительность (быстрый отклик на ввод пользователя);
приложение легко сопровождается и модифицируется, т.к. модули могут быть загружены с сети.
Оглавление
Введение
Глава 1. Описание языка программирования Java
1.1 Общие характерисики Java
1.2 Свойства Java, краткий обзор
1.3 Надежность и безопасность
1.4 Производительность
1.5 Базовая система Java
Глава 2. Разработка программы поиска по словарю
2.1 Общий алгоритм работы программы
2.2 Код программы
Заключение
Список использованных источников
Введение
Данная работа посвящена одному из самых перспективных на сегодняшний день языков программирования - языку «Java». Технологию по имени «Java» можно без преувеличения назвать революционной в индустрии разработки программного обеспечения.
Сортировка может быть реализована и на других языках программирования, таких как PHP, C++ и т.д. Просто на языке Java намного выгоднее. Подробности рассматривается ниже. Новизна состоит в том, что ранее не была реализована программа сортировки на данном языке и в данной интерпретации.
Для осуществления задачи был предложен алгоритм написания программы. Далее этот алгоритм был реализован на языке Java.
Глава 1. Описание языка программирования Java
1.1 Общие характеристики Java
Для написания программы сортировщика был выбран язык Java. Java - объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems с 1991 года и официально выпущенный 23 мая 1995 года. Изначально новый язык программирования назывался Oak (James Gosling) и разрабатывался для бытовой электроники, но впоследствии был переименован в Java и стал использоваться для написания апплетов, приложений и серверного программного обеспечения.
Язык программирования Java не похож ни на один из существующих ране. Он разработан для того, чтобы облегчить работу на компьютерах в WWW посредством браузеров. В настоящее время на каждом компьютере имеется браузер. В свою очередь, каждый браузер поддерживает Java. Это означает, что вы можете просматривать документы, хранящиеся в разных точках земного шара, и, щелкнув на ссылке, активизировать Java-программу, которая будет передана через сеть и запущена на вашем компьютере.
Одно из главных преимуществ языка Java - его независимость от платформы и типа компьютера, на которой выполняются программы. Таким образом, один и тот же код можно запускать под управлением операционных систем Windows, Linux, FreeBSD, Solaris, Apple Mac и др. Это становится очень важным, когда программы загружаются посредством глобальной сети интернет и используются на различных платформах. Язык программирования Java может работать не только со статичными текстами и графикой, но и различными динамическими объектами.
Другим, не менее важным преимуществом Java, является большая схожесть с языком программирования C++. Поэтому тем программистам, которые знакомы с синтаксисом С и С++ будет просто освоить Java.
Кроме того, Java - полностью объектно-ориентированный язык, даже в большей степени, чем С++. Все сущности в языке Java являются объектами, за исключением немногих основных типов (primitive types), например чисел.
Важно и то, что разрабатывать на Java программы, которые не содержат ошибок, значительно легче, чем на С++.
Все дело в том, что разработчиками языка Java из компании Sun был проведен фундаментальный анализ программ на языке С++. Анализировались "узкие места" исходного кода, которые и приводят к появлению трудновыявимых ошибок. Поэтому было принято решение проектировать язык Java с учетом возможности создавать программы, в которых были бы скрыты наиболее распространенные ошибки.
Для этого было сделано следующее:
разработчики исключили возможность явного выделения и освобождения памяти.
К примеру, память в Java освобождается автоматически с помощью механизма сбора мусора. Получается, что программист застрахован от ошибок, которые возникают от неправильного использования памяти.
введение истинных массивов и запрещение указателей.
Теперь программисты не могут стереть данные из памяти по причине неправильного использования указателей.
была исключена возможность перепутать оператор присваивания с оператором сравнения на равенство. Как правило, проблема со знаком "=" очень часто приводит в С и С++ к логическим ошибкам, которые не так просто обнаружить. Особенно в крупных программах.
полностью исключено множественное наследование. Оно было заменено новым понятием - интерфейсом, идея которого была позаимствована из языка Objective C.
Интерфейс дает программисту практически все, что тот может получить от множественного наследования, избегая при этом сложностей, которые возникают при управлении иерархиями классов.
1.2 Свойства Java, краткий обзор
Java проста, объектно-ориентирована и знакома.
Система Java создана на основе *простого* языка программирования, техника использования которого близка к общепринятой и обучение которому не требует значительных усилий. Язык Java имеет библиотек, обеспечивающих функциональность от стандартного ввода/вывода и сетевых протоколов до графических пользовательских интерфейсов. Эти библиотеки легко могут быть расширены.
Несмотря на то, что язык С++ был отвергнут, синтаксис языка Java максимально приближен к синтаксису С++. Это делает язык знакомым широкому кругу программистов. В то же время из языка были удалены многие свойства, которые делают С++ излишне сложным для пользования, не являясь абсолютно необходимыми. В результате язык Java получился более простым и органичным, чем С++.
1.3 Надежность и безопасность
Java существенно облегчает создание надежного программного обеспечения. Кроме исчерпывающей проверки на этапе компиляции, система предусматривается анализ на этапе выполнения. Сам язык спроектирован так, чтобы вырабатывать у программиста привычку писать "правильно". Модель работы с памятью, в которой исключено использование указателей, делает невозможными целый класс ошибок, характерных для С и С++.
В силу того, что Java предназначена для работы в распределенной среде, безопасность становится чрезвычайно важной проблемой. Требования безопасности определяют многие черты, как языка, так и реализации всей системы.
Независимость от архитектуры и переносимость.
Компилятор Java производит байт-коды, т.е. модули приложения имеют архитектурно-независимый формат, который может быть проинтерпретирован на множестве разнообразных платформ. Это уже не исходные тексты, но еще не платформно-зависимые машинные коды.
Следующий шаг - "замораживание" стандарта на формат основных встроенных типов данных. Программа, созданная на одной платформе, работает на всех остальных.
Этот стандарт фиксирован в документе, описывающем Java Virtual Machine. Стандарт может быть реализован на любой аппаратно-программной платформе, поддерживающей многопотоковость.
1.4 Производительность
Схема работы системы и набор байт-кодов виртуальной машины Java таковы, что позволяют достичь высокой производительности на этапе выполнения программы:
анализ кодов на соблюдение правил безопасности производится один раз до запуска кодов на выполнение, в момент выполнения таких проверок уже не нужно, и коды выполняются максимально эффективно.
Работа с базовыми типами максимально эффективна, для операций с ними зарезервированы специальные байт-коды.
Методы в классах не обязательно связываются динамически. Автоматический сборщик мусора работает отдельным фоновым потоком, не замедляя основную работу программы, но в то же время обеспечивая своевременный возврат свободной памяти в систему.
Стандарт предусматривает возможность написания критических по производительности участков программы в машинных кодах: интерпретируемый, многопотоковый и динамический.
Интерпретируемая природа языка позволяет сделать фазу линкования простой, инкрементальной и, следовательно, быстрой. Это резко сокращает цикл разработки и тестирования программных фрагментов.
Многопотоковость позволяет выполнять в рамках одного приложения несколько задач одновременно. Это становится особенно актуально в современных распределенных приложениях, когда процессы сетевого обмена могут идти одновременно и асинхронно. При этом программа продолжает реагировать на ввод информации пользователем без неприятных задержек.
Многопотоковость поддерживается на уровне языка - часть примитивов синхронизации встроена в систему реального времени, а библиотека содержит базовый класс Thread. К тому же системные библиотеки написаны thread-safe, т.е. все они могут быть использованы в многопотоковых приложениях.
Система обеспечивает динамическую сборку программы. Классы подгружаются по мере необходимости, причем загружены они могут быть с любой точки сети, что позволяет сделать внесение изменений в приложения прозрачным для пользователя. Пользователь может быть уверен, что всегда работает со свежей версией приложения.
1.5 Базовая система Java
Опыт показывает, что отсутствие стандартных базовых библиотек для языка С++ чрезвычайно затрудняет работу с ним. В силу того, что любое нетривиальное приложение требует наличия некоторого набора базовых классов, разработчикам приходится пользоваться различными несовместимыми между собой библиотеками или писать свой собственный вариант такого набора. Все это затрудняет как разработку, так и дальнейшую поддержку приложений, затрудняет стыковку приложений, написанных разными людьми.
Полная система Java включает в себя готовый набор библиотек, который можно разбить на следующие пакеты:
java.lang - базовый набор типов, отраженных в самом языке. Этот пакет обязательно входит в состав любого приложения. Содержит описания классов Object и Class, а также поддержку многопотоковости, исключительных ситуаций, оболочку для базовых типов, а также некоторые фундаментальные классы.
java.io - потоки и файлы произвольного доступа. Аналог библиотеки стандартного ввода-вывода системы UNIX. Поддержка сетевого доступа (sockets, telnet, URL) содержится в пакете java.net.
java.util - классы-контейнеры (Dictionary, HashTable, Stack) и некоторые другие утилиты. Кодирование и декодирование. Классы Date и Time.
java.awt - Abstract Windowing Toolkit, архитектурно-независимый оконный интерфейс, позволяющий запускать интерактивные оконные Java-приложения на любой платформе. Содержит базовые компоненты интерфейса, такие как события, цвета, фонты, а также основные оконные элементы - кнопки, scrollbars и т.д.
Результат - новый подход к распределенным вычислениям
Каждая из перечисленных характеристик по отдельности может быть найдена в уже существующих программных пакетах. Новым является соединение их в стройную непротиворечивую систему, которая должна стать всеобщим стандартом.
Глава 2. Разработка программы сортировки
2.1 Общий алгоритм работы программы
Для решения задачи написания этой программы, прежде всего импортированием всех классов пакета java.util для удобства доступа к классам этого пакета (не нужно указывать полный путь класса в дереве пакетов):
import java.util.*;
Главный класс программы
public class sort
Метод, с которого начинается выполнение программы:
public static void main(String[] args)
Установка номер слова в строке для сортировки (если не указан, то -1)
int sortIndex = -1;
Создание объекта класса Scanner из пакета java.util:
Scanner in = new Scanner(System.in);
Начало разбора по строчкам, и заполнение объекта контейнера и последующие за ним действия
while(in.hasNext()){
sortList.add(new MyString(in.nextLine(), sortIndex));
}
Collections.sort(sortList);
System.out.print("\n\n");
for(int i=0; i<sortList.size(); i++)
{
MyString str = (MyString)sortList.get(i);
System.out.println(str.getStr());
}
in.close();
}
Вспомогательный класс, реализующий удобный нам формат строк
class MyString implements Comparable{
private String interString;
private int sortIndex = -1;
public MyString(String str, int wordNum)
{
this.interString = str;
this.sortIndex = wordNum;
}
public String getStr()
{
return interString;
}
public int compareTo(Object arg0)
{
Сортировка без учёта регистра
return str.toLowerCase().compareTo(arg0.getStr().toLowerCase());
Сортировка по длине (будет выполняться, если параметр не задан)
if (sortIndex == -1){
return interString.length() - ((MyString)arg0).getStr().length();
}
Сортировка по sortIndex`овому слову в строке
String str1 = null, str2 = null;
try
{
str1 = interString.split(" ")[sortIndex];
}
catch (Exception e)
Если нет нужного слова в 1ой строке, то считается что первое слово меньше 2ого.
return -1;
Здесь сравнивается корректно
return str1.compareTo(str2);
В языке Java используются массивы. Массив является объектом и обладает всеми его свойствами и методами. Создание массива производится с помощью оператора new. размер массива может быть запрошен явно, через свойство .length.В Java можно контролировать выхода за границы массива. Это делает интерпретатор, в случае выхода индекса за пределы массива будет инициировано исключение java.lang.ArrayIndexOutOfBoundsException. Перехватывать его не обязательно, и нежелательно, т.к. это RuntimeException и сигнализирует оно о том, что программа работает неправильно. И уж совсем не стоит проектировать приложение в расчете на то, что после прохождения всего массива будет брошено это исключение, и это будет сигналом к завершению цикла обработки. После создания массив инициализируется значением по умолчанию для типа его элементов. Это гарантируется спецификацией языка. В массиве хранятся ссылки на объекты. Как любая переменная объектного типа является ссылкой на объект, так и любой элемент массива тоже является ссылкой. А для ссылки значение по умолчанию - null!.
Коллекции. Любое действие над группой каких-либо данных потребует какое-то хранилище - коллекцию. Существует много типов коллекции. Это связано с тем, что пока никто не смог создать коллекцию, которая прекрасно подходила бы для всех видов работы с ней. Одни коллекции позволяют иметь одинаковые элементы, другие - нет. С одними коллекциями можно работать из нескольких потоков, с другими надежная работа не гарантируется. Одни коллекции сразу сортируют все данные, другие хранят данные в том порядке, в котором их добавляли. Коллекции все-таки имеют много общего, на что указывает реализация этими коллекциями определенных интерфейсов. Вы можете использовать одинаковые механизмы для работы с разными типами коллекций. Отличие будет заключаться в скорости работы. Коллекции имеют очень широкий спектр всевозможных функций - их можно сливать в одну, узнавать какие элементы есть в обеих коллекциях, какие наоборот отсутствуют в первой, но есть во второй. Коллекции можно сортировать по определенному алгоритму - вы можете использовать стандартные варианты, можете написать свои правила сортировки.
Должен использоваться класс Iterator. Это специальный класс, который позволяет работать с коллекций. При создании итератор указывает на начало коллекции и перемещается к следующему элементу вызовом метода next. Этот метод также возвращает тот объект из коллекции, на который в данный момент указывает итератор. Метод hasNext проверяет - есть ли еще элементы в коллекции. Таким образом, можно просмотреть любую коллекцию.
java программирование язык алгоритм
2.2 Код программы
import java.util.*;
public class Sort
{
// точка входа в программу
public static void main(String[] args)
{
//устанавливаем номер слова в строке для сортировки (если не указал, то -1)
int sortIndex = -1;
//проверяем количество аргументов
if (args.length != 0){
sortIndex = Integer.valueOf(args[0]);
}
Scanner in = new Scanner(System.in);
ArrayList sortList = new ArrayList();
//начинаем разбор по строчкам, и заполнение объекта контейнера
while(in.hasNext()){
sortList.add(new MyString(in.nextLine(), sortIndex));
}
Collections.sort(sortList);
System.out.print("\n\n");
for(int i=0; i<sortList.size(); i++)
{
MyString str = (MyString)sortList.get(i);
System.out.println(str.getStr());
}
in.close();
}
}
//вспомогательный класс, реализующий удобный нам формат строк
class MyString implements Comparable{
private String interString;
private int sortIndex = -1;
public MyString(String str, int wordNum)
{
this.interString = str;
this.sortIndex = wordNum;
}
public String getStr()
{
return interString;
}
public int compareTo(Object arg0)
{
//сортировка без учёта регистра
//return str.toLowerCase().compareTo(arg0.getStr().toLowerCase());
//сортировка по длине (будет выполняться, если параметр не задан)
if (sortIndex == -1){
return interString.length() - ((MyString)arg0).getStr().length();
}
//сортировка по sortIndex`овому слову в строке
String str1 = null, str2 = null;
try
{
str1 = interString.split(" ")[sortIndex];
}
catch (Exception e)
{
//если нет нужного слова в 1ой строке, то считаем что первое слово меньше 2ого.
return -1;
}
try
{
str2 = ((MyString)arg0).getStr().split(" ")[sortIndex];
}
catch (Exception e)
{
//если нет нужного слова во 2ой строке, то считаем что 2ое слово меньше 1ого
return 1;
}
//здесь сравниваем корректно
return str1.compareTo(str2);
}
}
Заключение
В рамках курсовой работы была разработана программа, реализующая сортировки слов по разным параметрам. Условие устанавливается пользователем. Программа составлена так, что если вы заранее не устанавливаете параметры сортировки, он будет сортировать, но только по другому параметру (по длине).
Разработка программы продемонстрировала некоторые особенности объектно-ориентированного языка Java и его стандартного комплекта разработки программного обеспечения Java Standard Edition 6.0 Software Development Kit, а также показала, что язык Java может быть успешно использован для написания кроссплатформенных консольных приложений. Среда программирования JDK + NetBeans оказалась лёгкой в изучении и проста в использовании.
При помощи данной программы пользователь, сможет моментально сортировать группу слов вводимых с клавиатуры
Список использованных источников
1. В. Цишевский, Язык и архитектура Java
2. К. Хорстманн, Г. Корнелл Java 2. Библиотека профессионала. Том 1. Основы. - М.: "Вильямс", 2010. - 816 с.
3. Гультяев К. Хорстманн, Г. Корнелл Java 2. Библиотека профессионала. Том 2. Тонкости программирования. - М.: "Вильямс", 2010. - 992 с.
4. Д. Бишоп Эффективная работа: Java 2- СПб.: Питер, 2002. - 592 с.
Размещено на Allbest.ru
Подобные документы
Разработка программы, реализующей построение объемной гистограммы с использованием свойств языка программирования Java. Возможность графически отобразить статистические данные урожайности как основное требование к программе. Реализация кода программы.
курсовая работа [333,5 K], добавлен 21.01.2013Разработка игры "Экзамен" с применением объектно-ориентированного программирования и языка Java (в среде Eclipse Helios). Структура программы и алгоритм решения задачи. Описание методов и переменных. Экспериментальное тестирование и оценка программы.
курсовая работа [122,5 K], добавлен 19.05.2011Организация вычислительных процессов и программирования на алгоритмическом языке. Создание программы "Калькулятор". Выбор языка и среды программирования. Функциональная схема работы программы, описание разработанных алгоритмов. Способы устранения ошибок.
курсовая работа [434,1 K], добавлен 27.08.2012Особенности языка "Си шарп". Содержательная постановка программы. Описание классов и структур. Алгоритм и логики работы программы, переменные. Тестирование, инструкция пользователю. Пример удаления записи о читателе. Общий вид листинга программы.
курсовая работа [360,3 K], добавлен 21.11.2013Характеристика структурированного языка программирования С, его основных структурных компонентов, области памяти, библиотеки. Методы поиска в массивах данных. Описание программы, функции сортировки и меню выбора, последовательного и бинарного поиска.
курсовая работа [1,7 M], добавлен 19.05.2014Создание программы, работающей с набором данных на внешнем устройстве. Описание программного комплекса. Обзор структуры главной программы. Процедура добавления новых элементов, поиска и создания на экране вертикального меню. Проверка работы программы.
курсовая работа [265,6 K], добавлен 28.08.2017Разработка программы с использованием языка программирования Pascal для выполнения алгебраических действий с действительными числами без знака в шестнадцатеричной системе счисления. Описание хода выполнения, схема алгоритма, листинг программы, ее функции.
реферат [687,5 K], добавлен 28.10.2011Разработка программы для поиска пути в лабиринте с возможностью задания входа и выхода, наглядное представление решений. Использование языка логического программирования Prolog. Данные и методы решения. Пользовательский интерфейс, листинг программы.
реферат [14,3 K], добавлен 15.10.2012Разработка программы проверки знаний для тестирования студентов по программированию с кодом на языке Delphi. Проектирование визуального интерфейса и словесный алгоритм работы программы. Алгоритмы разработанных процедур и функций, инструкция пользователя.
курсовая работа [506,5 K], добавлен 21.02.2011Приемы программирования в Delphi. Алгоритм поиска альфа-бета отсечения, преимущества. Описание программного средства. Разработка программы, реализующая алгоритм игры "реверси". Руководство пользователя. Листинг программы. Навыки реализации алгоритмов.
курсовая работа [357,1 K], добавлен 28.02.2011