Разработка самозапускающегося меню.
Эта статья написана с целью чтобы поделиться опытом и размышлениями о разработке программы самозапускающегося меню. Я – партнер Общества Партнеров «Biznes-Center». Все началось с того, когда мы решили сделать программу, позволяющую создавать собственное меню для дисков. Хочу первым делом непосредственно рассказать про опыт, приобретенный мной в разработке программного обеспечения.
Еще совсем недавно меня мой школьный учитель учил основам программирования – создания алгоритмов программ. Я думал, что это ненужное занятие, напрасная трата времени. Кому интересно рисовать непонятные блок-схемы, выдумывать разные пути и варианты решения задач, основываясь на изображении кружочков, квадратиков, ромбиков и соединением их стрелочками между собой?
Довольно нудно. Я, как и все мои одноклассники, – с большим нежеланием учились этим основам, через раз выполняя домашние задания. Наш учитель всегда говорил, что мы просто не понимаем значения этих основ алгоритмизация (хотя, какие основы в этом бессмысленном рисовании?). Когда курс основ алгоритмизации прошел – все с облегчением вздохнули. Да не тут то было…
В дальнейшем перед нами стало овладение практическими знаниями, а именно «применение теории на практике». Программирования в любой среде разработки – ни что иное, как перевод тех самых нудных алгоритмов на понятный компьютеру язык. Алгоритмы – своеобразная запись последовательных логических действий, понятных человеку, в результате исполнения которых происходит решение поставленной задачи. Алгоритм – это план. Немало времени прошло с того момента, как я это понял. Разработка любого программного обеспечения всегда должна начинаться с разработки алгоритмов.
Не обошлось без этого и изготовление самораскрывающегося меню. А сколько времени я потерял, пытаясь сделать что-то, предварительно не написав алгоритм… Приходилось огромное количество раз переделывать и дописывать код – то забудешь что-то, то напишешь лишнее, а потом – все перестраивать, переделывать… Код получался неоптимизированный, так как не было четкой последовательности сразу, а чтобы что-то дополнить уже не хотелось все переделывать. Приходилось дописывать дополнительные процедуры, которые вызывали другие процедуры с обработанными для данной и т. д.
Хочу поделиться с читателем, приобретенным мной опытом программирования, на примере разработки самозапускающегося меню.
Во-первых, как вы уже поняли, нужно разработать алгоритм. Алгоритм свойств и возможностей программы. В нашем случае самораскрывающеюся меню – это программа, которая дает пользователю возможность создавать универсальное меню для любого диска. Будь-то диск с играми, статьями, музыкой… Независимо от хранимой на нем информации, формата данных, формата хранителя этих данных – программа должна выполнять свою задачу. Задача же – предоставления перечня файлов с данными, содержащихся на диске, описание к каждому файлу, и краткий набор основных функций, позволяющий расширить возможности торговли определенными цифровыми товарами, т. е. небольшие средства рекламы. Еще одним из пунктов для самозапускающегося меню должно быть простота и надежность, как в принципе и для любой другой программы. Плюс к этому безопасность и максимальная адаптированность. Подсчитав все эти пункты я решил преступить к разработке.
Во-вторых. Теперь уже нужно разработать алгоритм действий. Т. е. что за чем будет происходить. Для самозапускающегося меню нужно какое-то красивое появление. Ведь любому понравиться посмотреть на красивое появление. Поэтому я решил сделать небольшую анимацию при запуске. Но что бы и это действие происходило с пользой, как говориться, нужно чтоб в анимации было задействован какой-то рекламный элемент.
Лучше всего подойдет логотип. Логотипы довольно распространены сейчас: каждая уважающая себя организация (фирма) имеет свой собственный уникальный логотип (как интерпретатор) - как, например, у любой компании по производству автомобилей. Логотипы могут также быть и у продукта непосредственно. Все это, по моему мнению, делается для привлечения покупателей – для того чтоб чем-то выделить свой продукт, чтоб именно он запоминался покупателям, чтоб отложить у людей в памяти ассоциацию определенный цветосочетаний или формы с названием фирмы, компании, продукта.
Учтя все выше написанное - я решил сделать «вылет» логотипа при старте. Значит - сценарий выполняется таким образом – пользователь нажимая на запуск самораскрывающегося меню видит перед собой сначала логотип, который движется, а потом уже непосредственно само главное окно самозапускающегося меню. Конечно же, так как эта программа предназначена для разных пользователей, которые будут самостоятельно создавать самораскрывающееся меню для своих дисков, нужно сделать возможность замены логотипа. Так как это должно быть просто - нужно сделать автоматический подгон всех параметров главного окна под логотип – чтобы было красиво! Ведь разные логотипы имеют различные размеры.
Продолжив размышления над средствами рекламы, я взял за необходимость – создание в самозапускающемся меню специально кнопку-ссылки, при нажатии на которую будет происходить открытие браузера с адресом, нужным для рекламы составителя меню. Это может быть как сайт какого-то товара, или же компании. Вот уже имеем две особенности, которые помогут разрекламировать как компанию, так и продукт в отдельности.
Следующим этапом разработки нужно придумать, каким образом будет происходить просмотр, а соответственно и изменение информации о каждом файле на диске.
Для решения этой проблемы, так как идет ориентировка на простого рядового пользователя, нужно чтобы программа автоматически считывала данные о названии продукта (файла), его описании, ссылки (адреса) на диске, где храниться данный цифровой товар, с какого-нибудь отдельного файла. Нужно соответственно просто и организовать структуру изменения этого файла с описаниями. Это также пришлось учесть при разработке. К данному виду приоритетов нужно еще отнести вид.
Ориентируясь на пользователя нужно сделать возможным изменение шрифта просмотра, причем его изменение должно быть стандартным как у любого другого приложения и доступ к этой опции сделать легким. Для удобства, также, я посчитал целесообразным в самозапускающемся меню сделать древовидный список товаров. Это, во-первых, удобно, во-вторых - конструктивно верно. Ведь таким образом можно уже систематизировать товары по определенным критериям, что немало важно для большого списка файлов, например для диска с музыкой. Читать описание должно быть просто и удобно. Специально для этого нужно отвести отдельное поле с описанием и таким, чтоб позволяло быстро просматривать информацию.
Теперь техническая сторона самораскрывающегося меню.
Программа будет использоваться для показа информации на диске, поэтому целесообразно сделать автоматический запуск при загрузке диска. Так как пользователей будет много, то и компьютеров, на которых будет исполняться программный код, будет много, следовательно, нужно, чтоб программа не требовала высоких системных параметров, а была адаптирована для любого пользователя с любой операционной системой, также размер должен быть минимальным. Всегда, при разработке нужно учитывать, на какой «слой компьютерного общества» будет направлен цифровой продукт. Так, если, программа сделана для коммерческих предприятиях – то основной уклон при разработке должен быть на функциональность и надежность, где системные требования не так важны.
Это все было учтено при разработке самозапускающегося меню.
Далее передо мной предстояла задача непосредственно разработки алгоритма, который будет в дальнейшем переведен на компьютерный язык.
Приведу краткий пример алгоритма, который лежит в основе самораскрывающегося меню. Первое – автоматический запуск при загрузке диска, загрузка программы в оперативную память и загрузка файла с описанием товаров, загрузка файла с параметрами, присвоение объектам самозапускающегося меню параметров, загрузка логотипа. Дальше идет визуализация – отображения логотипа, его движение, открытие главного окна, прогрузка дерева списка товаров и показ их на форме главного окна в объектах.
При нажатии на «Открыть» происходит запуск выделенного файла из всех файлов на диске, при нажатии «Выход» происходит закрытие самораскрывающегося меню, при нажатии пользователем на кнопку со ссылкой происходит открытие браузера для просмотра рекламной страницы. При выгрузке программы вылетает сообщение о том, кому принадлежит самозапускающееся меню. Вот в принципе сильно упрощенный алгоритм работы программы. Прежде чем приступать к разработке любой программы я всегда сначала пишу вот такой алгоритм, а потом уже непосредственно программирую.
Дальше надо выбрать язык программирования, на котором будет написана программа, в данном случае самозапускающееся меню. Учитывая тот факт, что нужно небольшое, простое, быстродействующее приложение, то лучше всего, конечно же, будет Delphi. Каждый язык программирования имеет свои особенности, но перевести алгоритм на язык понятный компьютеру можно пользуясь любым. Delphi – простой объектно-ориентированный язык, на котором без особых усилий можно реализовать любые программы. После выбора языка следует непосредственно программирование, т. е. перевод алгоритма в код.
И вот когда программный код уже готов переходим к компиляции. Имеем готовую программу. Можно сказать что «дело сделано». Но это далеко не так. Дальше наступает наиболее сложный этап – тестирование. В нашем случае тестирование особо важно. Мало того, что компьютеры пользователей различны, но и пользователи-то тоже разные. Поэтому после первой компиляции я раздал самораскрывающееся меню нескольким хорошим тестерам, которые после выполнения своей работы предоставили меня большой список недостатков самозапускающегося меню. Было протестировано все: начиная интерфейсом и заканчивая временем ядра при работе программы. Оказалось, что есть много структурных недочетов – таких как неправильная организация файла с описанием, файла параметров, время выполнения, загрузки и прочее. Сначала пришлось проработать так называемую защиту от неправильного использования – т. е. начиная от максимального упрощения ввода данных, чтоб уменьшить количество ошибок, которые может допустить пользователь при использовании самораскрывающегося меню, до автоматического «исправления» программой наиболее вероятных ошибок. Это очень сложно – ведь таких ошибок довольно много. После работы «над ошибками» я приступил к переработке интерфейса. Нужно было немного красивее сделать кнопочки, изменить расположение некоторых объектов и после этого еще раз откомпилировать самораскрывающееся меню и новую доработанную версию передать на более тщательное тестирование для выявления дальнейших ошибок и недочетов. При изготовлении самозапускающегося меню таких процедур было около десяти, и только после этого уже продукт был выставлен на продажу. Хочу подчеркнуть – после тестирование и переработки исходный код отличался от последнего на 68%. Время на переработку ушло в 7 раз больше чем на саму разработку программы с нуля. Вот так было создано самораскрывающееся меню, как продукт Общества Партнеров «Biznes-Center».
Далее последовало изготовление бесплатной демо-версии с ограниченными функциями. Так, я исключил такие возможности:
- невозможность замены логотипа;
- невозможность изменения настроек анимации;
- невозможность скрытия и изменения параметров кнопки, ведущей на сайт разработчика.
Это есть немаловажно – прежде чем купить любой электронный товар в магазине (будь то телевизор, музыкальный центр, микроволновая печь, компьютер) вы всегда проверяете его работоспособность, а потом уже покупаете. Так и здесь: сначала скачиваете демо-версию, если нравиться – оплачиваете покупку и Вам приходит ссылка для скачивания полной версии самозапускающегося меню. Я считаю, что это честно и справедливо.
В разработке любого электронного товара всегда задействовано несколько человек. Это сделано для того, чтоб максимально адаптировать товар для пользователя. Ведь если один и тот же человек будет проводить и разработку и тестирование программы, то он никогда не обнаружит всех ошибок, так как подсознательно знает весь процесс работы программы и явно сделать какую-то ошибку не сможет. Это проверенно мной много раз.
Еще одним пунктом, который следует учесть при разработке – наличие подобных цифровых продуктов. У нашего самозапускающегося меню есть довольно много «конкурентов», именно поэтому мы старались учесть и включить в программу все самые полезные функции, которые не содержаться в подобных товарах, упростить весь процесс создания собственного меню и уменьшить стоимость товара, относительно других.
В нашем современном мире конкуренция на рынке электронных товаров очень велика, и чтобы не остаться «в хвосте» остается максимально улучшать качество продукции. Ведь всем известно из экономической теории, что на рынке совершенной конкуренции продавец не может влиять на цену товара, а, войдя на рынок, является ценополучателем, где равновесная цена устанавливается по законам спроса и предложения. Войти на рынок легко, но оставаться на нем сложно. Многие предприниматели работают сначала чтобы только зарекомендовать себя, при этом не получая прибыли вообще, или, еще хуже, неся убытки. Но эти жертвы оправданы. Всем известно, что рынок цифровых товаров только набирает оборотов, расширяя совокупный спрос на товары и если войти в доверие к покупателям они будут расти согласно геометрической прогрессии, что позволит дальше развиваться производителю, улучшая свои товары и предлагая их по меньшей цене. Наше Общество является честным производителем и, имея неплохую репутацию, не собирается жертвовать нею ради обогащения, путем нечестной торговли. Поэтому мы устанавливаем низкие цены на наши товары и услуги, стремясь максимально угодить покупателю. Еще раз остановлюсь на том, что наше Общество не ставит перед собой цель обогащения!
Если Вас заинтересовало дальнейшее приобретение самораскрывающегося меню, перейдите по ссылке http://biznes-center.ru/shop/autorun_start_menu.html
Если Вы хотите с нами сотрудничать – заходите на наш сайт - http://biznes-center.ru/
С уважением, Шапарь Дмитрий.
Спицы
Национальный технический университет «Харьковский политехнический институт»
(НТУ «ХПИ»)
III этап Всеукраинской ученической олимпиады
ИНФОРМАТИКА
(в Харьковской области) 2 февраля 2007 г.
КОНКУРСНАЯ ЗАДАЧА
Z3: СПИЦЫ
для II тура (практического)
(200 баллов)
|
Файл входных данных: |
Z3.DAT |
|
Файл результатов: |
Z3.SOL |
|
Файлы решения задачи: |
Z3.* |
|
Ограничение времени на тест: |
20 сек. CPU (максимум для теста, & приведенного в описании задачи); 10 х Время выполнения .ехе автора задачи (на CPU участника олимпиады). |
ТЕКСТ ЗАДАЧИ:
Даны целые положительные числа m, n, k, которые задают размеры прямоугольного параллелепипеда, построенного из кубиков произвольных цветов со стороной = 1. При этом m - количество строк, n - количество столбцов, k - количество слоев. Можно ли пронзить этот параллелепипед спицами таким образом, чтобы выполнялись указанные ниже три условия?
- Все спицы перпендикулярны разным граням параллелепипеда.
- В любом одном элементарном кубике пересекаются три
взаимно перпендикулярные спицы,
проходящие через другие кубики такого же цвета. - Таких пересечений спиц может быть несколько.
При наличии пересекающихся таким образом спиц указать местоположение всех кубиков их пересечения.
ИМЕНА ФАЙЛОВ РЕШЕНИЯ ЗАДАЧИ:
Z3.* - исходный текст программы (основной) на выбранном Вами алгоритмическом языке;
Z3.EXE - исполняемый файл.
ФОРМАТ ВХОДНЫХ ДАННЫХ В ФАЙЛЕ Z3.DAT:
В первой строке входного файла через один пробел записаны числа m, n, k, (1<= m, n, k<10) - размеры ребер параллелепипеда. В следующей строке также через один пробел записаны целые числа, кодирующие цвета кубиков в первой строке первого слоя параллелепипеда, далее - целые числа, кодирующие цвета кубиков во второй строке первого слоя параллелепипеда,..., целые числа, кодирующие цвета кубиков в первой строке второго слоя параллелепипеда и т.д. Одному и тому же цвету соответствует одно и то же целое число из интервала от -32000 по +32000 включительно. Различным цветам соответствуют различные целые числа.
ФОРМАТ ВЫХОДНЫХ ДАННЫХ В ФАЙЛЕ Z3.SOL:
Если решения нет, то в единственную строку выходного файла вывести сообщение Error. При положительном исходе поиска в отдельные строки вывести все возможные тройки чисел (без повторения), указывающие номер строки (первый индекс), номер столбца (второй индекс) и номер слоя (третий индекс), определяющие положение найденных кубиков пересечения спиц в предположении, что нумерация строк, столбцов и слоев осуществляется от 1. Каждый раз выводить i= (перед номером строки), j= (перед номером столбца) и k= (перед номером слоя). Координаты разделять одним пробелом; лишние пробелы не выводить. Порядок анализа кубиков параллелепипеда: при выбранной строке анализируются столбцы, а в пределах столбца анализируются слои, причем во всех этих случаях номера изменяются увеличением. В последней строке вывести слово Count, знак = и количество полученных вариантов ответа (без пробелов и перехода к новой строке).
ПРИМЕР ВХОДНОГО И ВЫХОДНОГО ФАЙЛОВ:
|
Z3.DAT |
Смысл значений |
Z3.SOL |
|
2 3 3 1 1 3 3 3 3 1 3 3 1 3 3 4 3 2 3 3 3 |
количество строк, столбцов, слоев цвета кубиков первой строки первого слоя цвета кубиков второй строки первого слоя цвета кубиков первой строки второго слоя цвета кубиков второй строки второго слоя цвета кубиков первой строки третьего слоя цвета кубиков второй строки третьего слоя |
i=2 j=2 k=3 i=2 j=3 k=l Count=2 |
Файл Z3.DAT с данными указанного примера и аналог файла Z3.SOL, полученный автором задачи -
AuthorZ3.SOL, предоставляются участнику олимпиады Оргкомитетом в каталоге AOlimp\U???\Z3\*.*
Вашего компьютера (U??? - Ваше виртуальное имя).
Все файлы и подкаталоги решения задачи Z3 расположить в этом же каталоге .\Olimp\U???\Z3\*.
При нахождении Z3.EXE и Z3.DAT в одном произвольном каталоге запуск Z3.EXE должен приводить к
появлению Z3.SOL в этом же каталоге.
