|
||||||||||||||||||||||||||||||||||||||
|
Реферат: Структурное программирование при разработке программ. Структурное программирование рефератРеферат - Структурное программирование при разработке программ.На протяжении 70х годов произошел переход с ламповой элементарной базы построения ЭВМ на полупроводниковую, а затем, на базу интегральных схем. Это было связано с повышением ее компактности, удешевлением, серьезным повышением эффективности. В результате этого перехода потребовались сложные программные комплексы для решения новых проблем и задач. Появилась проблема, которая выражалась в том, что используемые ранее методы конструкторского программирования оказались неэффективными. С появлением необходимости разработки программируемых систем резко встает вопрос о повышении производительности труда программиста, об облегчении этапов отладки и тестирования программ, о понимании большими коллективами программистов не только своих участков работы, но и всей решаемой проблемы, а также облегчении решения этапа объединения отдельных частей в большой комплекс. Одним из пионеров новой методики стал Дейкстра, в 1968 году заявил о необходимости исключить из состава языков программирования высокого уровня оператора goto. Позднее была сформулирована четкая система правил, названная структурнымпрограммированием. Эта система представляет собой ряд ограничений и правил, которые обеспечивают соответствие любой программы строгому образцу, исключая запутанность, порождающую ошибки и затрудняющую тестирование. Одним из главных вопросов. Побудивших Дейкстру к новой методике стала необходимость облегчения тестирования программных комплексов в наиболее полном объеме. Необходимость в этой процедуре вызвана следующим: 1) трудоемкость и стоимость тестирования больших программных комплексов возрастает экспоненциально с увеличением их размеров. При этом есть мнение, что стоимость проверки любого изменения в сложном комплексе более чем в сто раз превышает стоимость внесения этого изменения. 2) В сложных системах, требующих постоянного сопровождения и развития, ошибки присутствуют всегда 3) Издержки от испытания сложных комплексов постоянно возрастают, по мере того, как люди возлагают на ЭВМ все более ответственные функции. Одним из выходов может стать разработка сложных и дорогостоящих методов тестирования программ (их эффективность является спорной). Дейкстра заложил в своей методике автоматическое доказательство правильности создаваемой программы, то есть требование правильности программы выполняется на любом этапе ее конструирования. Структурное программирование обладает тем дополнительным преимуществом, что повышает читаемость программы. Поведение неструктурированной программы сравнивают с броуновским движением. Структурированная программа обладает структурной организацией и исполнением. Такие программы читаются последовательно, так как в них не содержится передача управления. Помимо всего прочего было доказано, что разработка структурированной программы на языках высокого уровня производится гораздо эффективнее. После разработки идей структурного программирования появилась возможность разрабатывать компиляторы с глобальной оптимизацией кода, так как анализ в таких программах производится автоматически. В области практического применения структурного программирования основные исследования были направлена на решение проблемы разработки программы таким способом, чтобы ее правильность подавалась доказательству. Все усилия прилагались для анализа программы, организованной по нисходящей схеме, где вся программа рассматривалась как независимый вызываемый модуль. На следующем этапе исходная программа разбивается на комбинацию модулей 1го уровня. Общий процесс декомпозиции продолжается до тех пор, пока проектировщик не получит легкокодируемые модули. Необходимость легкого тестирования любой структуры к+1го независимо от смысла, вкладываемого в не на катом уровне декомпозиции, привела к требованию, чтобы любой модуль программы изначально проектируемой с одним входом и выходом, что приводит к представлению о программе, как о множестве вложенных друг в друга модулей. В классических работах по структурному программированию доказано, что такая реализация программы может быть воплощена с использованием всего двух управляющих конструкций, конкретная реализация которых может быть различной в разных языках программирования. Этот базовый принцип часто называют структурной теоремой. Согласно ей для построения программы необходимы всего три функциональных блока: 1) представляет собой отдельный оператор или логически связанную последовательность операторов, имеющую один вход и выход. 2) конструкция обобщенного цикла
3) конструкция двоичного решения
www.ronl.ru Реферат - Структурное программирование. - ИнформатикаПри программировании модуля следует иметь ввиду, что программа должна быть понятной не только компьютеру, но и человеку: и разработчик модуля, и лица, проверяющие модуль, и тестовики, готовящие тесты для отладки модуля, и сопроводители ПС, осуществляющие требуемые изменения модуля, вынуждены будут многократно разбирать логику работы модуля. В современных языках программирования достаточно средств, чтобы запутать эту логику сколь угодно сильно, тем самым, сделать модуль трудно понимаемым для человека и, как следствие этого, сделать его ненадежным или трудно сопровождаемым. Поэтому необходимо принимать меры для выбора подходящих языковых средств и следовать определенной дисциплине программирования. Впервые на это обратил внимание Дейкстра [8.2] и предложил строить программу как композицию из нескольких типов управляющих конструкций (структур), которые позволяют сильно повысить понимаемость логики работы программы. Программирование с использованием только таких конструкций назвали структурным. Рис. 8.1. Основные управляющие конструкции структурного программирования. Основными конструкциями структурного программирования являются: следование, разветвление и повторение (см. Рис. 8.1). Компонентами этих конструкций являются обобщенные операторы (узлы обработки [8.5]) S, S1, S2 и условие (предикат) P. В качестве обобщенного оператора может быть либо простой оператор используемого языка программирования (операторы присваивания, ввода, вывода, обращения к процедуре), либо фрагмент программы, являющийся композицией основных управляющих конструкций структурного программирования. Существенно, что каждая из этих конструкций имеет по управлению только один вход и один выход. Тем самым, и обобщенный оператор имеет только один вход и один выход. Весьма важно также, что эти конструкции являются уже математическими объектами (что, по-существу, и объясняет причину успеха структурного программирования). Доказано, что для каждой неструктурированной программы можно построить функционально эквивалентную (т.е. решающую ту же задачу) структурированную программу. Для структурированных программ можно математически доказывать некоторые свойства, что позволяет обнаруживать в программе некоторые ошибки. Этому вопросу будет посвящена отдельная лекция. Структурное программирование иногда называют еще «программированием без GO TO». Однако дело здесь не в операторе GO TO, а в его беспорядочном использовании. Очень часто при воплощении структурного программирования на некоторых языках программирования (например, на ФОРТРАНе) оператор перехода (GO TO) используется для реализации структурных конструкций, не снижая основных достоинств структурного программирования. Запутывают программу как раз «неструктурные» операторы перехода, особенно переход на оператор, расположенный в тексте модуля выше (раньше) выполняемого оператора перехода. Тем не менее, попытка избежать оператора перехода в некоторых простых случаях может привести к слишком громоздким структурированным программам, что не улучшает их ясность и содержит опасность появления в тексте модуля дополнительных ошибок. Поэтому можно рекомендовать избегать употребления оператора перехода всюду, где это возможно, но не ценой ясности программы [8.1]. К полезным случаям использования оператора перехода можно отнести выход из цикла или процедуры по особому условию, «досрочно» прекращающего работу данного цикла или данной процедуры, т.е. завершающего работу некоторой структурной единицы (обобщенного оператора) и тем самым лишь локально нарушающего структурированность программы. Большие трудности (и усложнение структуры) вызывает структурная реализация реакции на возникающие исключительные (часто ошибочные) ситуации, так как при этом требуется не только осуществить досрочный выход из структурной единицы, но и произвести необходимую обработку (исключение) этой ситуации (например, выдачу подходящей диагностической информации). Обработчик исключительной ситуации может находиться на любом уровне структуры программы, а обращение к нему может производиться с разных нижних уровней. Вполне приемлемой с технологической точки зрения является следующая «неструктурная» реализация реакции на исключительные ситуации [8.7]. Обработчики исключительных ситуаций помещаются в конце той или иной структурной единицы и каждый такой обработчик программируется таким образом, что после окончания своей работы производит выход из той структурной единицы, в конце которой он помещен. Обращение к такому обработчику производится оператором перехода из данной структурной единицы (включая любую вложенную в нее структурную единицу). www.ronl.ru Реферат - Структурное программирование: предпосылки и назначение; основные критерии оценки качества программы для ЭВММИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РФ АСТРАХАНСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ Структурное программирование: предпосылки и назначение структурного программирования, основные критерии оценки качества программы для ЭВМ. Реализация структурного программирования на языке «Е-практикума». Выполнил: студент V курса дополнительной специальности «информатика» Безниско Евгений . Астрахань — 1999Предпосылки и назначение структурного программирования. Традиционная технология программирования формировалась на заре вычислительной техники, когда в распоряжении пользователей были ограниченные ресурсы ЭВМ, а разработчик программ был в то же время и главным ее пользователем. В этих условиях главное внимание обращалось на получение эффективных программ в смысле оптимального использования ресурсов ЭВМ. В настоящее время, когда сфера применения ЭВМ чрезвычайно расширилась, разработка и эксплуатация программ осуществляется, как правило, разными людьми. Поэтому наряду с эффективностью на первый план выдвигаются и другие важные характеристики программ такие, как понятность, хорошая документированность, надежность, гибкость, удобство сопровождения и т.п. Проблема разработки программ, обладающих такими качествами, объясняется трудоемкостью процесса программирования и связанным с этим быстрым ростом стоимости программного обеспечения. Для создания «хорошей» программы появляется необходимость придерживаться определенных принципов или определенной дисциплины программирования. Значительный прогресс в области программирования достигается с использованием так называемого структурного программирования. Появление новой технологии, или, как еще говорят, дисциплины программирования, основанной на структурном подходе, связано с именем известного голландского ученого Э.Дейкстры (1965 г.). В своих работах он высказал предположение, что оператор GOTO может быть исключен из языков программирования и что квалификация программиста обратно пропорциональна числу операторов GOTO в его программах. Такая дисциплина программирования упрощает и структуризирует программу. Однако представление о структурном программировании, как о программировании без использования оператора GOTO, является ошибочным. Например, Хоор определяет структурное программирование как «систематическое использование абстракции для управления массой деталей и способ документирования, который помогает проектировать программу». Структурное программирование можно толковать как «проектирование, написание и тестирование программы в соответствии с заранее определенной дисциплиной». Структурный подход к программированию как раз и имеет целью снижение трудоемкости всего процесса создания программного обеспечения от технического задания на разработку до завершения эксплуатации. Он означает необходимость единой дисциплины на всех стадиях разработки программы. В понятие структурного подхода к программированию обычно включают нисходящие методы разработки программ (принцип «сверху вниз»), собственно структурное программирование и так называемый сквозной структурный контроль. Основной целью структурного программирования является уменьшение трудностей тестирования и доказательства правильности программы. Это особенно важно при разработке больших программных систем. Опыт применения методов структурного программирования при разработке ряда сложных операционных систем показывает, что правильность логической структуры системы поддается доказательству, а сама программа допускает достаточно полное тестирование. В результате в готовой программе встречаются только тривиальные ошибки кодирования, которые легко исправляются. Структурное программирование улучшает ясность и читабельность программ. Программы, которые написаны с использованием традиционных методов, особенно те, которые перегружены операторами GOTO, имеют хаотичную структуру. Структурированные программы имеют последовательную организацию, поэтому возможно читать такую программу сверху донизу без перерыва. Наконец, структурное программирование призвано улучшить эффективность программ. Итак, структурное программирование представляет собой некоторые принципы написания программ в соответствии со строгой дисциплиной и имеет целью облегчить процесс тестирования, повысить производительность труда программистов, улучшить ясность и читабельность программы, а также повысить ее эффективность. Основные критерии оценки качества программы для ЭВМ. Известно, что один и тот же алгоритм может быть реализован на ЭВМ различными способами, т.е. может быть составлено несколько различных программ, решающих одну и ту же задачу. Таким образом, нужно иметь некоторые критерии оценки программы, с помощью которых можно судить насколько одна программа лучше другой. Анализ и оценка программы носят преимущественно качественный характер. 1. Программа работает и решает поставленную задачу . Понятно, что эта характеристика программы является самой важной. В связи с этим каждая программа должна быть устроена так, чтобы можно было проверить правильность полученных результатов. Такая проверка проводится в процессе отладки программы, на определенных наборах входных данных, для которых заранее известен ответ. Но отладка может доказать лишь наличие ошибок в программе, но не может доказать правильности программы для всех возможных вычислений, реализуемых с ее помощью. В связи с этим необходима разработка методов аналитической верификации программы. Для аналитического доказательства правильности программы требуется, чтобы программа легко анализировалась. Это означает, что программа должна быть устроена так, чтобы можно было понять, каким образом с ее помощью получается данный ответ. 2. Минимальное время, затрачиваемое на тестирование и отладку программы . Тестирование и отладка программы – необходимый этап в процессе решения задачи на ЭВМ. Он занимает от трети до половины всего времени разработки программы, поэтому очень важно уменьшить время, затрачиваемое на тестирование и отладку. Тестирование и отладка программы облегчается, если программа просто анализируется и снабжена необходимыми комментариями, облегчающими ее понимание. Хорошие комментарии могут ускорить процесс отладки. Понимание и отладка программы облегчается, если она имеет простую и ясную структуру, в частности, если ограничено использование операторов передачи управления (GOTO). Перегруженность программы этими операторами приводит к хаотической структуре и затрудняет отладку. Еще один важный принцип – использование мнемонических обозначений для переменных. Языки программирования представляют здесь вполне достаточные возможности. Для лучшего понимания программы необходимо использовать мнемонику, отражающую физический (математический, экономический и т.д.) смысл переменной (например, SPEED — скорость). 3. Уменьшение затрат на сопровождение . Разработанная и отлаженная программа предназначена для многократного использования, и ее эксплуатацией, как правило, занимаются не разработчики, а другие программисты, входящие в так называемую группу сопровождения. Программистам, сопровождающим программу, часто приходится продолжать отладку программы и производить ее модернизацию, в связи с изменением технического задания, введением новых средств программного обеспечения или выявлением новых ошибок и недоработок в программе. Для уменьшения затрат на сопровождение необходимо, чтобы каждый разработчик учитывал сложность сопровождения. Следует разрабатывать, отлаживать и оформлять программу с учетом того, что ее будут использовать и сопровождать другие программисты. 4. Гибкость программы . Разработанная программа обычно находится в эксплуатации длительное время. За это время могут измениться требования к решаемой задаче, техническое задание, требования к программе. Появляется необходимость внести определенные изменения в программу, что в некоторых случаях бывает трудно сделать, т.к. разработчиком не предусмотрена такая возможность. «Хорошая» программа должна допускать модификацию. 5. Уменьшение затрат на разработку . Программирование является коллективным трудом. Состав группы программистов, работающих над решением данной задачи, может по каким-либо причинам измениться. Поэтому проектирование и разработка программы должны вестись таким образом, чтобы было возможно при необходимости передать ее завершение другому программисту. Несоблюдение этого требования часто приводит к срыву сроков сдачи программ в эксплуатацию. 6. Простота и эффективность . Программа должна быть просто организована. Это может проявляться и в структуре программы, и в использовании простых и наиболее естественных средств языка программирования, и в предпочтении простых структур данных и т.п. Эффективность программы считается одной из главных ее характеристик. Поэтому часто в ущерб другим качествам программы разработчики прибегают к сложным ухищрениям, чтобы уменьшить объем используемой памяти или сократить время выполнения программы. Во многих случаях затрачиваемые на это усилия не оправдывают себя. Разумный подход к повышению эффективности программы состоит в том, чтобы выявить наиболее «узкие» места и постараться их улучшить. Реализация структурного программирования на языке«Е-практикума». К основным методам структурного программирования относится, прежде всего, отказ от бессистемного употребления оператора GOTO и преимущественное использование других структурированных операторов, методы нисходящего проектирования разработки программы, идеи пошаговой детализации и некоторые другие соглашения, касающиесся дисциплины программирования. Всякая программа, в соответствии с структурным подходом к программированию, может быть построена только с использованием трех основных типов блоков. 1. Функциональный блок , который на блок-схеме изображается в виде прямоугольников с одним входом и одним выходом:Функциональному блоку в языках программирования соответствуют операторы ввода и вывода или любой оператор присваивания. В виде функционального блока может быть изображена любая последовательность операторов, выполняющихся один за другим, имеющая один вход и один выход. 2. Условная конструкция . Этот блок включает проверку некоторого логического условия (P), в зависимости от которого выполняется либо один (S1 ), либо другой (S2 ) операторы:На языке «Е-практикума»: . если <условие> .. то <оператор1> .. иначе <оператор2> . все 3. Блок обобщенного цикла . Этот блок обеспечивает многократное повторение выполнения оператора S пока выполнено логическое условие P:На языке «Е-практикума» циклы реализуются 2 способами. Цикл с параметром: . нц для <параметр> от <нач.значение> до <кон.значение> .. <оператор1> .. <оператор2> .. ... . кц Цикл с предусловием: . нц пока <условие> .. <оператор1> .. <оператор2> .. ... . кц При конструировании программы с использованием рассмотренных типов блоков эти блоки образуют линейную цепочку так, что выход одного блока подсоединяется ко входу следующего. Таким образом, программа имеет линейную структуру, причем порядок следования блоков соответствует порядку, в котором они выполняются. Такая структура значительно облегчает чтение и понимание программы, а также упрощает доказательство ее правильности. Так как линейная цепочка блоков может быть сведена к одному блоку, то любая программа может, в конечном итоге, рассматриваться как единый функциональный блок с один входом и одним выходом. При проектировании и написании программы нужно выполнить обратное преобразование, то есть этот блок разбить на последовательность подблоков, затем каждый подблок разбить на последовательность более мелких блоков до тех пор, пока не будут получены «атомарные» блоки, рассмотренных выше типов. Такой метод конструирования программы принято называть нисходящим («сверху вниз»). При нисходящем методе конструирования алгоритма и программы первоначально рассматривается вся задача в целом. На каждом последующем этапе задача разбивается на более мелкие подзадачи, каждая подзадача, в конечном итоге на еще более мелкие подзадачи и так до тех пор, пока не будут получены такие подзадачи, которые легко кодируются на выбранном языке программирования. При этом на каждом шаге уточняются все новые и новые детали («пошаговая детализация»). В процессе нисходящего проектирования сохраняется строгая дисциплина программирования, то есть разбиение на подзадачи осуществляется путем применения только рассмотренных типов конструкций (функциональный блок, условная конструкция, обобщенный цикл), поэтому, в конечном итоге, получается хорошо структурированная программа. На языке «Е-практикума» последовательную детализацию можно реализовать в виде вспомогательного алгоритма (подпрограммы, процедуры, функции). ... нач . ... . вспомогательный_алгоритм(...) . ... кон алг [< тип >] вспомогательный_алгоритм(...) дано ... надо нач . ... кон В настоящее время в помощь структурному подходу к прораммированию появилось новое направление — объектное программирование, не отменяющее, а дополняющее принципы структурного подхода, позволяющее разрабатывать и модернизировать программный код с меньшими затратами времени, распределять задачу программирования между большим количеством программистов. www.ronl.ru Реферат Структурное программированиескачатьРеферат на тему: Структу́рное программи́рование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом. В соответствии с данной методологией
Сначала пишется текст основной программы, в котором, вместо каждого связного логического фрагмента текста, вставляется вызов подпрограммы, которая будет выполнять этот фрагмент. Вместо настоящих, работающих подпрограмм, в программу вставляются «заглушки», которые ничего не делают. Полученная программа проверяется и отлаживается. После того, как программист убедится, что подпрограммы вызываются в правильной последовательности (то есть общая структура программы верна), подпрограммы-заглушки последовательно заменяются на реально работающие, причём разработка каждой подпрограммы ведётся тем же методом, что и основной программы. Разработка заканчивается тогда, когда не останется ни одной «затычки», которая не была бы удалена. Такая последовательность гарантирует, что на каждом этапе разработки программист одновременно имеет дело с обозримым и понятным ему множеством фрагментов, и может быть уверен, что общая структура всех более высоких уровней программы верна. При сопровождении и внесении изменений в программу выясняется, в какие именно процедуры нужно внести изменения, и они вносятся, не затрагивая части программы, непосредственно не связанные с ними. Это позволяет гарантировать, что при внесении изменений и исправлении ошибок не выйдет из строя какая-то часть программы, находящаяся в данный момент вне зоны внимания программиста. Теорема о структурном программировании: Любую схему алгоритма можно представить в виде композиции вложенных блоков begin и end, условных операторов if, then, else, циклов с предусловием (while) и может быть дополнительных логических переменных (флагов).Эта теорема была сформулирована итальянскими математиками К.Бомом и Дж.Якопини в 1966 году и говорит нам о том, как можно избежать использование оператора перехода goto. ИсторияМетодология структурного программирования появилась как следствие возрастания сложности решаемых на компьютерах задач, и соответственного усложнения программного обеспечения. В 70-е годы XX века объёмы и сложность программ достигли такого уровня, что «интуитивная» (неструктурированная, или «рефлекторная») разработка программ, которая была нормой в более раннее время, перестала удовлетворять потребностям практики. Программы становились слишком сложными, чтобы их можно было нормально сопровождать, поэтому потребовалась какая-то систематизация процесса разработки и структуры программ. Наиболее сильной критике со стороны разработчиков структурного подхода к программированию подвергся оператор GOTO (оператор безусловного перехода), имевшийся тогда почти во всех языках программирования. Неправильное и необдуманное использование произвольных переходов в тексте программы приводит к получению запутанных, плохо структурированных программ (т.н. спагетти-кода), по тексту которых практически невозможно понять порядок исполнения и взаимозависимость фрагментов. Следование принципам структурного программирования сделало тексты программ, даже довольно крупных, нормально читаемыми. Серьёзно облегчилось понимание программ, появилась возможность разработки программ в нормальном промышленном режиме, когда программу может без особых затруднений понять не только её автор, но и другие программисты. Это позволило разрабатывать достаточно крупные для того времени программные комплексы силами коллективов разработчиков, и сопровождать эти комплексы в течение многих лет, даже в условиях неизбежных изменений в составе персонала. Методология структурной разработки программного обеспечения была признана «самой сильной формализацией 70-х годов». После этого слово «структурный» стало модным в отрасли, и его начали использовать везде, где надо и где не надо. Появились работы по «структурному проектированию», «структурному тестированию», «структурному дизайну» и так далее. В общем, произошло примерно то же самое, что происходило в 90-х годах и происходит в настоящее время с терминами «объектный», «объектно-ориентированный» и «электронный». Перечислим некоторые достоинства структурного программирования:
wreferat.baza-referat.ru |
|
||||||||||||||||||||||||||||||||||||
|
|