р (j) = max {tр (i) + t (ij)}, i<j, tр (0) = 0где i, j - номера событий;tр (i, j) - ранний срок наступления (i, j) события;t (ij) - срок выполнения работы (i-j);i<j - событие i предшествует j.4. Поздние сроки наступления событий:tп (i) = min {tп (j) - t (i,j)}, i<jгде i, j - номера событий;tп (i, j) - поздний срок наступления (i, j) события;t (ij) - срок выполнения работы (ij);5. Полный резерв времени для каждой работы:Rп (i,j) = tп (j) - tр (i) - t (i,j)где i, j - номера событий;tп (j) - поздний срок наступления события j;tр (i) - ранний срок наступления события i;t (ij) - срок выполнения работы (i-j). 6. События, лежащие на критическом пути. Такие события имеют равные ранние и поздние сроки наступления.7. Критические работы. То есть работы, у которых начальное и конечное события критические.8. Критический путь. Рассчитывается как сумма продолжительностей критических работ.Далее проводится непосредственно оптимизация сетевого графика, т.е. в целях сокращения продолжительности критического пути программа предлагает пользователю перераспределить ресурсы с работ, находящихся на некритических путях, на выполнение работ, не имеющих резервов времени 1.2. Описание логической структуры Блок-схема системы приведена на листе формата А1. Блок 1 -начало работы; Блок 2 - выбор из пунктов меню; Блок 3 - выбор пункта меню файл; Блок 4 - выбор подпункта меню “Открыть файл”; Блок 5 - загрузка файла; Блок 6 - выбор подпункта меню «сохранить файл»; Блок 7 - сохранение файла Блок 8 - выбор подпункта меню «Выход»; Блок 9 - запрос на окончание работы; Блок 10 - завершение работы программы; Блок 11 - выбор меню «действие»; Блок 12 - выбор подпункта меню «Оптимизация»; Блок 13 -происходит оптимизация; Блок 14 - выбор подпункта меню «прибавить строку»; Блок 15 -прибавление строки; Блок 16 - выбор подпункта меню «удалить строку» Блок 17 -удаление строки; Блок 18 - выбор пункта подменю “Очистить все”; Блок 19 - очистка содержимого таблицы; Блок 20 - выбор пункта меню “Помощь”; Блок 21 - выбор из пунктов подменю; Блок 22 - выбор подпункта меню “О задаче” Блок 23 - открытие новой формы и вывод её на экран; Блок 24 - выбор подпункта меню “О разработчике” Блок 25 - открытие новой формы и вывод её на экран; Блок 26 - выбор пункта подменю “Help” Блок 27 - открытие новой формы и вывод её на экран; Листинг программы приведен в Приложении “А” 1.3. Описание и организация входных данных 1.3.1. Описание входной и выходной информации Данная задача использует внутреннюю входную информацию в виде полей и переменных описание которых приведено ниже: |
Название поля | Идентификатор | Тип | | Начальное событие | I | Целый | | Конечное событие | J | Целый | | Объем работ | Объем работ | Целый | | Число ресурсов | Число ресурсов | Целый | | Производительность | Производительность | Целый | | Общее число ресурсов | Общее число ресурсов | Целый | | |
Начальное событие, Конечное событие, Объем работ, Число ресурсов и Производительность берутся из карточки задания, а Общее число ресурсов вычисляется автоматически как сумма по столбцу, Число ресурсов и выводятся в не редактируемое поле ввода. Выходная информация также полностью отображается на главной форме в таблице и в не редактируемых полях ввода и содержит: |
Наименование реквизита | Идентификатор | Тип | | Необходимо ресурсов | Необход. ресурсов | вещественный | | Продолжительность | Продолжительность | вещественный | | События | События | целый | | Резерв времени | Рез. времени | вещественный | | Продолжительность критического пути | Продолжительность критического пути | вещественный | | Всего необходимо ресурсов | Общее число ресурсов | вещественный | | |
Необходимо ресурсов, Продолжительность, События, Ранний срок, Поздний срок, Резерв времени выводятся в таблицу, Продолжительность критического пути, Всего необходимо ресурсов выводятся в не редактируемые поля ввода. 1.3.2. Организация ведения информационной базы Организация ведения информационной базы осуществляется за счет наличия таких функций как ввод и сохранение исходных данных. В эту информационную базу данных входят такие элементы программы как промежуточные массивы, адреса памяти где хранятся результаты вычислений и т. д. Промежуточные массивы создаются на время выполнения программы, в них производятся промежуточные вычисления, результаты которых потом заносятся в таблицу. Входная информация. Карточка задания и представляет собой пример задачи которую необходимо решить с использованием компьютера, оттуда также берутся исходные данные которые используются в тех самых промежуточных массивах и решениях, используются как входная информация для программы которая в свою очередь использует ее для решения задачи. Также имеется так называемая условно-постоянная информация(эта информация может быть изменена по желанию пользователя), которая представляет собой файл с исходными данными например той же самой карточки с задачей то есть это говорит о том что в программе предусмотрена такая функция как сохранение исходных данных и их загрузка. А также имеется постоянная информация - это помощь, которая в процессе работы программы никак не меняется. 1.4. Описание программных средств 1.4.1. Описание среды программирования Для реализации проекта «Оптимизация сетевого графика» с использованием персонального компьютера была выбрана среда программирования Borland Delphi 5.0 кампании Borland.Среда Delphi - это сложный механизм, обеспечивающий высокоэффективную работу программиста. В основе нее лежит язык Object Pascal, разработанный профессором Высшего технического училища (г. Цюрих, Швейцария) Никлаусом Виртом. Предложенный им алгоритмический язык он назвал именем великого французского ученого Блэза Паскаля (1623-1662). В качестве стандартного Pascal был утвержден в 1979 г. Первая версия Delphi была выпущена в начале 1995 года и явилась результатом разработки, которая велась компанией Borland в течение двух с половиной лет. Программный продукт был назван именем греческого города. В первую очередь Delphi предназначена для профессионалов-разработчиков корпоративных информационных систем. Однако она предназначен не только для программистов-профессионалов, но и для всех тех, кто используют компьютер с чисто прикладной целью, и кому необходимо быстро решить какие-то свои задачи, не привлекая для этого программистов со стороны. В Delphi удачно сочетаются средства визуального проектирования приложений и оптимизирующий компилятор. Delphi является единым полноценным средством промышленной разработки систем клиент/сервер. В состав среды входит обширная библиотека компонентов. С другой стороны, программист всегда сможет прибегнуть к низкоуровневым ассемблерным процедурам. Можно создавать приложения в визуальном режиме. Работая с Delphi, программист может с помощью нажатия одной клавиши создать выполняемый файл в формате EXE, однако, при необходимости, можно компилировать и файлы DLL, драйверов устройств, а также консольных приложений. Синтаксис Delphi включает буквы, цифры, шестнадцатеричные цифры, специальные символы, пробелы и зарезервированные слова. Буквы - это буквы латинского алфавита от a до z и от A до Z, а также знак подчеркивания "_". В языке нет различия между заглавными и строчными буквами алфавита, если только они не входят в символьные и строковые выражения. Цифры - арабские цифры от 0 до 9. Каждая шестнадцатеричная цифра имеет значение от 0 до 15. Первые 10 значений обозначаются арабскими цифрами 0…9, остальные шесть - латинскими буквами A…F или a…f. Специальные символы Delphi - это символы + - * / > < = <> >= <= : ; ' () [] {} и др. Особое место в алфавите языка занимают пробелы, к которым относятся любые символы в диапазоне кодов от 0 до 32. Эти символы рассматриваются как ограничители идентификаторов, констант, чисел, зарезервированных слов. Несколько следующих друг за другом пробелов считаются одним пробелом. Тип данных определяет значения, которые может иметь переменная, и операции, выполняемые над этой переменной. Существует несколько предопределенных типов данных, которые можно разделить на 3 группы: перечисляемые, вещественные типы и строки. Три наиболее важных предопределенных перечисляемых типа - Integer (целочисленные), Boolean (логический) и Char (символьный). Полный список перечисляемых типов: Integer, Cardinal, ShortInt, SmallInt, LongInt, Byte, Word, Boolean, ByteBool, WordBool, LongBool, Char, ANSIChar, WideChar. Вещественные типы представляют собой разнообразные форматы чисел с плавающей запятой, меньше всего памяти требуется для хранения чисел типа Single, затем Real, Double и Extended, кроме них есть еще два необычных типа данных Comp - описывает очень длинные целые числа и Currency (доступен только в Delphi) - имеет 4 десятичных знака после запятой. В Delphi определенны следующие операции: арифметические операции, логические операции, операции со строками, операции над множествами, операции отношения и операция @ (операция получения адреса). Логические операции применимы к операндам целого и логического типов, но не выделены в отдельную группу. Приоритетность операций достаточно проста. Основной упор объектно-ориентированной модели программных компонент в Delphi делается на максимальном реиспользовании кода. Это позволяет разработчикам строить приложения весьма быстро из заранее подготовленных объектов, а также дает им возможность создавать свои собственные объекты для среды Delphi. Никаких ограничений по типам объектов, которые могут создавать разработчики, не существует. Действительно, все в Delphi написано на нем же, поэтому разработчики имеют доступ к тем же объектам и инструментам, которые использовались для создания среды разработки. В результате нет никакой разницы между объектами, поставляемыми Borland или третьими фирмами, и объектами, которые вы можете создать. Исключения представлены в виде объектов, содержащих специфическую информацию о соответствующей ошибке (тип и местонахождение ошибки). Разработчик может оставить обработку ошибки, существовавшую по умолчанию, или написать свой собственный обработчик. Обработка исключений реализована в виде exception-handling blocks (также еще называется protected blocks), которые устанавливаются ключевыми словами try и end. Существуют два типа таких блоков: try...except и try...finally. Процедуры и функции позволяют разделить логику программы на более мелкие и управляемые фрагменты и аналогичны подпрограммам в других языках. Как и в основном блоке программы, все действия в процедурах и функциях заключаются в begin и end. Каждый из этих сегментов кода выполняет конкретную задачу. Если в содержащемся в процедуре операторе внутри модуля процедуры используется идентификатор процедуры, то процедура будет выполняться рекурсивно (будет при выполнении обращаться сама к себе). В Delphi существуют разница между функциями и процедурами. Стандартными процедурами являются Exit и ShowMessage, стандартными функциями являются StrToInt, FloatToStr, Random, математические функции и д.р. Ввод/вывод связан с обменом информацией между оператором памяти и вешнеми носителями информации. Для ввода и вывода данных в языке предусмотрены стандартные встроенные программы, которые называются процедурами. Процедура ввода вызывается с помощью оператора ввода Read , процедура вывода - с помощью оператора вывода Write .
Страницы: 1, 2, 3
|