Структурное
программирование — методология
разработки программного обеспечения,
в основе которой лежит представление
программы в виде иерархической структуры
блоков. Предложена в 1970-х годах Э.
Дейкстрой и др.
В
соответствии с данной методологией
любая программа строится без использования
оператора goto из трёх базовых управляющих
структур: последовательность, ветвление,
цикл; кроме того, используются подпрограммы.
При этом разработка программы ведётся
пошагово, методом «сверху вниз».
Методология
структурного программирования появилась
как следствие возрастания сложности
решаемых на компьютерах задач, и
соответственно, усложнения программного
обеспечения. В 1970-е годы объёмы и сложность
программ достигли такого уровня, что
традиционная (неструктурированная)
разработка программ перестала
удовлетворять потребностям практики.
Программы становились слишком сложными,
чтобы их можно было нормально сопровождать.
Поэтому потребовалась систематизация
процесса разработки и структуры программ.
Цель структурного программирования —
повысить производительность труда
программистов, в том числе при разработке
больших и сложных программных комплексов,
сократить число ошибок, упростить
отладку, модификацию и сопровождение
программного обеспечения.
Такая
цель была поставлена в связи с ростом
сложности программ и неспособностью
разработчиков и руководителей крупных
программных проектов справиться с
проблемами, возникшими в 1960 – 1970 годы
в связи с развитием программных средств.
Принципы структурного программирования
Становление
и развитие структурного программирования
связано с именем Эдсгера Дейкстры.
Принцип 1. Следует отказаться от
использования оператора безусловного
перехода goto. Принцип 2. Любая
программа строится из трёх базовых
управляющих конструкций: последовательность,
ветвление, цикл.
-
Последовательность — однократное
выполнение операций в том порядке, в
котором они записаны в тексте программы. -
Бертран Мейер поясняет: «Последовательное
соединение: используйте выход одного
элемента как вход к другому, подобно
тому, как электрики соединяют выход
сопротивления со входом конденсатора». -
Ветвление — однократное выполнение
одной из двух или более операций, в
зависимости от выполнения заданного
условия. -
Цикл — многократное исполнение одной
и той же операции до тех пор, пока
выполняется заданное условие (условие
продолжения цикла).
Принцип
3. В программе базовые управляющие
конструкции могут быть вложены друг в
друга произвольным образом. Никаких
других средств управления последовательностью
выполнения операций не предусматривается.
Принцип
4. Повторяющиеся фрагменты программы
можно оформить в виде подпрограмм
(процедур и функций). Таким же образом
(в виде подпрограмм) можно оформить
логически целостные фрагменты программы,
даже если они не повторяются.
-
В этом случае в тексте основной программы,
вместо помещённого в подпрограмму
фрагмента, вставляется инструкция
«Вызов подпрограммы». При выполнении
такой инструкции работает вызванная
подпрограмма. После этого продолжается
исполнение основной программы, начиная
с инструкции, следующей за командой
«Вызов подпрограммы». -
Бертран Мейер поясняет: «Преобразуйте
элемент, возможно, с внутренними
элементами, в подпрограмму, характеризуемую
одним входом и одним выходом в потоке
управления».
Принцип 5. Каждую логически
законченную группу инструкций следует
оформить как блок (block). Блоки являются
основой структурного программирования.
Блок — это логически сгруппированная
часть исходного кода, например, набор
инструкций, записанных подряд в исходном
коде программы. Понятие блок означает,
что к блоку инструкций следует обращаться
как к единой инструкции. Блоки служат
для ограничения области видимости
переменных и функций. Блоки могут быть
пустыми или вложенными один в другой.
Границы блока строго определены.
Например, в if-инструкции блок ограничен
кодом BEGIN..END (в языке Паскаль) или фигурными
скобками {…} (в языке C) или отступами (в
языке Питон). Принцип 6. Все
перечисленные конструкции должны иметь
один вход и один выход. Произвольные
управляющие конструкции (такие, как в
блюде спагетти) могут иметь произвольное
число входов и выходов. Ограничив себя
управляющими конструкциями с одним
входом и одним выходом, мы получаем
возможность построения произвольных
алгоритмов любой сложности с помощью
простых и надежных механизмов.
Принцип 7. Разработка программы
ведётся пошагово, методом «сверху вниз»
(top–down method)
Соседние файлы в папке Doc-Ответы (Все)
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Хотя C# создавался строго в парадигме ООП, рассмотренные выше операторы языка позволяют реализовать и структурное программирование.
Напомним, что его становление и развитие связано с именем Эдсгера Дейкстры, который опубликовал своё знаменитое письмо «Оператор Go To считается вредным» (1968 год). Это поистине исторический документ, оказавший заметное влияние на дальнейшее развитие программирования.
Вам необходимо освоить технологию структурного программирования для написания «правильных» подпрограмм (структурных единиц ваших программ).
Принципы структурного программирования:
Принцип 1. Следует отказаться от использования оператора безусловного перехода goto.
Принцип 2. Любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл.
Последовательность — однократное выполнение операций в том порядке, в котором они записаны в тексте программы.
Ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения заданного условия.
Цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется заданное условие (условие продолжения цикла).
Принцип 3. В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом. Никаких других средств управления последовательностью выполнения операций не предусматривается.
Принцип 4. Повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций). Таким же образом (в виде подпрограмм) можно оформить логически целостные фрагменты программы, даже если они не повторяются. В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция «Вызов подпрограммы». При выполнении такой инструкции работает вызванная подпрограмма. После этого продолжается исполнение основной программы, начиная с инструкции, следующей за командой «Вызов подпрограммы».
Принцип 5. Каждую логически законченную группу инструкций следует оформить как блок. Блоки являются основой структурного программирования. Блок — это логически сгруппированная часть исходного кода, например, набор инструкций, записанных подряд в исходном коде программы. Понятие блок означает, что к блоку инструкций следует обращаться как к единой инструкции. Блоки служат для ограничения области видимости переменных и функций. Блоки могут быть пустыми или вложенными один в другой. Границы блока строго определены. Например, в операторе if блок ограничен кодом BEGIN..END (в языке Паскаль) или фигурными скобками {…} (в языках C, С++, C#).
Принцип 6. Все перечисленные конструкции должны иметь один вход и один выход. Произвольные управляющие конструкции (такие, как в блюде спагетти) могут иметь произвольное число входов и выходов. Ограничив себя управляющими конструкциями с одним входом и одним выходом, мы получаем возможность построения произвольных алгоритмов любой сложности с помощью простых и надежных механизмов.
Принцип 7. Разработка программы ведётся пошагово, методом «сверху вниз».
Конец цитаты.
Примечание (терминологическое) к Принципу 4.
«Подпрограммам» в разных языках соответствуют разные названия:
В Паскале это procedure и function, в Бейсике – subroutine и function, в С и С++ — только функции. В C# используется термин «функция-член». Напомним, что основной единицей инкапсуляции в C# является класс, который определяет форму объекта. Он описывает данные, а также код, который будет ими оперировать. В C# описание класса служит для построения объектов, которые являются экземплярами класса. Код и данные, составляющие вместе класс, называют членами. Данные, определяемые классом, называют полями, или переменными экземпляра. А код, оперирующий данными, содержится в функциях-членах, самым типичным представителем которых является метод. В C# метод служит в качестве аналога подпрограммы (к числу других функций-членов относятся свойства, события и конструкторы). Таким образом, методы класса содержат код, воздействующий на поля, определяемые этим классом.
Следует отметить, что в C# метод, как функция-член обязательно относится к какому-либо классу. При попытке объявить метод вне класса, в пространстве имен, диагностируется ошибка:
«Пространство имен не может непосредственно содержать такие члены, как поля или методы».
Даже в стандартном консольном приложении объявляется один класс Program и один метод static void Main(string[] args) этого класса, имеется одна точка входа и одна точка выхода. Другие методы, объявленные в этом классе, могут вызываться как подпрограммы как прямо, так и опосредованно из Main().
Можно считать, что консольное приложение, в котором учитываются 7 указанных выше принципов (не использовать goto, применять только три управляющие структуры и т.д.), вполне соответствует идеологии структурного программирования.
В Windows-приложении в целом, как уже отмечалось, принцип «один вход — один выход» не применим (какие-либо действия являются реакцией на некоторые события), однако реализация каждого метода должна соответствовать принципам структурного программирования.
ЗАКЛЮЧЕНИЕ
Итак, мы рассмотрели синтаксис операторов языка C# с небольшими примерами. Каждый из них вы должны проверить в консольном приложении и, изменяя что-либо, поэкспериментировать.
Теперь нам надо закрепить изученный материал раздела «Основы языка С#». Для этого вы можете изучить примеры решения задач и написать программы, реализующие задания для самостоятельной работы в следующем части курса «Основы языка C#. Задачи«.
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
Помощь проекту:
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ
ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ М. Е. ЕВСЕВЬЕВА»
Факультет физико–математический
Кафедра математики и методики обучения математике
РЕФЕПАТ
СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ
Автор работы: _________________________________________ О.С. Орлова
Направление: 44.03.05 Педагогическое образование (с двумя профилями подготовки)
Профиль Информатика. Математика
Руководитель работы
канд. пед. наук, доцент _______________________________ Т.В. Кормилицна
Оценка ___________
Саранск 2022
Содержание
Введение 3
-
Понятие структурного программирования 4
-
История структурного программирования и проектирования программы 5
-
Основы структурного программирования 7
-
Принципы структурного программирования 10
-
Методика разработки программ 12
Заключение 14
Список литературы 15
Введение
Структурное программирование является первым направлением, которое оформилось в виде парадигмы. Предпосылкой этого был тот факт, что Э. Дейкстра выявил обратную зависимость между числом неограниченных операторов перехода go to и качеством программы. Качество программы в данном случае определялось двумя показателями – скоростью отладки и степенью надежности. Так появилась парадигма структурного программирования, которое многие имеют просто как «программирование без go to».
В основе данной технологии лежит простой факт, гласящий о том, что любая структура управления может быть функционально эквивалентно выражена суперпозицией последовательного выполнения, ветвления по условию и цикла с предусловием.
Подобный стиль программирования предполагает проведение тестовых испытаний всех завершенных модулей в случае добавления или редактирования любого модуля. Это требует дополнительных трудозатрат, однако оказывает чрезвычайно благотворное психологическое воздействие на разработчика, и еще более благотворное воздействие такой стиль программирования оказывает на заказчика.
Важно отметить, что свойство структурности программы не предопределяется системой программирования – оно вносится самим программистом. Любая программа в любой системе программирования может быть написано структурно, а может и не структурно (например, с использованием оператора безусловного перехода go to).
-
Понятие структурного программирования
Структурное программирование — это определенные общие принципы и правила проектирования, разработки и оформления программ с целью облегчения процессов их создания и тестирования, повышения производительности труда программистов и улучшения читабельности результирующей программы. Структура программы и алгоритм решения задачи должны быть легкими для понимания, простыми для доказательства правильности и удобными для модификации. По своей сути структурный подход есть отказ от беспорядочного стиля в алгоритмизации и программировании (в частности, отказ от оператора goto) и определение ограниченного числа стандартных приемов построения легко читаемых алгоритмов и программ с ясно выраженной структурой, что особенно важно при разработке больших программных систем.
Опыт применения методов структурного программирования при разработке, например, ряда сложных операционных систем показывает, что правильность логической структуры системы в этом случае легко поддается доказательству, а сама система допускает достаточно полное тестирование. Уменьшение трудностей отладки и тестирования программ приводит к увеличению производительности труда программистов, поскольку на тестирование программы тратится от трети до половины времени ее разработки. Производительность труда программиста обычно измеряется числом отлаженных операторов, которые он может написать за день. Приближенные оценки показывают, что применение методов структурного программирования позволяет увеличить это число в 5—6 раз. Также нужно сказать, что структурное программирование предполагает определенную организацию самого процесса программирования и определенную технологию проектирования программ, что также положительно влияет на производительность труда программистов.
-
История структурного программирования и проектирования программ
Методология структурного программирования и проектирования программ появилась как следствие возрастания сложности решаемых на компьютерах задач, и соответственного усложнения программного обеспечения. В 70-е годы XX века объёмы и сложность программ достигли такого уровня, что надежность, качество неструктурированной разработки программ, которая была нормой в более раннее время, перестала удовлетворять потребностям практики. Программы становились слишком сложными и содержащими большое число ошибок, чтобы их можно было читать, понимать, исправлять и сопровождать, поэтому потребовалась систематизация процесса разработки структуры сложных программ. Наиболее сильной критике со стороны разработчиков структурного подхода к программирования подвергся оператор GOTO (оператор безусловного перехода), имевшийся тогда почти во всех языках программирования. Неправильное и необдуманное использование произвольных переходов в тексте программы приводит к получению запутанных, плохо структурированных программ (т.н. спагетти-кода), которые сложно читать, исправлять и практически невозможно понять порядок исполнения. взаимозависимость фрагментов и конечных результатов работы программ. Следование принципам структурного программирования и проектирования сделало тексты программ, даже довольно крупных, нормально читаемыми и легко сопровождаемыми. Серьёзно облегчилось понимание программ и исправление ошибок, появилась возможность разработки программ в нормальном промышленном режиме, когда программу может без особых затруднений понять не только её автор, но и другие программисты. Это позволило разрабатывать достаточно крупные для того времени программные комплексы силами коллективов разработчиков, и сопровождать эти комплексы в течение многих лет, даже в условиях неизбежных изменений в составе персонала. Методология структурного проектирования и разработки программного обеспечения была признана «самой сильной формализацией 70-х годов». Одним из наиболее успешных проектов применения методов структурного проектирования был проект разработки бортового программного обеспечения для космического корабля Буран, для автоматического управления которым впервые использовался бортовой компьютер. Для документирования программ в проекте «Буран» было предложено использовать структурированный псевдокод В.А.Каймина с записью алгоритмов на русском языке, которые легко читать, понять, исправлять, инспектировать и сопровождать инженерам, техникам и руководителям проектов. Те же самые принципы описания программ были внесены в школьные учебники В.А.каймина и А.П.Ершова для обучения основам алгоритмизации и программирования учащихся и преподавателей средних школ. После этого слово «структурный» стало модным в отрасли, и структурное программирование начали начали включать в учебники и учебную литературу по информатике и программированию. (В.А.Каймин. Структурные методы разработки программ на языках высокого уровня. М.МИЭМ, 1985) Появились работы по «структурному проектированию», «структурному тестированию», «структурному дизайну» и так далее. В общем, произошло примерно то же самое, что происходило в 90-х годах и происходит в настоящее время с терминами «объектный», «объектно-ориентированный» и «электронный». |
-
Основы структурного программирования
Теоретическим фундаментом структурного программирования является теорема о структурировании, из которой следует, что алгоритм (программа) решения любой практически вычислимой задачи может быть представлен с использованием трех элементарных базисных управляющих структур: структуры следования (последовательности); структуры ветвления, структуры цикла, изображенных на рис. 6.5—6.7 соответственно, где Р — условие, S — оператор.
Структура следования представляет собой естественный ход выполнения алгоритма — любую последовательность операторов, выполняющихся друг за другом (см. рис. 1). В языке программирования это соответствует последовательности операторов ввода, вывода и операторов присваивания.
Структура ветвления представляет фактор принятия решения, включает проверку некоторого логического условия Р и, в зависимости от результатов этой проверки, выполнение оператора S1 либо оператора S2. В языках программирования (например, Pascal) реализуется оператором if Р then SI else S2 (см. рис. 2).
Структура цикла (цикла с предусловием) представляет фактор повторяемости вычислений, обеспечивает многократное повторение выполнения оператора S, пока выполняется (истинно) логическое условие Р. В языках программирования (например, Pascal) реализуется оператором while Р do S.
Рис. 1. Структура следования
Рис. 2. Структура ветвления
Базисный набор управляющих структур является функционально полным, т.е. с его помощью можно создать любой сколь угодно сложный алгоритм, однако с целью создания более компактных и наглядных алгоритмов и программ используются дополнительные управляющие структуры: структура сокращенного ветвления; структура варианта или многоальтернативного выбора; структура цикла с параметром; структура цикла с постусловием. В разных языках программирования реализация базовых управляющих структур может быть различной, например в языке Pascal реализованы все предлагаемые структуры.
Любая программа может быть построена посредством композиции базисных структур: либо путем их последовательного соединения — образования последовательных конструкций, либо путем их вложения друг в друга — образования вложенных конструкций.
Каждая из структур может рассматриваться как один функциональный блок с одним входом и одним выходом. Блоки S, SI, S2, входящие в состав базисных управляющих структур, сами могут быть одной из них, поэтому возможны вложенные конструкции. Однако, какова бы ни была степень и глубина «вложенности», важно, что любая конструкция в конечном итоге имеет один вход и один выход. Следовательно, любую сложную структуру можно рассматривать как «черный ящик» с одним входом и одним выходом. Таким образом, можно ввести преобразование любой структуры в функциональный блок. Тогда всякий алгоритм, составленный из стандартных структур, поддается последовательному преобразованию к единственному функциональному блоку, и эта последовательность преобразований может быть использована как средство понимания алгоритма и доказательства его правильности. Обратная последовательность преобразований может быть использована в процессе проектирования алгоритма с постепенным раскрытием единственного функционального блока в сложную структуру основных элементов.
Для структурирования и понимания больших по объему программ используются также дополнительные структурные средства, которые поддерживают модульный принцип разработки ПС: это подпрограммы и модули. Использование аппарата подпрограмм (процедур и функций) — это возможность выделять в самостоятельные программные единицы со своими входными и выходными данными отдельные (часто повторяющиеся) участки кода для последующего многократного вызова их из различных точек программы и других подпрограмм. Модуль представляет собой автономно компилируемую библиотеку описаний типов, данных, процедур и функций, что позволяет группировать описания данных и подпрограмм по их функциям и назначению согласно одному из основных принципов структурного программирования — разбиения больших задач на подзадачи.
-
Принципы структурного программирования
Становление и развитие структурного программирования связано с именем Эдсгера Дейкстры [10].
Принцип 1. Следует отказаться от использования оператора безусловного перехода GoTo.
Принцип 2. Любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл.
• Последовательность — однократное выполнение операций в том порядке, в котором они записаны в тексте программы. Бертран Мейер поясняет: «Последовательное соединение: используйте выход одного элемента как вход к другому, подобно тому, как электрики соединяют выход сопротивления со входом конденсатора» [17].
• Ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения заданного условия.
• Цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется заданное условие (условие продолжения цикла).
Принцип 3. В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом. Никаких других средств управления последовательностью выполнения операций не предусматривается.
Принцип 4. Повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций). Таким же образом (в виде подпрограмм) можно оформить логически целостные фрагменты программы, даже если они не повторяются.
В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция «Вызов подпрограммы». При выполнении такой инструкции работает вызванная подпрограмма. После этого продолжается исполнение основной программы, начиная с инструкции, следующей за командой «Вызов подпрограммы».
Бертран Мейер поясняет: «Преобразуйте элемент, возможно, с внутренними элементами, в подпрограмму, характеризуемую одним входом и одним выходом в потоке управления».
Принцип 5. Каждую логически законченную группу инструкций следует оформить как блок (block). Блоки являются основой структурного программирования.
Блок — это логически сгруппированная часть исходного кода, например, набор инструкций, записанных подряд в исходном коде программы. Понятие блок означает, что к блоку инструкций следует обращаться как к единой инструкции. Блоки служат для ограничения области видимости переменных и функций. Блоки могут быть пустыми или вложенными один в другой. Границы блока строго определены. Например, в if-инструкции блок ограничен кодом BEGIN..END (в языке Паскаль) или фигурными скобками {…} (в языке C) или отступами (в языке Питон).
Принцип 6. Все перечисленные конструкции должны иметь один вход и один выход.
Произвольные управляющие конструкции (такие, как в блюде спагетти) могут иметь произвольное число входов и выходов. Ограничив себя управляющими конструкциями с одним входом и одним выходом, мы получаем возможность построения произвольных алгоритмов любой сложности с помощью простых и надежных механизмов.
Принцип 7. Разработка программы ведётся пошагово, методом «сверху вниз» (top-down method) [5].
-
Методика разработки программ
Распространены две методики (стратегии) разработки программ, относящиеся к структурному программированию: программирование «сверху вниз»; программирование «снизу вверх».
Программирование «сверху вниз», или нисходящее проектирование программ, — это методика разработки программ, при которой разработка начинается с определения целей решения проблемы, после чего идет последовательная детализация, заканчивающаяся детальной программой. Сначала выделяется несколько самых глобальных задач, решение которых может быть представлено в общей структуре функционально независимыми блоками. Разработку логической структуры каждого такого блока и ее модификацию можно осуществлять независимо от остальных блоков. На этом первом этапе проекта раскрываются наиболее важные и существенные связи, определяется функциональное назначение каждого блока, его входные и выходные данные. На последующих этапах проектирования уточняется (детализируется) логическая структура отдельных функциональных блоков общей схемы, что также может осуществляться в несколько этапов детализации вплоть до простейших инструкций. На каждом этапе проекта выполняются многократные проверки и исправления.
Подобный подход является достаточно рациональным, позволяет значительно ускорить процесс разработки сложных программных проектов и в значительной мере избежать ошибочных решений. Кроме того, появляется возможность некоторые подпрограммы (модули) не реализовывать сразу, а временно отложить их разработку, пока не будут закончены другие части. Например, если имеется необходимость вычисления сложной математической функции, то выделяется отдельная подпрограмма такого вычисления, реализуется временно одним оператором, который просто присваивает нужное значение. Когда все приложение будет написано и отлажено, можно приступить к реализации этой сложной функции.
Программирование «снизу вверх», или восходящее проектирование программ, — это методика разработки программ, начинающаяся с разработки подпрограмм (процедур, функций), в то время когда проработка общей схемы не закончилась. Такая методика является менее предпочтительной по сравнению с нисходящим проектированием, так как часто приводит к нежелательным результатам, переписыванию кода и увеличению времени разработки. Ее использование может быть целесообразным, когда новый проект использует известные частные решения.
Заключение
Использование технологии структурного программирования при разработке серьезных программных проектов основано на следующих принципах:
-
программирование должно осуществляться «сверху вниз»;
-
весь проект должен быть разбит на модули/подпрограммы с одним входом и одним выходом;
-
любая подпрограмма должна допускать только три основные структуры: последовательное выполнение операторов, ветвление и цикл;
-
недопустим оператор безусловной передачи управления goto;
-
документация должна создаваться одновременно с программированием, частично в виде комментариев к программе. Применение принципов и методов структурного программирования позволяет повысить надежность программ (благодаря хорошему структурированию при проектировании программа легко поддается тестированию и отладке) и их эффективность (структурирование программы позволяет легко находить и корректировать ошибки, а отдельные подпрограммы можно переделывать/модифицировать независимо от других), уменьшить время и стоимость программной разработки, улучшить читабельность программ.
Список литературы
-
Берг О.Ю. Метрики оценки качества программного обеспечения // Труды международного симпозиума надежность и качество. — Пенза: Пензенский государственный университет, 2005. — Т.1. — С. 321-322.
-
Благодатских В.А. Стандартизация разработки программных средств / Благодатских В.А., Волнин В.А., Поскакалов К.Ф. — М.: Финансы и статистика, 2005. — 288 с.
-
Валова О.В. Программная инженерия. — Чита: Читинский гос. ун-т, 2009. — 175 с.
-
Захарова А.А. Информатика и программирование: программные средства реализации информационных процессов / А.А. Захарова, Е.В. Молнина, Т.Ю. Черныева. – Томск: Изд-во ТПУ, 2013. – 318 с.
-
Звездин С.В. Проблемы измерения качества программного кода // Вестник Южно-Уральского государственного университета. Серия: Компьютерные технологии, управление, радиоэлектроника. — 2010. — № 2. — С. 62-66.
-
Иванова Г.С. Технология программирования. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2014. – 56 с.
-
Кознов Д.В. Введение в программную инженерию. — М.: Национальный открытый университет «Интуит», 2016. — 307 с.
-
Константайн Л., Локвуд Л. Разработка программного обеспечения. — СПб: Питер, 2004. — 592 с.
-
Липаев В.В. Качество программных средств. — М.: Янус-К, 2002. — 400 с.
-
Макарова Н.В. Основы программирования. — М.: КНОРУС, 2016. — 454 с.
-
Мухортов В.В. Объектно-ориентированное программирование, анализ и дизайн / В.В. Мухортов, В.Ю. Рылов. – Новосибирск: Изд-во ООО «Новософт», 2012. – 108 с.
-
Назаров С.В., Белоусова С.Н., Бессонова И.А., Гиляревский Р.С., Гудыно Л.П. Введение в программные системы и их разработку. — М.: Интернет-Университет Информационных Технологий (ИНТУИТ), 2012. — 456 с.
-
Назаров С.В. Архитектуры и проектирование программных систем. — М.: ИНФРА-М, 2013. — 413 с.
-
Новиков Ф.А. Технологические подходы к разработке программного обеспечения. – СПб.: Изд-во ИТМО, 2014. -137 с.
-
Соловьев С.В. Технология разработки прикладного программного обеспечения / С.В. Соловьев, Л.С. Гринкруг, Р.И. Цой. – М.: БИНОМ, 2012. – 321 с.
-
Степович-Цветкова Г.С. Стандарты качества компьютерных программ // Наука сегодня. Сборник научных трудов по материалам VII международной научно-практической конференции: в 4 частях. Научный центр «Диспут». — Вологда: ООО «Маркер», 2015. — С. 96-97.
Блок (программирование)
-
Блок (также говорят блок кода, блок команд, блок инструкций) в программировании — это логически сгруппированный набор идущих подряд инструкций в исходном коде программы, является основой парадигмы структурного программирования.
Блоки служат для ограничения области видимости переменных и функций, а также позволяют обращаться к блоку инструкций как к единой инструкции, могут быть пустыми или вложенными один в другой.
Блок в коде иногда сравнивают с параграфом в тексте, хотя эти понятия имеют существенные различия.
Источник: Википедия
Связанные понятия
Каламбур типизации является прямым нарушением типобезопасности. Традиционно возможность построить каламбур типизации связывается со слабой типизацией, но и некоторые сильно типизированные языки или их реализации предоставляют такие возможности (как правило, используя в связанных с ними идентификаторах слова unsafe или unchecked). Сторонники типобезопасности утверждают, что «необходимость» каламбуров типизации является мифом.
В языках программирования объявле́ние (англ. declaration) включает в себя указание идентификатора, типа, а также других аспектов элементов языка, например, переменных и функций. Объявление используется, чтобы уведомить компилятор о существовании элемента; это весьма важно для многих языков (например, таких как Си), требующих объявления переменных перед их использованием.
Подробнее: Объявление (информатика)
Из-за путаницы с терминологией словом «оператор» в программировании нередко обозначают операцию (англ. operator), см. Операция (программирование).Инстру́кция или опера́тор (англ. statement) — наименьшая автономная часть языка программирования; команда или набор команд. Программа обычно представляет собой последовательность инструкций.
Подробнее: Оператор (программирование)
Конста́нта в программировании — способ адресации данных, изменение которых рассматриваемой программой не предполагается или запрещается.
Ленивые вычисления (англ. lazy evaluation, также отложенные вычисления) — применяемая в некоторых языках программирования стратегия вычисления, согласно которой вычисления следует откладывать до тех пор, пока не понадобится их результат. Ленивые вычисления относятся к нестрогим вычислениям. Усовершенствованная модель ленивых вычислений — оптимистичные вычисления — переходит в разряд недетерминированных стратегий вычисления.
Упоминания в литературе
Существует возможность пополнения галереи стандартных блоков своими. Можно создать стандартные блоки из фрагментов работы, которые у вас будут часто повторяться (например, структура однотипных таблиц, сложные формулы, схемы, заголовки разделов или даже тема работы, если она у вас большая).
Блок функции представляет собой локальный блок, по структуре аналогичный блоку процедуры. В теле функции должна быть хотя бы одна инструкция присваивания, в левой части которой стоит имя функции. Именно она и определяет значение, возвращаемое функцией. Если таких инструкций несколько, то результатом функции будет значение последней выполненной инструкции присваивания.
Элементы этой технологии основываются на концепции графического представление блочного моделирования – SADT-диаграммы отображают функции в виде блоков, взаимодействующих друг с другом посредством интерфейсных дуг. Место соединения дуги с блоком определяет тип интерфейса. Управляющая информация входит в блок сверху, в то время как информация, которая подвергается обработке, показана с левой стороны блока, а результаты показаны с правой стороны. Механизм (человек или автоматизированная система), который осуществляет операцию, представляется дугой, входящей в блок снизу.
Для предприятий характерно внутреннее структурирование. Такое структурирование трудно не учитывать при построении модели. В этом случае приходится иметь дело не с «черным ящиком», а с системой, содержащей несколько взаимодействующих между собой блоков. Если входы и выходы всех блоков известны и могут быть измерены, то применительно к каждому блоку может быть поставлена задача поиска функциональной модели. Модель системы представляется системой уравнений, описывающих функциональные преобразования координат в блоках. И здесь при решении вопроса поиска структур и параметров математических моделей блоков может быть поставлена в математической корректной форме. Совсем другое положение создается, когда система распадается на структурные подсистемы, а с другой входы и выходы всех подсистем (блоков) не поддаются контролю и не могут быть измерены. Здесь важно, чтобы математическая модель давала возможность изучить не поддающиеся контролю структурные блоки системы. Тогда для описания работы каждого блока можно применить минимальное математическое описание. Такой путь позволяет получить систему уравнений, описывающих работу блоков моделируемой системы.
Так, Morgan Stanley определяет блокчейн как «совместное использование данных через сеть отдельных компьютеров», или «компьютеры, передающие блоки записей в хронологической цепочке». По сути, это распределенный реестр – два термина взаимозаменяемы{80}.
Связанные понятия (продолжение)
Идиома программирования — устойчивый способ выражения некоторой составной конструкции в одном или нескольких языках программирования. Идиома является шаблоном решения задачи, записи алгоритма или структуры данных путём комбинирования встроенных элементов языка.
Анонимная функция в программировании — особый вид функций, которые объявляются в месте использования и не получают уникального идентификатора для доступа к ним. Поддерживаются во многих языках программирования.
Зарезерви́рованное сло́во (или ключево́е сло́во) — в языках программирования слово, имеющее специальное значение. Идентификаторы с такими именами запрещены.
Вывод типов (англ. type inference) — в программировании возможность компилятора самому логически вывести тип значения у выражения. Впервые механизм вывода типов был представлен в языке ML, где компилятор всегда выводит наиболее общий полиморфный тип для всякого выражения. Это не только сокращает размер исходного кода и повышает его лаконичность, но и нередко повышает повторное использование кода.
Опера́ция — конструкция в языках программирования, аналогичная по записи математическим операциям, то есть специальный способ записи некоторых действий.
Абстрактное синтаксическое дерево (АСД) — в информатике конечное помеченное ориентированное дерево, в котором внутренние вершины сопоставлены (помечены) с операторами языка программирования, а листья — с соответствующими операндами. Таким образом, листья являются пустыми операторами и представляют только переменные и константы.
Область видимости (англ. scope) в программировании — часть программы, в пределах которой идентификатор, объявленный как имя некоторой программной сущности (обычно — переменной, типа данных или функции), остаётся связанным с этой сущностью, то есть позволяет посредством себя обратиться к ней. Говорят, что идентификатор объекта «виден» в определённом месте программы, если в данном месте по нему можно обратиться к данному объекту. За пределами области видимости тот же самый идентификатор может быть…
Конте́йнер в программировании — тип, позволяющий инкапсулировать в себе объекты других типов. Контейнеры, в отличие от коллекций, реализуют конкретную структуру данных.
Литерал (англ. literal ) — запись в исходном коде компьютерной программы, представляющая собой фиксированное значение. Литералами также называют представление значения некоторого типа данных.
Сопрограммы (англ. coroutines) — методика связи программных модулей друг с другом по принципу кооперативной многозадачности: модуль приостанавливается в определённой точке, сохраняя полное состояние (включая стек вызовов и счётчик команд), и передаёт управление другому. Тот, в свою очередь, выполняет задачу и передаёт управление обратно, сохраняя свои стек и счётчик.
Подробнее: Сопрограмма
Мона́да — это абстракция линейной цепочки связанных вычислений. Монады позволяют организовывать последовательные вычисления.
Ме́тод в объектно-ориентированном программировании — это функция или процедура, принадлежащая какому-то классу или объекту.
Фу́нкция вы́сшего поря́дка — в программировании функция, принимающая в качестве аргументов другие функции или возвращающая другую функцию в качестве результата. Основная идея состоит в том, что функции имеют тот же статус, что и другие объекты данных. Использование функций высшего порядка приводит к абстрактным и компактным программам, принимая во внимание сложность производимых ими вычислений.
Пара́метр в программировании — принятый функцией аргумент. Термин «аргумент» подразумевает, что конкретно и какой конкретной функции было передано, а параметр — в каком качестве функция применила это принятое. То есть вызывающий код передает аргумент в параметр, который определен в члене спецификации функции.
Объектами первого класса (англ. first-class object, first-class entity, first-class citizen) в контексте конкретного языка программирования называются элементы, которые могут быть переданы как параметр, возвращены из функции, присвоены переменной.
Замыкание (англ. closure) в программировании — функция первого класса, в теле которой присутствуют ссылки на переменные, объявленные вне тела этой функции в окружающем коде и не являющиеся её параметрами. Говоря другим языком, замыкание — функция, которая ссылается на свободные переменные в своей области видимости.
Динамическая идентификация типа данных (англ. run-time type information, run-time type identification, RTTI) — механизм в некоторых языках программирования, который позволяет определить тип данных переменной или объекта во время выполнения программы.
Функции первого класса являются неотъемлемой частью функционального программирования, в котором использование функций высшего порядка является стандартной практикой. Простым примером функции высшего порядка будет функция Map, которая принимает в качестве своих аргументов функцию и список и возвращается список, после применения функции к каждому элементу списка. Чтобы язык программирования поддерживал Map, он должен поддерживать передачу функций как аргумента.
Перечисляемый тип (сокращённо перечисле́ние, англ. enumeration, enumerated type) — в программировании тип данных, чьё множество значений представляет собой ограниченный список идентификаторов.
В информатике и теории автоматов состояние цифровой логической схемы или компьютерной программы является техническим термином для всей хранимой информации, к которой схема или программа в данный момент времени имеет доступ. Вывод данных цифровой схемы или компьютерной программы в любой момент времени полностью определяется его текущими входными данными и его состоянием.
Подробнее: Состояние (информатика)
Низкоуровневый язык программирования (язык программирования низкого уровня) — язык программирования, близкий к программированию непосредственно в машинных кодах используемого реального или виртуального (например, байт-код, Microsoft .NET) процессора. Для обозначения машинных команд обычно применяется мнемоническое обозначение. Это позволяет запоминать команды не в виде последовательности двоичных нулей и единиц, а в виде осмысленных сокращений слов человеческого языка (обычно английских).
Множество — тип и структура данных в информатике, которая является реализацией математического объекта множество.
По́ле кла́сса или атрибу́т (переменная-член, data member, class field, instance variable) в объектно-ориентированном программировании — переменная, связанная с классом или объектом. Все данные объекта хранятся в его полях. Доступ к полям осуществляется по их имени. Обычно тип данных каждого поля задаётся в описании класса, членом которого является поле.
Абстра́ктный тип да́нных (АТД) — это математическая модель для типов данных, где тип данных определяется поведением (семантикой) с точки зрения пользователя данных, а именно в терминах возможных значений, возможных операций над данными этого типа и поведения этих операций.
Свойство — способ доступа к внутреннему состоянию объекта, имитирующий переменную некоторого типа. Обращение к свойству объекта выглядит так же, как и обращение к структурному полю (в структурном программировании), но, в действительности, реализовано через вызов функции. При попытке задать значение данного свойства вызывается один метод, а при попытке получить значение данного свойства — другой.
Кодогенерация — часть процесса компиляции, когда специальная часть компилятора, кодогенератор, конвертирует синтаксически корректную программу в последовательность инструкций, которые могут выполняться на машине. При этом могут применяться различные, в первую очередь машинно-зависимые оптимизации. Часто кодогенератор является общей частью для множества компиляторов. Каждый из них генерирует промежуточный код, который подаётся на вход кодогенератору.
Интерпретируемый язык программирования — язык программирования, исходный код на котором выполняется методом интерпретации. Классифицируя языки программирования по способу исполнения, к группе интерпретируемых относят языки, в которых операторы программы друг за другом отдельно транслируются и сразу выполняются (интерпретируются) с помощью специальной программы-интерпретатора (что противопоставляется компилируемым языкам, в которых все операторы программы заранее оттранслированы в объектный код…
Переме́нная в императивном программировании — поименованная, либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным. Данные, находящиеся в переменной (то есть по данному адресу памяти), называются значением этой переменной.
В информатике лексический анализ («токенизация», от англ. tokenizing) — процесс аналитического разбора входной последовательности символов на распознанные группы — лексемы, с целью получения на выходе идентифицированных последовательностей, называемых «токенами» (подобно группировке букв в словах). В простых случаях понятия «лексема» и «токен» идентичны, но более сложные токенизаторы дополнительно классифицируют лексемы по различным типам («идентификатор, оператор», «часть речи» и т. п.). Лексический…
Процеду́рное программи́рование — программирование на императивном языке, при котором последовательно выполняемые операторы можно собрать в подпрограммы, то есть более крупные целостные единицы кода, с помощью механизмов самого языка.
Сравне́ние в программировании — общее название ряда операций над па́рами значений одного типа, реализующих математические отношения равенства и порядка. В языках высокого уровня такие операции, чаще всего, возвращают булево значение («истина» или «ложь»).
Подпрограмма (англ. subroutine) — поименованная или иным образом идентифицированная часть компьютерной программы, содержащая описание определённого набора действий. Подпрограмма может быть многократно вызвана из разных частей программы. В языках программирования для оформления и использования подпрограмм существуют специальные синтаксические средства.
Побо́чные эффе́кты (англ. side effects) — любые действия работающей программы, изменяющие среду выполнения (англ. execution environment). Например, к побочным эффектам относятся…
Подробнее: Побочный эффект (программирование)
Перегрузка процедур и функций — возможность использования одноимённых подпрограмм: процедур или функций в языках программирования.
Логи́ческий тип да́нных, или булев тип, или булевый тип (от англ. Boolean или logical data type) — примитивный тип данных в информатике, принимающий два возможных значения, иногда называемых истиной (true) и ложью (false). Присутствует в подавляющем большинстве языков программирования как самостоятельная сущность или реализуется через численный тип данных. В некоторых языках программирования за значение истина полагается 1, за значение ложь — 0.
Запись — агрегатный тип данных, инкапсулирующий без сокрытия набор значений различных типов.
Дестру́ктор — специальный метод класса, служащий для деинициализации объекта (например освобождения памяти).
Синтаксис языка программирования — набор правил, описывающий комбинации символов алфавита, считающиеся правильно структурированной программой (документом) или её фрагментом. Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям.
В программировании, строковый тип (англ. string «нить, вереница») — тип данных, значениями которого является произвольная последовательность (строка) символов алфавита. Каждая переменная такого типа (строковая переменная) может быть представлена фиксированным количеством байтов либо иметь произвольную длину.
Неопределённое поведение (англ. undefined behaviour, в ряде источников непредсказуемое поведение) — свойство некоторых языков программирования (наиболее заметно в Си), программных библиотек и аппаратного обеспечения в определённых маргинальных ситуациях выдавать результат, зависящий от реализации компилятора (библиотеки, микросхемы) и случайных факторов наподобие состояния памяти или сработавшего прерывания. Другими словами, спецификация не определяет поведение языка (библиотеки, микросхемы) в любых…
Раскрутка компилятора (англ. bootstrapping — от boot и strap) — метод создания транслятора для некоторого языка программирования, при котором транслятор пишется на том же языке программирования, для трансляции которого создаётся; создание транслятором исполняемых файлов из исходного кода самого транслятора. Используется для переноса трансляторов на новые платформы. Появился в середине 1950-х годов. Позволяет создать транслятор, который генерирует сам себя. Применялся для создания трансляторов многих…
По одной из классификаций, языки программирования неформально делятся на сильно и слабо типизированные (англ. strongly and weakly typed), то есть обладающие сильной или слабой системой типов. Эти термины не являются однозначно трактуемыми, и чаще всего используются для указания на достоинства и недостатки конкретного языка. Существуют более конкретные понятия, которые и приводят к называнию тех или иных систем типов «сильными» или «слабыми».
Подробнее: Сильная и слабая типизация
Объе́ктный мо́дуль (также — объектный файл, англ. object file) — файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом подготовленный код (часто называемый двоичным или бинарным), который может быть объединён с другими объектными файлами при помощи редактора связей (компоновщика) для получения готового исполнимого модуля либо библиотеки.
Свёртка списка (англ. folding, также известна как reduce, accumulate) в программировании — функция высшего порядка, которая производит преобразование структуры данных к единственному атомарному значению при помощи заданной функции. Операция свёртки часто используется в функциональном программировании при обработке списков. Свёртка может быть обобщена на произвольный алгебраический тип данных при помощи понятия катаморфизма из теории категорий.
Упоминания в литературе (продолжение)
В практической деятельности очень важно иметь возможность использовать созданные ранее наработки: опыт показывает, что большинство проектно-конструкторских проектов создается на базе новых сочетаний элементов, давно известных как по принципу функционирования, так и по исполнению. AutoCAD обеспечивает эффективное повторное использование имеющихся наработок путем их вставки в рисунки в виде блоков или внешних ссылок. Управлять блоками, внешними ссылками, растровыми изображениями и содержимым рисунков, находящихся в других источниках (и даже подготовленных в других приложениях), позволяет Центр управления AutoCAD DesignCenter.
Современный компьютер представляет собой сложную систему, состоящую из многих компонентов, заключенных в блоки по функциональному назначению. Назначение всей этой системы – обработка информации, которая может включать поиск данных, их сортировку, редактирование, выполнение вычислений, печать, передачу по каналам связи и т. д.
5. Принцип отделения. Исследуемая область, как правило, имеет в своем составе несколько изолированных компонент, внутренняя структура которых достаточно прозрачна или не представляет непосредственного интереса для целей проекта, в таком случае ее место в модели занимает условный пустой блок, для которого определяются только значимые входные и выходные информационные потоки.
В восьмой главе описываются средства редактирования объектов, т. е. выполнение таких действий, которые приводят к изменению геометрии или местоположения объекта. Рассматриваются методы и команды выделения объектов; команды общего редактирования. Отдельно описываются команды для редактирования полилиний, мультилиний, сплайнов и размерных блоков. Кроме того, изучается метод редактирования при помощи ручек – наиболее простой способ редактирования любого объекта.
Disk Transfer Address (DTA) – блок данных, содержащий адреса обмена данными с файлом (чтение или запись). Область DTA для работы с файлом используют многие функции, в том числе и не производящие чтение или запись в файл. Примером может служить функция 4Eh (найти первый файл по шаблону), которая будет неоднократно встречаться в листингах программ.
Не стоит использовать одинаковые списки ключевых слов для разных страниц сайта. Конечно, так проще, но содержимое документов различное, да и поиск ведется по-разному. Если вам хочется автоматизировать эту работу (действительно, довольно трудоемкую, ведь общий объем ключевых слов одного документа может достигать 50 % от его объема), напишите программу, которая выбирала бы текст из определенных блоков документа, например, из контейнеров, заключенных в тэгах H, I и B. Задача не кажется сложной, да и можно найти подобную программу в архивах программного обеспечения в Internet.
14. В начале этого же блока следует объявить и проинициализировать переменную, которая будет хранить состояние формы. Делается это при помощи кода, приведенного в листинге 3.8.
Как уже было сказано выше, книга рассчитана на специалистов, занимающихся ремонтом радиоэлектронного оборудования и ПК, радиолюбителей, интересующихся принципами функционирования источников питания, а также владельцев радиоэлектронной техники, решивших самостоятельно произвести ремонт. Понятно, что их квалификация может быть различной. И если кому-то достаточно только наличия принципиальной схемы источника питания, то другому необходима как сама схема, так и развернутое пояснение к ней. Книга построена таким образом, чтобы удовлетворить все запросы читателей. При этом автор стремился изложить материал в как можно более доступной форме. Автор считает, что приведенные в книге краткие сведения теоретического характера позволят читателям свободнее ориентироваться не только в конкретных схемах, рассмотренных в книге, но и способны дать представление о схемотехнике импульсных преобразователей, как об одном из важных направлений электронной техники. Справочные данные по пассивным и активным компонентам помогут выполнять ремонтные работы в условиях, когда нет возможности приобрести оригинальные элементы для замены дефектных деталей. В этом случае, используя приведенные расчетные соотношения, можно применять элементы, которые есть в наличии, причем выбирать только аналогичные по параметрам и совместимые по конструкции. Учитывая, что схемы, рассмотренные в книге, построены с использованием высоковольтной элементной базы, подбор аналогов должен проводиться самым тщательным образом. Правильный выбор замены будет гарантировать не только работоспособность восстановленного блока питания, но и вашу безопасность.
• Системный блок (часто его называют «системник»). Собственно, это и есть компьютер. Именно в системном блоке расположены все компоненты, которые только и ждут команд от мыши и клавиатуры, чтобы выполнить поставленную вами задачу. Нужно четко представлять, что системный блок – это не одно устройство. Именно в нем самым причудливым (для начинающих пользователей) образом соединяются и совместно работают процессор, оперативная память, видеокарта и многие другие устройства. Причем все они должны соединяться друг с другом не только физически, но и функционально (то есть работать как единое целое). Если добавить немного образности в наше повествование, то можно сказать, что в «системнике» находится спинной и головной «мозг» вашего компьютера.
Прежде всего, это аппаратная часть компьютера (системный блок, монитор, принтер, сканер, МФУ и др.). Поскольку так называемая «hardware» часть рабочего места переводчика является скорее объектом дипломного проекта какой-либо технической специальности, мы не будем подробно останавливаться на ней, заметив лишь на основании собственного опыта, что на сегодняшний день большинство ИТ инструментов мало зависит от аппаратной части ЭВМ и выбор как аппаратной платформы, так и технических характеристик компьютера может быть продиктован субъективными предпочтениями, он практически не влияет на работоспособность отдельно взятого программно-аппаратного комплекса.
В некоторых случаях одну топовую видеокарту можно заменить на две одинаковые подешевле, получив практически такую же производительность. Чтобы две видеокарты могли быть объединены в одной конфигурации, они должны поддерживать соответствующую технологию, которая у NVIDIA носит название SLI, а у ATI/AMD – CrossFireX. При выборе такого варианта надо, во-первых, проверить возможности общего блока питания компьютера (две видеокарты могут потреблять более 150 Вт) и при необходимости заменить его на более мощный. Во-вторых, такое решение требует материнской платы с двумя разъемами PCI-Express x16, причем расположенными так, чтобы видеокарты друг другу не мешали. Потому на практике такое решение применяется редко.
Самым маленьким по размеру вирусом считается Repus (Win95.с) – всего 156 байт (существуют, однако, и более тяжеловесные модификации, вплоть до 256 байт). Для уменьшения размера этого вируса используются различные программные хитрости и уловки; вреда он не приносит, и все программы работают без проблем. При этом есть как резидентные, так и нерезидентные представители Repus (Win95.с). Помимо малого размера, Repus стал первым вирусом, использующим для своего размножения кэш-память Windows. Он ищет в кэш-блоках заголовки файлов, записывается в них и устанавливает для блоков атрибут dirty, который дает системе команду сохранить его на диск. Подобная методика позволяет даже нерезидентному варианту распространяться со скоростью резидентного вируса.
Анализ конкретных употреблений термина «скрепа» показывает, что авторы по-разному подходят к его содержательной стороне. Исследователи синтаксиса текста скрепой называют иногда целые фрагменты текста, например: «Номинация «история, которую рассказывали Ростову», носит внутрипроизведенческий характер и помимо номинативной функции выполняет текстообразующую, являясь своеобразной скрепой различных композиционно-смысловых блоков романа» [Ильенко 1989]. В особом типе текста, художественном диалоге, в качестве показателя связи выделяют наречия как фразовые скрепы. В работах по теории сложного предложения термин скрепа часто используют вместо названий таких формальных средств связи, как союз, союзное слово, функциональные аналоги союзов и т. п. Другими словами, скрепой называется любой сегмент плана выражения, который выполняет связующую функцию.
К основному назначению этой программы также относят создание композиций из полученных тем или иным способом различных фрагментов, включающих текстовые блоки, в том числе композиции из текстовых фрагментов. Причем как к целому изображению, так и к отдельным его фрагментам можно применять различные фильтры и эффекты.
Благодаря объединению всех двоичных разрядов адреса в номер логического блока адресация LBA позволила увеличить поддерживаемую емкость дисков до 2 Тбайт, а также более гибко изменять размер кластера в зависимости от размера диска.
Внешние ТВ-тюнеры второго типа лишены этих недостатков, то есть можно смотреть телевизионные программы, не включая компьютера и не устанавливая вообще никакого дополнительного программного обеспечения, именно поэтому их часто называют автономными ТВ-тюнерами. Они подключаются напрямую к монитору и выводят изображения на него, минуя системный блок. Преимущество тюнеров этого типа – возможность смотреть программы без включения персонального компьютера, так как изображение на мониторе появится при включенном тюнере. Таким образом, нет необходимости включать компьютер, чтобы посмотреть телевизор, потому как телевизором становится монитор.
Часто корпус называют системным блоком, что не всегда верно. Корпус становится системным блоком только тогда, когда в нем уже установлены все необходимые для работы компьютера комплектующие. Разве назовете вы корпус системным блоком, если он будет использоваться в качестве вазона или аквариума для рыб? А ведь такое не только возможно, но и довольно часто практикуется у тех, кто занимается моддингом компьютеров!
Каждая из двух описанных выше архитектурных концепций обладает собственными достоинствами и недостатками, а также своими особыми способами достижения конечной цели. Выбор конкретной архитектуры определяет в дальнейшем, как вы будете реализовывать функциональные и нефункциональные аспекты системы. В частности, эти архитектурные концепции предлагают совершенно различные подходы к обеспечению целостности. Это как раз тот момент, когда на сцене появляется блокчейн. Технология блокчейна (blockchain) (цепочка блоков транзакций) представляет собой инструментальное средство обеспечения целостности распределенных программных систем. Таким образом, блокчейн можно рассматривать как инструмент реализации нефункционального аспекта на уровне реализации.
Что касается коррекции ошибок (ЕСМ, Error Correction Mode), то этот режим относится только к факс-модемам. Коррекция ошибок обычно реализуется программным методом, т. к. аппаратная реализация требует большого количества памяти для запоминания переданных блоков. Программная реализация коррекции ошибок доступна в факс-модемах класса 1, когда для запоминания используется оперативная память компьютера и данный режим поддерживается во многих программах работы с факс-модемами, например, в Microsoft Fax или Symantec WinFax Pro.
На рис. 3.9 показан пример рекламной полосы, полностью отведенной под рекламные объявления, и модульная сетка (предельно простая), использованная для верстки этой полосы. За основу модульной сетки взят тот же минимальный блок, что и в примере на рис. 3.8, однако сетка обычной полосы была несколько сложнее, поскольку предусматривала размещение текстовой информации.
Итак, для большей надежности каждое последующее звено цепочки содержит информацию о предыдущем звене или блоке[52]. Увеличение количества проверенных блоков повышает достоверность всех предыдущих транзакций, ведь каждый раз при создании нового блока пользователи проверяют действительность полной цепочки транзакций: от начала и до конца[53]. Чем длиннее цепочка взаимосвязанных блоков, тем меньше вероятность фальсификации. Механизм, при помощи которого подтверждаются сделки в блокчейне Bitcoin, получил название «подтверждение работы» (proof of work)[54]. Подтверждение цепочки взаимосвязанных блоков самими пользователями – характерное свойство блокчейна, обусловливающее доверие участников распределенной цепочки данных[55].
Практически все информационные блоки на строке состояния являются кнопками, предназначенными для быстрого вызова команд. При щелчке на кнопке с количеством страниц открывается окно Найти и заменить, позволяющее быстро перейти к другой странице документа. Щелчок на кнопке с количеством слов открывает окно статистики документа, которое показывает количество строк, абзацев, знаков без пробелов и с пробелами. Это очень полезно при написании статей и рефератов. В предыдущих версиях Word вызывать окно статистики было гораздо менее удобно.
Кибернетической системой называют упорядоченную совокупность объектов (элементов системы), взаимодействующих и взаимосвязанных между собой, которые способны воспринимать, запоминать и перерабатывать информацию, а также обмениваться ею. Примерами кибернетических систем являются коллективы людей, мозг, вычислительные машины, автоматы. Соответственно этому элементами кибернетической системы могут быть объекты разной физической природы: человек, клетки мозга, блоки вычислительной машины и т. д. Состояние элементов системы описывается некоторым множеством параметров, которые подразделяются на непрерывные, принимающие любые вещественные значения в определенном интервале, и дискретные, принимающие конечные множества значений. Так, например, температура тела человека – непрерывный параметр, а его пол – дискретный параметр. Функционирование кибернетической системы описывается тремя свойствами: функциями, которые учитывают изменение состояний элементов системы, функциями, вызывающими изменения в структуре системы (в том числе и вследствие внешнего воздействия), и функциями, определяющими сигналы, передаваемые системой за ее пределы. Кроме того, учитывается начальное состояние системы.
Мы подходим теперь к центральному вопросу – о метрической структуре строки дротткветта. Уже было высказано предположение, что скальдическая метрика, может быть, не столь сложна, как представляется при подходе к ней с мерками эддического стиха. Как будет показано ниже, скальд оперировал формализованными просодическими структурами, своего рода «готовыми блоками». Для того чтобы вычленить эти блоки и получить тем самым представление о стихотворной технике скальда, необходимы три условия.
Процесс разработки, как правило, носит итерационный характер. Уточняются требования к изделию, появляются новые решения, вносят свои коррективы технологии производства и условия эксплуатации. Для отражения изменений, не влияющих на функциональность и взаимозаменяемость изделия, используется объект «ревизия изделия». У изделия может быть одна или несколько ревизий. Для конкретизации состава ревизии изделия используют объект «определение изделия». Определение изделия всегда рассматривается в некотором контексте. Контекст фактически определяет категорию разработчиков и/или пользователей электронного описания изделия. Конструктор, разрабатывающий изделие, формирует его структуру чаще всего по функциональному принципу – система, подсистема, блок и т.д. Технолог, проектирующий сборку какого-либо агрегата, включает в его состав части систем, размещенных в этом агрегате. Эксплуатанта состав изделия интересует с точки зрения того, как оно обслуживается. Поэтому изделие должно быть определено по крайней мере в трех контекстах – как спроектировано, как построено и как эксплуатируется.
Современные модемы бывают двух типов: внешние и внутренние. Внешний модем – это устройство, имеющее собственный корпус, его ставят на системный блок или рядом с ним и подключают специальным кабелем к COM– или USB-порту. Внутренний модем подсоединяется к материнской плате в системном блоке компьютера. Значительно удобнее и надежнее использовать внешние устройства, за работой которых всегда можно наблюдать, ориентируясь по индикаторам-лампочкам.
При таком подключении каждый компьютер вынужден передавать возникший сигнал по кругу, предварительно его усилив, что выглядит следующим образом. Когда какому-либо устройству требуется передать данные другому устройству, оно формирует специальный сигнал – маркер, содержащий адрес передающего и принимающего устройства, и непосредственно блок передаваемых данных, после чего сформированный маркер передается в сеть. Попадая в кольцо, сигнал переходит от одного компьютера к другому, пока не найдет адресата. Если адрес в маркере совпадает с адресом компьютера, то получившая эти данные машина передает назад уведомление о получении. Таким образом, каждый компьютер принимает полученный маркер, проверяет адрес, в случае несовпадения усиливает его и передает дальше по кольцу.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ ПЕДАГОГИЧЕСКИЙ УНИВЕРСИТЕТ ИМ.М.Е.ЕВСЕВЬЕВА»
Факультет физико-математический
Кафедра информатики и вычислительной техники
Реферат
Принципы структурного программирования. Основные алгоритмические структуры и их суперпозиции.
Выполнила: студентка группы МДИ-117
Федюшкина В. А.
Проверила: Кормилицына Т. В.
Саранск 2021
Содержание
Введение 3
1 Структурное программирование 4
1.1 История становления структурного программирования 4
1.2 Типичные методы структурного программирования 4
1.3 Принципы структурного программирования 6
1.4 Достоинства структурного программирования 8
2 Основные алгоритмические структуры и их суперпозиции 9
Заключение 16
Список использованной литературы 17
Введение
Структурное программирование – методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX в. Э. Дейкстрой, разработана и дополнена Н. Виртом. Типичными методами структурного программирования являются: нисходящее проектирование (проектирование сверху вниз); модульное (процедурное) программирование; структурное кодирование.
Целями структурного программирования являются: обеспечение дисциплины программирования, повышение эффективности и надежности программ, уменьшение времени и стоимости программной разработки. Основные принципы структурного программирования: абстракция, формальность, «разделяй и властвуй», иерархическое упорядочение.
Метод нисходящего проектирования предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы («сверху-вниз»). Средства достижения целей на предыдущем уровне превращаются в цели на нижнем.
Структурное кодирование – это метод написания программ, имеющих определенную структуру. Он основан на использовании небольшого набора структурных операторов, правильность которых легко проанализировать и установить. При этом одни операторы состоят из других, вложенных в них.
Фундаментом структурного программирования является теорема о структурировании, сформулированная итальянскими математиками К.Бомом и Дж.Якопини в 1966 г. Теорема устанавливает, что как бы сложна ни была задача, схему алгоритм ее решения (и, соответственно, программу) всегда можно представить в виде композиции трех типов вложенных блоков: следования (begin-end – начало-конец), ветвления (if-then-else – если-то-иначе), циклов с предусловием (while – пока).
1 Структурное программирование
1.1 История становления структурного программирования
Структурное программирование – методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков.
Цель структурного программирования – повысить производительность труда программистов, в том числе при разработке больших и сложных программных комплексов, сократить число ошибок, упростить отладку, модификацию и сопровождение программного обеспечения.
Первоначально идея структурного программирования появилась на свет в связи с оператором «go to» и сомнениями в целесообразности его применения. Впервые подобные сомнения высказал Хайнц Земанек на совещании по языку Алгол в начале 1959 года в Копенгагене. Однако это выступление не привлекло к себе внимания и не имело последствий. Эдсгер Дейкстра вспоминает: «До некоторой степени я виню себя за то, что в то время не смог оценить значимость этой идеи».
Ситуация коренным образом изменилась через десять лет, когда в марте 1968 года Дейкстра опубликовал своё знаменитое письмо «Оператор Go To считается вредным». Это поистине исторический документ, оказавший заметное влияние на дальнейшее развитие программирования.
-
- Типичные методы структурного программирования
Типичными методами структурного программирования являются:
- нисходящее проектирование (проектирование сверху вниз);
- модульное (процедурное) программирование;
- структурное кодирование.
- Нисходящее проектирование.
Метод нисходящего проектирования предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы («сверху-вниз»). В результате строится иерархическая схема – функциональная структура алгоритма (ФСА), отражающая состав и взаимоподчиненность отдельных функций.
- Модульное программирование.
Модульное программирование является естественным следствием проектирования сверху вниз и заключается в том, что программа разбивается на части – модули, разрабатываемые по отдельности.
Модуль – это самостоятельная часть программы, имеющая определенное назначение и обеспечивающая заданные функции обработки автономно от других программных модулей.
Среди множества модулей различают:
- головной модуль – управляет запуском программного продукта (существует в единственном числе);
- управляющий модуль – обеспечивает вызов других модулей на обработку;
- рабочие модули – выполняют функции обработки;
- сервисные модули и библиотеки, утилиты – реализуют обслуживающие функции.
- Структурное кодирование
Структурное кодирование – это метод написания программ, имеющих определенную структуру и за «Фундаментом структурного программирования» является теорема о структурировании, сформулированная итальянскими математиками К.Бомом и Дж.Якопини в 1966 г.
Теорема устанавливает, что как бы сложна ни была задача, схему алгоритм ее решения (и, соответственно, программу) всегда можно представить в виде композиции трех типов вложенных блоков:
следования (begin-end – начало-конец),
ветвления (if-then-else – если-то-иначе),
циклов с предусловием (while – пока).
-
- Принципы структурного программирования
Становление и развитие структурного программирования связано с именем Эдсгера Дейкстры.
Принцип 1. Следует отказаться от использования оператора безусловного перехода goto.
Принцип 2. Любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл.
- Последовательность – однократное выполнение операций в том порядке, в котором они записаны в тексте программы.
Бертран Мейер поясняет: «Последовательное соединение: используйте выход одного элемента как вход к другому, подобно тому, как электронщики соединяют выход сопротивления со входом конденсатора».
- Ветвление – однократное выполнение одной из двух или более операций, в зависимости от выполнения заданного условия.
- Цикл – многократное исполнение одной и той же операции до тех пор, пока выполняется заданное условие (условие продолжения цикла).
Принцип 3. В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом. Никаких других средств управления последовательностью выполнения операций не предусматривается.
Принцип 4. Повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций). Таким же образом (в виде подпрограмм) можно оформить логически целостные фрагменты программы, даже если они не повторяются.
- В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция «Вызов подпрограммы». При выполнении такой инструкции работает вызванная подпрограмма. После этого продолжается исполнение основной программы, начиная с инструкции, следующей за командой «Вызов подпрограммы».
- Бертран Мейер поясняет: «Преобразуйте элемент, возможно, с внутренними элементами, в подпрограмму, характеризуемую одним входом и одним выходом в потоке управления».
Принцип 5. Каждую логически законченную группу инструкций следует оформить как блок. Блоки являются основой структурного программирования.
Блок – это логически сгруппированная часть исходного кода, например, набор инструкций, записанных подряд в исходном коде программы. Понятие блок означает, что к блоку инструкций следует обращаться как к единой инструкции. Блоки служат для ограничения области видимости переменных и функций. Блоки могут быть пустыми или вложенными один в другой. Границы блока строго определены. Например, в if-инструкции блок ограничен кодом BEGIN..END (в языке Паскаль) или фигурными скобками {…} (в языке C) или отступами (в языке Питон).
Принцип 6. Все перечисленные конструкции должны иметь один вход и один выход.
Произвольные управляющие конструкции (такие, как в блюде спагетти) могут иметь произвольное число входов и выходов. Ограничив себя управляющими конструкциями с одним входом и одним выходом, мы получаем возможность построения произвольных алгоритмов любой сложности с помощью простых и надежных механизмов.
Принцип 7. Разработка программы ведётся пошагово, методом «сверху вниз» (top-down method).
-
- Достоинства структурного программирования
Следование принципам структурного программирования сделало тексты программ, даже довольно крупных, нормально читаемыми. Серьёзно облегчилось понимание программ, появилась возможность разработки программ в нормальном промышленном режиме, когда программу может без особых затруднений понять не только её автор, но и другие программисты. Это позволило разрабатывать достаточно крупные для того времени программные комплексы силами коллективов разработчиков, и сопровождать эти комплексы в течение многих лет, даже в условиях неизбежных изменений в составе персонала.
- Структурное программирование позволяет значительно сократить число вариантов построения программы по одной и той же спецификации, что значительно снижает сложность программы и, что ещё важнее, облегчает понимание её другими разработчиками.
- В структурированных программах логически связанные операторы находятся визуально ближе, а слабо связанные – дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (по сути, сама программа является собственной блок-схемой).
- Сильно упрощается процесс тестирования и отладки структурированных программ.
- Основные алгоритмические структуры и их суперпозиции
С появлением массовых ЭВМ 3-го поколения устаревшая технология программирования оказалась основным фактором, сдерживающим развитие и распространение компьютерных (информационных) технологий, что подтолкнуло ведущие в этой сфере деятельности фирмы, в первую очередь IBM, к разработке новых методологий программирования. Появившийся в начале 1970-х годов новый подход к разработке алгоритмов получил название структурного.
С появлением структурного программирования описанные выше трудности были во многом преодолены. В основе технологических принципов структурного программирования лежит утверждение о том, что логическая структура программы может быть выражена комбинацией трех базовых структур: следования, ветвления и цикла (это содержание теоремы Бема-Якопини).
Следование – самая важная из структур. Она означает, что действия могут быть выполнены друг за другом, рисунок 1:
Рисунок 1.Структура «следование»
Эти прямоугольники могут представлять как одну единственную команду, так и множество операторов, необходимых для выполнения сложной обработки данных.
Ветвление – это структура, обеспечивающая выбор между двумя альтернативами. Выполняется проверка, а затем выбирается один из путей (рисунок 2).
Эта структура называется также «ЕСЛИ – ТО – ИНАЧЕ», или «развилка». Каждый из путей (ТО или ИНАЧЕ) ведет к общей точке слияния, так что выполнение программы продолжается независимо от того, какой путь был выбран.
Рисунок 2.Структура «ветвление»
Может оказаться, что для одного из результатов проверки ничего предпринимать не надо. В этом случае можно применять только один обрабатывающий блок, рисунок 3:
Рисунок 3.Структура «неполное ветвление»
Цикл (или повторение) предусматривает повторное выполнение некоторого Набора команд программы. Если бы циклы не существовали, вряд ли занятие программированием было бы оправданным: циклы позволяют записать длинные последовательности операций обработки данных с помощью небольшого числа повторяющихся команд. Разновидности цикла изображены на рисунок 4 и рисунок 5.
Цикл начинается с проверки логического выражения. Если оно истинно, то выполняется «a», затем все повторяется снова, пока логическое выражение сохраняет значение «истина». Как только оно становится ложным, выполнение операций «а» прекращается и управление передается по программе дальше.
Рисунок 4.Структура цикла «пока»
Рисунок 5.Структура цикла «до»
Рисунок 6.Нахождение суммы трех чисел
Рисунок 7.Нахождение наибольшего из трех чисел
Эти структуры можно комбинировать одну с другой – как путем организации их следований, так и путем создания суперпозиций (вложений одной структуры в другую) – сколь угодно разнообразно для выражения логики алгоритма решения любой задачи. Используя описанные структуры, можно полностью исключить использование каких-либо еще операторов условного и безусловного перехода, что является важным признаком структурного программирования. Направление выполнения команд часто изображают сверху вниз. На рисунке 6 — 8 приведены простейшие примеры структурной реализации алгоритмов работы с величинами.
Рисунок 8.Нахождение суммы 100 чисел
Умение образовывать из базовых структур их суперпозиции в соответствии с условиями конкретной задачи – одно из важнейших в программировании. Допустим, надо ввести в память компьютера 100 чисел и по дороге отсуммировать те из них, которые положительны. Ясно, что ввод – операция циклическая, а внутри этого цикла находится развилка, в которой проверяется знак числа и производится суммирование. Схематически соответствующая суперпозиция изображена на рисунке 9.
Так как выражение, управляющее циклом, проверяется в самом начале, то в случае, если условие сразу окажется ложным, операторы циклической части «a» могут вообще не выполняться. Операторы циклической части «а» должны изменять переменную (или переменные), влияющие на значение логического выражения, иначе программа «зациклится» – будет выполняться бесконечно. Рассмотренная циклическая конструкция называется также цикл «пока», или «цикл с предусловием».
Существует и иная конструкция цикла, которая предусматривает проверку условия, по которому, наоборот, выполнение команд циклической части прекращается, после команд циклической части.
Рисунок 9.Алгоритм типа развилка, вложенная в цикл, для нахождения суммы положительных чисел из 100 возможных
Схематические изображения нескольких суперпозиций базовых алгоритмических структур представлены ниже на рисунках 10-16.
Еще одним важным компонентом структурного подхода к разработке алгоритмов является модульность. Модуль – это последовательность логически связанных операций, оформленных как отдельная часть программы. Использование модулей имеет следующие преимущества:
1) возможность создания программы несколькими программистами;
2) простота проектирования и последующих модификаций программы;
3) упрощение отладки программы – поиска и устранения в ней ошибок;
4) возможность использования готовых библиотек наиболее употребительных модулей.
Но, пожалуй, самым важным достижением структурного подхода к разработке алгоритмов является нисходящее проектирование программ, основанное на идее уровней абстракции, которые становятся уровнями модулей в разрабатываемой программе. На этапе проектирования строится схема иерархии, изображающая эти уровни. Схема иерархии позволяет программисту сначала сконцентрировать внимание на определении того, что надо сделать в программе, а лишь затем решать, как это надо делать. При нисходящем проектировании исходная, подлежащая решению задача разбивается на ряд подзадач, подчиненных по своему содержанию главной задаче. Такое разбиение называется детализацией или декомпозицией.
Рисунок 10.Алгоритм типа «цикл, вложенный в неполную развилку»
Рисунок 11.Алгоритм типа «цикл в цикле»
Рисунок 12.Алгоритм типа «развилка в развилке»
Рисунок 13.Иллюстрация трехкратного вложения одной базовой структуры в другую.
На следующем этапе эти задачи, в свою очередь, разбиваются на более мелкие подчиненные подзадачи и так далее, до уровня относительно небольших подзадач, вторые требуют для решения небольших модулей в 3 — 5 строк. Такой метод проектирования программ позволяет преодолевать проблему сложности разработки программы (и ее последующей отладки и сопровождения).
Заключение
Структурное программирование – методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX в. Э. Дейкстрой, разработана и дополнена Н. Виртом. Типичными методами структурного программирования являются: нисходящее проектирование (проектирование сверху вниз); модульное (процедурное) программирование; структурное кодирование.
Целями структурного программирования являются: обеспечение дисциплины программирования, повышение эффективности и надежности программ, уменьшение времени и стоимости программной разработки. Основные принципы структурного программирования: абстракция, формальность, «разделяй и властвуй», иерархическое упорядочение.
Метод нисходящего проектирования предполагает последовательное разложение общей функции обработки данных на простые функциональные элементы («сверху-вниз»). Средства достижения целей на предыдущем уровне превращаются в цели на нижнем.
Структурное кодирование – это метод написания программ, имеющих определенную структуру. Он основан на использовании небольшого набора структурных операторов, правильность которых легко проанализировать и установить. При этом одни операторы состоят из других, вложенных в них.
Фундаментом структурного программирования является теорема о структурировании, сформулированная итальянскими математиками К.Бомом и Дж.Якопини в 1966 г. Теорема устанавливает, что как бы сложна ни была задача, схему алгоритм ее решения (и, соответственно, программу) всегда можно представить в виде композиции трех типов вложенных блоков: следования (begin-end – начало-конец), ветвления (if-then-else – если-то-иначе), циклов с предусловием (while – пока).
Список использованной литературы
-
- Бутаков Е. А. Методы создания качественного программного обеспечения ЭВМ. М.: Энергоатомиздат, 1984. 232с. С. 114.
- Вирт Н. Систематическое программирование. Введение. М.: Мир, 1977. 184с. С. 139-168.
- Гласс Р. Руководство по надежному программированию. – М.: Финансы и статистика, 1982. – 256с. – С. 84.
- Дал У., Дейкстра Э., Хоор К. Структурное программирование. – М.: Мир, 1975. – 247c.
- Дейкстра Э. Заметки по структурному программированию. // Дал У., Дейкстра Э., Хоор К. Структурное программирование. – М.: Мир, 1975. – С. 7–97.
- Ермаков И. Е., Жигуненко Н. А. Двумерное структурное программирование; класс устремлённых графов. (Теоретические изыскания из опыта языка «ДРАКОН»). – М.: МГУ им. М. В. Ломоносова, 2010. – С. 452–461. – (Сборник трудов V Международной конференции «Инновационные информационно-педагогические технологии в системе ИТ-образования»).
- Лингер Р., Миллс Х., Уитт Б. Теория и практика структурного программирования. – Пер. с англ. – М.: Мир, 1982. – 406с. – С. 7.
- Мейер Б. Почувствуй класс. Учимся программировать хорошо с объектами и контрактами. Пер. с англ. М.: Национальный открытый университет ИНТУИТ: БИНОМ. Лаборатория знаний, 2011. 775с. С. 208.
- Пышкин Е. В. Структурное проектирование: основание и развитие методов. С примерами на языке C++: Учеб. пособие. СПб.: Политехнический университет, 2005. 324 с.