В работе представлены вопросы: · Анализ существующих аналогов и обоснование выбора темы · Этапы создания программного продукта «База данных Компьютерный магазин» Первая глава содержит информацию о понятии “Оптимизация” Во второй главе рассмотрены программы, аналогичные разрабатываемой базе данных, проведен их анализ с указанием достоинств и недостатков. Так же рассматриваются все этапы разработки программного продукта с четким указанием, что было сделано на каждом этапе. А также и обоснование выбора темы и формирование технического задания. Вторая глава также содержит руководство пользователя.
СОДЕРЖАНИЕ Оглавление ВВЕДЕНИЕ. 3 1 ОПТИМИЗАЦИЯ ПРОГРАММ.. 3 1.1 НАЗНАЧЕНИЕ И ЦЕЛИ ОПТИМИЗАЦИИ.. 3 1.2 ПРОМЕЖУТОЧНЫЙ ЯЗЫК.. 3 1.3 БЛОК (ЛИНЕЙНЫЙ УЧАСТОК)3 1.4 СИЛЬНО СВЯЗНАЯ ОБЛАСТЬ. 3 1.5 СПОСОБЫ ОПТИМИЗАЦИИ.. 3 1.6 РАЗГРУЗКА УЧАСТКОВ ПОВТОРЯЕМОСТИ.. 3 1.7 СДВИГ ИНВАРИАНТНЫХ ОПЕРАТОРОВ.. 3 1.8 ВСТАВКА ПСЕВДОБЛОКА.. 3 2 ПРАКТИЧЕСКАЯ ЧАСТЬ. 3 2.1 АНАЛИЗ СУЩЕСТВУЮЩИХ АНАЛОГОВ.. 3 2.2 ОБОСНОВАНИЕ ВЫБОРА ТЕМЫ.. 3 2.3 КРАТКИЙ ОБЗОР СРЕДЫ РАЗРАБОТКИ ACCESS. 3 2.4 КРАТКИЙ ОБЗОР СРЕДЫ РАЗРАБОТКИ DELPHI 7. 3 2.5 РУКОВОДСТВО ПО НАПИСАНИЮ ПРОГРАММЫ.. 3 2.6 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ.. 3 ЗАКЛЮЧЕНИЕ. 3 СПИСОК ЛИТЕРАТУРЫ.. 3 ВВЕДЕНИЕ Несмотря на все более широкое распространение языков программирования и интегрированных сред программирования, оптимизация программ остается актуальной темой дискуссий для программистов. Всегда желательно иметь компилятор, который создает эффективно - работающие объектные программы. Как правило, программа в кодах машины, полученная в результате трансляции, будет занимать больший объем памяти и работать медленнее, чем такая же программа, написанная опытным программистом. Термин "оптимизация" применяется к попыткам сделать выходные программы более "эффективными", т.е. быстрее работающими или более компактными. Таким образом, оптимизацией называется улучшение выходной программы, а часть транслятора, выполняющая эту функцию - оптимизирующей частью транслятора. Если вы пришли к выводу, что ваша программа работает недостаточно быстро, первое, что надо сделать, - это убедиться, что вы решаете задачу, пользуясь наилучшими алгоритмами и представлениями данных. Замена примитивного или неадекватного алгоритма более подходящим может ускорить выполнение вашей программы на порядок и более. 1 ОПТИМИЗАЦИЯ ПРОГРАММ 1.1 НАЗНАЧЕНИЕ И ЦЕЛИ ОПТИМИЗАЦИИ Оптимизирующая часть выполняет следующие действия: 1. Устраняет недостатки программы, вызванные небрежностью или низкой квалификацией программиста. Примером может служить вынесение из цикла операторов, не зависящих от управляющих переменных цикла, что приведет к сокращению времени выполнения программы, поскольку вынесенные операторы будут выполняться только один раз, а не многократно. 2. Устраняет излишние вычисления, неизбежно возникающие в процессе трансляции даже при самом тщательном написании программы на языке высокого уровня. Например, устранение повторного вычисления индексных выражений для элементов массива сокращает время выполнения программы и ее длину. 1.2 ПРОМЕЖУТОЧНЫЙ ЯЗЫК Для повышения эффективности программы можно произвести над ней последовательность преобразований в различные моменты процесса компиляции. Например, можно оперировать с входной программой, со структурами, порождаемыми на стадии синтаксического анализа, с кодом, порождаемым в качестве выхода фазы генерации кода. Однако оптимизировать программу, уже протранслированную в коды машины, трудно по следующим причинам: во-первых, единицы действия программы в кодах команд слишком мелки, что уже само по себе затрудняет анализ, во-вторых, при трансляции входной программы в коды машины возможна потеря имеющейся в ней информации. Например, засылка промежуточных результатов в разные рабочие ячейки памяти делает практически невозможной идентификацию одинаковых частей программы; в-третьих, из-за нестандартности форматов различных элементов языка и рекурсивных конструкций, широко применяемых в текстах программ. Поэтому, если транслятор производит оптимизацию программы, необходимо делать специальный проход, переводящий программу с исходного языка, на промежуточный. Строго сформулировать требования, предъявляемые к промежуточному языку, трудно. Однако уже из самого обоснования необходимости промежуточного языка видно, что: 1 операторы языка не должны быть слишком мелкими; 2 символы, идентификаторы и числа должны иметь фиксированный формат; 3 в строении операторов желательно отсутствие рекурсивности; 4 должна сохраняться вся информация, необходимая для оптимизации, которая есть во входном языке; 5 язык должен быть приспособлен к выполнению оптимизирующих преобразований и удобен для последующей трансляции в коды вычислительной машины. Требования. "4" и "5" показывают, что разработать единый универсальный промежуточный язык для трансляции с любого языка программирования в коды любой вычислительной машины трудно. В качестве промежуточного языка можно использовать польскую запись, триады, синтаксические деревья. При рассмотрении вопросов оптимизации будем считать, что программа протранслирована с входного на некоторый промежуточный язык, оператор которого имеет следующий общий вид: (mi) код операции аргументы оператора, где mi - указатель оператора, а также идентификатор результата команды при отсутствии его присваивания некоторой переменной. Необходимо различать переменные, введенные программистом (программные переменные), и переменные, генерируемые в процессе трансляции на промежуточный язык (mi - идентификаторы). Между определением программной переменной и ее использованием в качестве операнда существует следующая зависимость: - если программная переменная, используемая в области, не определена в ней, то предполагается, что она определена во всех путях, ведущих к области; - если программная переменная определена и используется в области, то внутри области существует путь между определением переменной и каждым ее использованием; - если программная переменная определена в области, то, вообще говоря, это не значит, что она определена на каждом выходном пути. 1.3 БЛОК Вопросы оптимизации обычно связаны с топологией программы, т.е. со способом ее построения. Для того, чтобы локализовать процессы оптимизации и не связывать их с конкретным входным языком, они проводятся внутри отдельных участков программы, называемых блоками и сильно связанными областями. Блок (линейный участок) - выполняемая по порядку последовательность операторов, имеющая единственную точку входа - первый оператор с меткой, на который может быть передано управление, и единственную точку выхода - последний оператор. Блок моделирует часть программы на промежуточном языке, которая содержит операторы присваивания. Формально модель линейного участка может быть представлена следующим образом: Блок B - это тройка вида (P,I,U),где 1. P - список операторов S1,S2,...Sn (n>=0), 2. I - множество входных переменных, 3. U - множество выходных переменных. Оператор S в программе называется входом в линейный участок, если он либо первый оператор в программе, либо помечен идентификатором, появляющимся в операторе перехода, либо непосредственно следует за условным оператором. Линейный участок, относящийся к входу в участок S, состоит из S и всех операторов, следующих за ним вплоть до оператора останова, включая его, или вплоть до входа в следующий блок. 1.4 СИЛЬНО СВЯЗНАЯ ОБЛАСТЬ Для каждого блока B=(P,I,U) можно найти ориентированный ациклический граф , представляющий этот блок. При этом каждый лист графа (концевая вершина) соответствует одной входной переменной в I, а каждая его внутренняя вершина - оператору из P. Граф отражает порядок выполнения операторов программы и дает более наглядное представление, чем линейная последовательность операторов. Если вершины i и j графа соответствуют участкам i и j программы, то дуга идет из i в j, если: последний оператор участка i является оператором перехода на метку L, которой помечен первый оператор участка j. Сильно связанной областью направленного графа называется такое множество его вершин, что для любых двух вершин x и y (x! = y) существует путь из x в y. Будем рассматривать сильно связанные области Ri, обладающие следующими свойствами: 1. Ri является сильносвязанной областью, состоящей из множества блоков, каждый из которых предшествует сам себе и следует сам за собой внутри этого множества; 2.Ri != Rj; 3. для каждого i<j или пересечение Ri и Rj пусто, или Ri является подобластью Rj (включена в нее). 1.5 СПОСОБЫ ОПТИМИЗАЦИИ Различают две категории оптимизирующих преобразований: преобразования исходной программы в ее внутренней форме, которые не зависят от объектного языка (машинно-независимые) и преобразования, осуществляемые на уровне объектной программы (машинно-ориентированные). Методы первой категории применимы почти к любому алгебраическому языку - FORTRAN, ALGOL, PL/1 и.т.д. На практике используется весьма широкий набор машинно-независимых оптимизирующих преобразований, что связано с большим разнообразием неоптимальностей. К ним относятся: 1. - разгрузка участков повторяемости; 2. - упрощение действий; 3. - реализация действий; 4. - чистка программы; 5. - экономия памяти; 6. - сокращение программы. 1. 6РАЗГРУЗКА УЧАСТКОВ ПОВТОРЯЕМОСТИ Такое название получил способ оптимизации, состоящий в вынесении вычислений из многократно проводимых (исполняемых ) участков программы на участки программы , редко проходимые. К этому виду преобразований относятся различные чистки зон, тел циклов и тел рекурсивных процедур, когда инвариантные (по результату выполнения) в соответствующих участках повторяемости выражения, линейные компоненты (т. е. гамаки, обязательно исполняемые при каждом прохождении участка повторяемости) выносятся из него и размещаются перед входом в участок повторяемости - чистка вверх,- или когда уничтожающие свои предыдущие результаты линейные компоненты или группы линейных компонент участка повторяемости выносятся из него и размещаются за выходы из участка повторяемости - чистка вниз. При чистке вверх вынесенные вычисления образуют новый непосредственный обязательный предшественник участка повторяемости, а при чистке вниз - непосредственный обязательный преемник участка повторяемости. Обычно выносятся только такие выражения и линейные фрагменты программы, которые обязательно исполняются при каждом прохождении разгружаемого участка повторяемости. В группу разгрузок участков повторяемости также входят и различные преобразования, которые осуществляют перемещение гамака по пути, ведущему к месту использования его результатов.При таком преобразовании в отличие от чисток гамак остается в тех же зонах, циклах и процедурах.
Курсовые работы по информатикеВ работе представлены вопросы: · Анализ существующих аналогов и обоснование выбора темы · Этапы создания программного продукта «База данных
Оценок: 388 (Средняя 5 из 5)
Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.