Вы находитесь на странице: 1из 22

Министерство Образования, Культуры и Исследований

Республики Молдова
Технический Университет Молдовы
Факультет Компьютеры, Информатика и Микроэлектроника
Департамент Программного Обеспечения и Автоматики

Курсовой проект
Предмет: Анализ и разработка алгоритмов

Тема: Разработка программного приложения для решения


проблемы с помощью различных алгоритмов.
Developing a software application to solve a problem using various
algorithms.

Выполнили: Маланчук Лилия


Ватаманюк Игорь
Лищенко Анастасия

Проверила: Лект. унив. Катрук Мариана

Кишинев – 2020
ОГЛАВЛЕНИЕ
СТРУКТУРА ГОДОВОГО ПРОЕКТА............................................................................................................ 3
ВВЕДЕНИЕ................................................................................................................................................. 4
1 ПОСТАНОВКА ПРОБЛЕМЫ ПУТЕМ АБСТРАГИРОВАНИЯ СИТУАЦИИ ................................................ 5
2 ОПРЕДЕЛЕНИЕ ДАННЫХ О ПРОБЛЕМЕ И УСТАНОВЛЕНИЕ СВЯЗИ МЕЖДУ ДАННЫМИ И
РЕШЕНИЕМ ПРОБЛЕМЫ.......................................................................................................................... 7
3 ВЫБОР АЛГОРИТМОВ ДЛЯ РЕШЕНИЯ ПРОБЛЕМЫ ........................................................................... 9
4 АРГУМЕНТАЦИЯ ВЫБОРА АЛГОРИТМОВ ......................................................................................... 10
5 РЕАЛИЗАЦИЯ АЛГОРИТМОВ НА ЯЗЫКЕ СТРУКТУРНОГО ПРОГРАММИРОВАНИЯ ........................ 11
5.1 Разработка алгоритма и структуры данных ............................................................................. 11
5.2 Реализация алгоритма в виде программы ............................................................................... 12
7 АНАЛИЗ ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ ............................................................................................. 18
ЗАКЛЮЧЕНИЕ ......................................................................................................................................... 21
БИБЛИОГРАФИЯ .................................................................................................................................... 22

2
СТРУКТУРА ГОДОВОГО ПРОЕКТА

ТЕМА: Разработка алгоритмов различной структуры и их реализация с помощью


программных средств.

Введение.

1. Постановка проблемы путем абстрагирования ситуации;

2. Определение данных о проблеме и установление связи между данными и решением


проблем;

3. Выбор алгоритмов для решения проблемы;

4. Аргументация выбора алгоритмов;

5. Реализация алгоритмов на языке структурного программирования;

6. Разработка графического интерфейса для программного приложения;

7. Анализ полученных результатов;

Выводы

Библиография

Вложения

3
ВВЕДЕНИЕ

Благодаря бурному развитию науки информатики и проникновению её в различные


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

Известно, что математическая теория алгоритмов сложилась вовсе не в связи с


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

Тем не менее, взаимовлияние теоретических областей, связанных с


вычислительной техникой, и теории алгоритмов также, несомненно.

Теория алгоритмов оказала влияние на теоретическое программирование. В


частности, большую роль в теоретическом программировании играют модели
вычислительных автоматов, которые, по существу, являются ограничениями тех
представительных вычислительных моделей, которые были созданы ранее в теории
алгоритмов. Трактовка программ, как объектов вычисления, операторы, используемые для
составления структурированных программ (последовательное выполнение, разветвление,
повторение) пришли в программирование из теории алгоритмов. Обратное влияние
выразилось, например, в том, что возникла потребность в создании и развитии теории
вычислительной сложности алгоритмов. Таким образом, можно сказать, что теория
алгоритмов применяется не только в информатике, но и в других областях знаний.

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


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

4
1 ПОСТАНОВКА ПРОБЛЕМЫ ПУТЕМ АБСТРАГИРОВАНИЯ
СИТУАЦИИ

Рисунок 1.1 - Цикл процесса развития

В условиях, когда человеческая деятельность приобретает глобальный характер,


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

Структура модели принятия рационального решения на основе субъективных


представлений.

Пример использования предложенного подхода при управлении технологическими


узлами и агрегатами

Для иллюстрации приведенной выше модели принятия решений рассмотрим


пример управления технологическим процессом непрерывного типа со следующими
свойствами:

- на изменение состояния технологических агрегатов особенно в агрессивных


средах существенное влияние оказывает режим ведения процесса;

5
- сложный характер тепло и массообменных процессов в сочетании с
недостаточной изученностью химических превращений и необходимость учета
качественных параметров при ведении процесса не позволяет получить формальное
описание объектов управления;

- отсутствует возможность прямого измерения состояния активности реакционных


процессов в присутствии катализатора, изменяющего свои свойства под действием
реакционной среды;

- для получения математической модели приемлемыми являются статистические


модели, а также модели, развитые в теории искусственного интеллекта;

- неполная адекватность «жестких» моделей и алгоритмов реальному процессу


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

- использование косвенных параметров для характеристики активности


реакционных процессов предполагает использование вербальных оценок и,
следовательно, нечетких категорий.

Приведенный перечень свойств показывает, что нахождение режимов ведения


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

Рисунок 1.2
6
Управление такими процессами проводится в основном на интуитивном уровне с
применением неформализованных методов, основанных на искусстве, практическом
опыте, экспертных оценках и дорогостоящих экспериментальных проверках, по оценке
качества управления и его повышения. Использование высоко агрессивных компонентов и
применение катализаторов, изменяющих свою активность под их воздействием, придает
процессу свойства слабой структурированности, не стационарности, неопределенности.

Это позволяет сделать вывод, что мотивация управления основывается на


интересах (потребностях, предпочтениях) персонала, и он рассматривает свое участие в
его управлении как средство их удовлетворения.

2 ОПРЕДЕЛЕНИЕ ДАННЫХ О ПРОБЛЕМЕ И УСТАНОВЛЕНИЕ


СВЯЗИ МЕЖДУ ДАННЫМИ И РЕШЕНИЕМ ПРОБЛЕМЫ

Ни для кого не секрет, как на самом деле обстоят дела с общественным


транспортом в Кишинёве.

Рисунок 2.1

По утрам мы часто наблюдаем за переполненными троллейбусами, в которые


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

Многим приходится вставать пораньше, чтобы сесть на первые, ещё не


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

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

Почему же наш транспорт переполнен и его график настолько нестабилен. На


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

Но разве сели бы вы в переполненный троллейбус зная, что через пару минут


подойдёт другой, более свободный.

Рисунок 2.2

Наш сайт будет отслеживать общественный транспорт с помощью специальных


маячков и транслировать свою геолокацию и время через которое он подъедет на ту или
иную остановку, даже учитывая утренние пробки. Любые изменения в маршрутах,
связанные с праздниками или ремонтными работами на дорогах, больше не пренесут Вы
сможете отслеживать нужный вам транспорт находясь дома. Вы сможете более точно
распределить ваше время утром. Неожиданно вы приобрели 10-15 минут свободного
времени перед работой, а это немало, работающий человек знает цену каждой минуте.
Теперь в ваших силах потратить это время с умом.

8
3 ВЫБОР АЛГОРИТМОВ ДЛЯ РЕШЕНИЯ ПРОБЛЕМЫ

Не существует такого универсального алгоритма, который подходил бы под все


случаи и решал абсолютно все проблемы.

Выбор алгоритма строго зависит от размера и структуры данных. Таким образом,


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

Первая или самая распространенная ошибка при выборе алгоритма – упущение


характеристик производительности. Более скоростные алгоритмы, как правило сложнее
чем прямые решения и разработчики часто предпочитают более медленные алгоритмы что
бы избежать дополнительной сложности. Вторая ошибка – уделять слишком много
внимания характеристикам его производительности. Суммарное время, требуемое для
реализации отладки улучшенного алгоритма, может быть значительно выше, чем время
необходимое для выполнения более медленной программы. Но каждый алгоритм обладает
как преимуществами, так и недостатками, которые можно использовать в качестве
руководства для выбора наиболее подходящего под ситуацию. Можно сократить время
работы алгоритма на 3-6 порядка за счет выбора правильного алгоритма. Достоинством
алгоритма является то, что он обладает свойством определенности за конечное число
итераций. Недостатком алгоритма является большая вычислительная сложность, даже для
небольших по размерности задач число возможных правильных отсечений и
соответственно больших итераций может быть весьма большей. В результате анализа
различных алгоритмов, было выявлено, что для решения проблемы наиболее подходящим
является жадный алгоритм (greedy alghoritm).

Рисунок 3.1 – Пример жадного алгоритма


9
4 АРГУМЕНТАЦИЯ ВЫБОРА АЛГОРИТМОВ

Алгоритмы, предназначенные для решения задач оптимизации, обычно


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

Рисунок 2.4

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


программирования, во многих задачах оптимизации напоминает стрельбу из пушки по
воробьям; другими словами, для этих задач лучше подходят более простые и эффективные
алгоритмы. В жадном алгоритме (greedy algorithm) всегда делается выбор, который
кажется самым лучшим в данный момент — т.е. производится локально оптимальный
выбор в надежде, что он приведет к оптимальному решению глобальной задачи. Жадные
алгоритмы не всегда приводят к оптимальному решению, но во многих задачах они дают
нужный результат.

Признаки того, что задачу возможно решить при помощи жадного алгоритма:

 Задачу можно разбить на подзадачи;


 Величины, рассматриваемые в задаче, можно дробить так же на подзадачи;

10
 Сумма оптимальных решений для двух подзадач даст оптимальное решения
для всей задачи.

Жадные алгоритмы очень быстрые. Намного быстрее, чем две другие альтернативы
(Разделяй и властвуй – Divide & Conquer, и Динамическое программирование Dynamic
Programming). Они популярные, потому что они быстрые.

Рисунок 4.1

5 РЕАЛИЗАЦИЯ АЛГОРИТМОВ НА ЯЗЫКЕ СТРУКТУРНОГО


ПРОГРАММИРОВАНИЯ

5.1 Разработка алгоритма и структуры данных

Если выбранный для решения задачи численный метод реализован в виде


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

Четкая структуризация задачи, разбиение ее на последовательность подзадач,


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

Важной составной частью разработки алгоритма является выбор состава и


способов организации (структур) данных: исходных, промежуточных и конечных
11
результатов. Языки программирования, позволяют работать с числовыми и символьными
константами, переменными, массивами данных (векторами и матрицами).

Поэтому выбор состава, типов и структур данных обычно производится с учетом


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

Разработка алгоритма завершается либо его представлением в виде


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

5.2 Реализация алгоритма в виде программы

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


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

При разработке и реализации алгоритмов не следует стремиться к получению


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

12
вывода результатов позволит локализовать будущие изменения в программе в пределах
каждого модуля, а также использовать некоторые из них в качестве готовых
«строительных» блоков для новых задач.

6 РАЗРАБОТКА ГРАФИЧЕСКОГО ИНТЕРФЕЙСА ДЛЯ


ПРОГРАММНОГО ПРИЛОЖЕНИЯ

Рисунок 6.1

Эффективный интерфейс пользователя объединяет в себе две составляющие:


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

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

13
Рисунок 6.2

Знайте своего пользователя

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

Используйте уже известные модели

Рисунок 6.3

Об этом легко забыть, но пользователи уже проводят кучу времени в других


интерфейсах, будь то Facebook, Gmail или Flickr. Разберитесь, как они устроены и не

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

Например, индикаторы готовности подойдут не только для проверки


заполненности профиля в соцсети — с их помощью можно показать успехи в обучении:

Будьте последовательны

Сделав что-то однажды, пользователь ожидает, что и в дальнейшем это будет


происходить именно так. Представьте себе, что интерфейс открытия нового файла
отличался бы для всех составляющих пакета Google Docs — вряд ли бы это кому-то
понравилось.

Рисунок 6.4

Например, reddit использует на всех страницах одинаковый подход к ссылкам,


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

Создавайте визуальную иерархию

Покажите пользователю, что самое важное на вашей странице. Размер, цвет,


размещение и негативное пространство вокруг каждого элемента должны соответствовать
15
его роли, важной или второстепенной. Правильно построенная иерархия, упрощает
понимание даже сложных концепций:

Предоставляйте фидбек и защищайте пользователя от случайных действий

Говорите пользователю, что происходит. Отправилось ли письмо? Загрузился ли


файл? Поддерживается ли этот формат изображений? Убедитесь, что нельзя удалить все
данные одним нажатием. Пользователю важно знать, что он не остался один на один со
своими проблемами. Позаботьтесь, чтобы ему было комфортно. Не показывайте все
элементы управления сразу. Это отпугнет неопытного пользователя. Отличный ход —
спрятать дополнительные функции, которые могут никогда не понадобиться простому
смертному, на вкладке Advanced или в специальном меню:

Рисунок 6.5

Не усложняйте

Рисунок 6.6

16
Прежде, чем добавить еще один элемент UI, спросите себя, облегчит ли он жизнь
пользователя или только заберет у него ценное время. Вот как изменился сайт American
Airlines после редизайна (справа):

Тестируйте

Чем раньше вы начнете и чем больше тестов проведете, тем качественнее будет
конечный результат. Не полагайтесь на собственные инстинкты — привлекайте обычных
пользователей. Они не работали над проектом неделями и ничего не знают о том, как все
устроено, поэтому их замечания будут особенно полезны.

И последнее — когда пользователь приходит на страницу, он не читает ее, а всего


лишь пробегается по ней глазами. Поэтому веб-дизайн современного интерфейса
пользователя создается с учетом F и Z-паттернов чтения (обратите внимание, что они
работают для языков с написанием с лева на право).

Рисунок 6.7

F-паттерн работает для сайтов с большим количеством текста — пользователь


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

Поэтому на «тяжелых» сайтах важная информация размещается слева, там, где ее


ожидает увидеть пользователь. Этот паттерн используют CNN и New York Times.

17
Рисунок 6.8

На страницах без больших фрагментов текста, например, на лендингах, работает Z-


паттерн чтения. Вначале посетители просматривают шапку с лева на право, потом
опускают взгляд вниз влево и просматривают нижнюю часть окна слева на право:

7 АНАЛИЗ ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ

Итак, сайт готов и запущен в эксплуатацию, как же оценивать результат?

Оценка результата может быть высокой, если выполняются три важных условия,
неразрывно связанных между собой, это:

Поставленная задача выполнена исполнителем в соответствии с предъявляемыми


требованиями клиента.

Достигнуты конечные цели, стоящие перед сайтом.

Клиент удовлетворен качеством услуги.

Качество сайта – это характеристика совокупности результатов деятельности


исполнителя и коммуникаций с ним, которые клиент получает на протяжении всех этапов
разработки и эксплуатации сайта.

18
Качество может иметь две стороны: субъективную - удовлетворенность клиента от
оказанной услуги, и объективную - свойства конечного продукта, не зависящие от
удовлетворенности клиента.

Субъективная:

Заказывая разработку сайта, клиент не покупает конечный продукт: он покупает


гарантии того, что его ожидания к услуге (продукту) будут реализованы.

Соответственно, покупка будет удачной в том случае, когда ожидания клиента


полностью воплощены в конечном продукте (сайте).
С точки зрения клиента, качество сайта, который он получит в процессе его создания,
состоит из множества различных факторов, основными из которых являются: сервис,
цена, престижность, надежность. Цена имеет непосредственное влияние на все эти
факторы (правда, не всегда однозначное).

Например, имея бюджет на разработку сайта менее 2 000 EUR, можно разработать
достаточно неплохой сайт с посредственным дизайном, но с другой стороны можно
вложить в разработку более 5 000 EUR и получить такой же сайт, только с эксклюзивным
дизайном.
Таким образом, клиент может быть вполне удовлетворен, заплатив определенную сумму и
получив за эти деньги продукт, который будет соответствовать его ожиданиям. Но не
всегда удовлетворенность клиента связана только с высоким сервисом, престижностью и
надежностью конечного продукта.

Объективная:

Мы считаем, что профессионально разработанный сайт должен отвечать, как


минимум, следующим требованиям:

Иметь оригинальный эксклюзивный дизайн;

Иметь удобную и понятную навигацию по сайту;

Иметь надежную и удобную в эксплуатации систему управления сайтом;

Удовлетворять конкретные потребности целевой аудитории клиента;

Соответствовать предъявляемым требованиям клиента, описанным в ТЗ.

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

Также важно чтобы соблюдались и другие негласные требования, такие как


высокий уровень сервиса со стороны исполнителя, гарантия на работоспособность сайта.

20
ЗАКЛЮЧЕНИЕ

Задачи, которые клиент решает с помощью разработки сайта, должны


соответствовать общим маркетинговым и рекламным задачам компании.

Правильный выбор партнера будет способствовать достижению Ваших целей и


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

Вы можете разработать сайт либо быстро, либо хорошо, либо дешево, но получить
все три возможности одновременно невозможно.

Стоимость услуг зависит от целей и задач проекта и складывается из объема работ


(времени, затрачиваемого исполнителем на проект), квалификации исполнителя и
известности (бренда) исполнителя.

Качество сайта – это характеристика совокупности результатов деятельности


исполнителя и коммуникаций с ним, которые клиент получает на протяжении всех этапов
разработки и эксплуатации сайта.

Хотелось бы закончить одним глубоким филосовским высказыванием о самой


проблеме и её решении:

«В условиях, когда человеческая деятельность приобретает глобальный характер,


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

Что означает, что лишь чёткое понимание сути проблемы, способно привести к её
решению.

21
БИБЛИОГРАФИЯ

22

Оценить