Структу́рное программи́рование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом. В соответствии с данной методологией
1. Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
§ последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
§ ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;
§ цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).
В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.
2. Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур или функций). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.
БИОИНФОРМАТИК Михаил Гельфанд: Эволюция, Секс как причина, ДНК как программа, Появление жизнь
3. Разработка программы ведётся пошагово, методом «сверху вниз».
Сначала пишется текст основной программы, в котором, вместо каждого связного логического фрагмента текста, вставляется вызов подпрограммы, которая будет выполнять этот фрагмент. Вместо настоящих, работающих подпрограмм, в программу вставляются «заглушки», которые ничего не делают. Полученная программа проверяется и отлаживается.
После того, какпрограммист убедится, что подпрограммы вызываются в правильной последовательности (то есть общая структура программы верна), подпрограммы-заглушки последовательно заменяются на реально работающие, причём разработка каждой подпрограммы ведётся тем же методом, что и основной программы. Разработка заканчивается тогда, когда не останется ни одной «затычки», которая не была бы удалена. Такая последовательность гарантирует, что на каждом этапе разработки программист одновременно имеет дело с обозримым и понятным ему множеством фрагментов, и может быть уверен, что общая структура всех более высоких уровней программы верна. При сопровождении и внесении изменений в программу выясняется, в какие именно процедуры нужно внести изменения, и они вносятся, не затрагивая части программы, непосредственно не связанные с ними. Это позволяет гарантировать, что при внесении изменений и исправлении ошибок не выйдет из строя какая-то часть программы, находящаяся в данный момент вне зоны внимания программиста.
Теорема о структурном программировании:
Любую схему алгоритма можно представить в виде композиции вложенных блоков begin и end, условных операторов if, then, else, циклов с предусловием (while) и может быть дополнительных логических переменных (флагов).
Структурное программирование
Эта теорема была сформулирована итальянскими математиками К.Бомом и Дж.Якопини в 1966 году и говорит нам о том, как можно избежать использование оператора перехода goto.
20. Формальные и фактические аргументы.
Файлы. Работа с файлами.
Файл – набор данных размещенных на носителе; регулярная структура данных, состоит из записей.
Для выполнения своих функций по доступу к файлам ОС должна хранить информацию о тех файлах, с которыми она работает: она должна знать имя файла, устройство, на котором размещен этот файл, расположение в памяти буфера этого файла, направление операций ввода-вывода при работе с файлом. Такая информация для каждого файла хранится в виде спец табл, называемой дескриптором файла или управлением блоком файла. Процедура создания такой таблицы называется открытием файла.
Закончив работу с файлом, прикладная программа должна сообщить ОС о том, что этот дескриптор не нужен. Такая процедура называется закрытием файла. Процедура закрытия файла освобождает место в памяти, занимаемая дескриптором, выгружает содержимое буфера, если файл был открыт для записи.
Для работы с файлами система программирования имеет набор соответствующих процедур, принадлежащих разным классам.
3 способа представления файла:
1. Последующий файл – для доступа к определенной записи нужно иметь доступ к предыдущей записи.
3 способа работы с файлами:
1. Если нужно считать весь файл целиком, то надо использовать методы класса IO.
2. Если нужно работать только с одним файлом на чтение и только одним файлом на запись, то надо использовать перенаправление потока
3. Если нельзя применить два вышеперечисленных способа, то надо использовать универсальный способ работы с файлами.
Работа с файлами осуществляется из трех шагов:
1. Файл открывается.
Программа «захватывает» файл, и сообщает об этом ОС Windows, чтобы не возникало конфликтов, когда несколько программ хотят записать данные из файла обычно уточняется, что файл открывается на чтение либо на запись. Операция открытия файла возвращает некий идентификатор, который идентифицирует в программе этот файл.
Этот идентификатор запоминается в файловой переменной.
2. Производится работа с файлом. Данные либо считываются из него, либо в него записываются.
3. Файл открывается. После этой операции он доступен для других программ.
Основные понятия ООП. Классы.
ООП — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.
Класс в ООП — это абстрактный тип данных, который включает в себя не только данные, но и функции и процедуры.
Функции и процедуры класса называются методами и содержат исходный код, предназначенный для обработки внутренних данных объекта данного класса.
После того, как Вы объявили состав класса, необходимо определить (описать), что делает каждая функция-член (метод).
Существует 2 способа включения метода в класс:
1. Определение метода при описании класса.
2. Объявление метода при описании, а его описание — при вызове.
Методы, определенные внутри класса, являются неявно встроенными.
Для определения метода вне класса укажите имя класса, за ним знак :: и имя функции-члена. Официальное название двойного двоеточия — оператор разрешения области действия. Он указывает, что данная функция-член является частью определенного класса. Для статических и динамических классов применимы те же правила и принципы, что и для статических и динамических переменных.
Объект — экземпляр класса.
Инкапсуляция
Класс представляет собой единство трех сущностей – полей, методов и свойств. Объединение этих сущностей в единое целое и называется инкапсуляцией. Инкапсуляция позволяет во многом изолировать класс от остальных частей программы, сделать его «самодостаточным» для решения конкретных задач. В результате класс всегда несет в себя некоторую функциональность. Например, класс TForm
black swan movie full
содержит (инкапсулирует в себе) все необходимое для создания окна Windows-программы, класс Tmemo представляет собой полнофункциональный многострочный текстовый редактор, класс TTimer обеспечивает работу программы с таймером и т.д.
Инкапсуляция является мощным средством обмена готовыми к работе программами заготовками.
Наследование
Любой класс может быть порожден от другого класса. Для этого при его объявлении указывается имя класса родителя: TChildClass = class(TParentClass)
Порожденный класс автоматически наследует поля, методы и свойства своего родителя и может добавлять новые. Таким образом, принцип наследования обеспечивает поэтапное создание сложных классов и разработку собственных библиотек классов.
Принцип наследования приводит от единственного родителя – класса Tobject. Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов – от создания до уничтожения. Программист не может создать класс который не был бы дочерним классом Tobject. Следующие два объявления индентичны:
TaClass = class (TObject)
buy something borrowed the movie
were can i watch the dilemma the movie
Принцип наследования приводит к созданию ветвящегося дерева классов, постепенно разрастающегося при перемещение от класса Tobject к его потомкам. Каждый потомок дополняет возможности своего родителя новыми и передает их своим потомкам.
Полиморфизм
Полиморфизм — это свойство классов решать схожие по смыслу проблемы разными способами. В рамках Object Pascal поведенческие свойства класса определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителя специфические свойства.
Для изменения метода необходимо перекрыть его в потомке, т. е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющих разную алгоритмическую основу и, следовательно, придающих объектам разные свойства. Это и называется полиморфизмом объектов.
Платформа.NET.
.NET Framework — программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является исполняющая среда Common Language Runtime (CLR), способная выполнять как обычные программы, так и серверные веб-приложения..NET Framework поддерживает создание программ, написанных на разных языках программирования.
Основной идеей при разработке.NET Framework являлось обеспечение свободы разработчика за счёт предоставления ему возможности создавать приложения различных типов, способные выполняться на различных типах устройств и в различных средах.
Вторым принципом стало ориентирование на системы, работающие под управлением семейства операционных систем Microsoft Windows.
Программа для.NET Framework, написанная на любом поддерживаемом языке программирования, сначала переводится компилятором в единый для.NET промежуточный байт-код Common Intermediate Language (CIL). В терминах.NET получается сборка, англ. assembly. Затем код либо исполняется виртуальной машиной Common Language Runtime (CLR), либо транслируется в исполняемый код для конкретного целевого процессора.
Использование виртуальной машины предпочтительно, так как избавляет разработчиков от необходимости заботиться об особенностях аппаратной части. В случае использования виртуальной машины CLR, встроенный в неё JIT-компилятор «на лету» (just in time) преобразует промежуточный байт-код в машинные коды нужного процессора. Современная технология динамической компиляции позволяет достигнуть высокого уровня быстродействия. Виртуальная машина CLR также сама заботится о базовой безопасности, управлении памятью и системе исключений, избавляя разработчика от части работы.
Среды разработки, поддерживающие.NET:
· Microsoft Visual Studio (C#, Visual Basic.NET, Managed C++, F#)
· Embarcadero RAD Studio (Delphi for.NET); ранее Borland Developer Studio (Delphi for.NET, C#)

· PascalABC.NET
Приложения.NET также можно разрабатывать в текстовом редакторе, просто вызывая компилятор из командной строки.
Источник: infopedia.su
2. Структурное программирование. Понятия и принципы.
Структурное программирование — методология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры блоков. Предложена в 1970-х годах Э. Дейкстрой и др.
В соответствии с данной методологией любая программа строится без использования оператора goto из трёх базовых управляющих структур: последовательность, ветвление, цикл; кроме того, используются подпрограммы. При этом разработка программы ведётся пошагово, методом «сверху вниз».
Методология структурного программирования появилась как следствие возрастания сложности решаемых на компьютерах задач, и соответственно, усложнения программного обеспечения. В 1970-е годы объёмы и сложность программ достигли такого уровня, что традиционная (неструктурированная) разработка программ перестала удовлетворять потребностям практики. Программы становились слишком сложными, чтобы их можно было нормально сопровождать. Поэтому потребовалась систематизация процесса разработки и структуры программ.
Цель структурного программирования — повысить производительность труда программистов, в том числе при разработке больших и сложных программных комплексов, сократить число ошибок, упростить отладку, модификацию и сопровождение программного обеспечения.
Такая цель была поставлена в связи с ростом сложности программ и неспособностью разработчиков и руководителей крупных программных проектов справиться с проблемами, возникшими в 1960 – 1970 годы в связи с развитием программных средств.
Принципы структурного программирования
Становление и развитие структурного программирования связано с именем Эдсгера Дейкстры. Принцип 1. Следует отказаться от использования оператора безусловного перехода goto. Принцип 2. Любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл.
- Последовательность — однократное выполнение операций в том порядке, в котором они записаны в тексте программы.
- Бертран Мейер поясняет: «Последовательное соединение: используйте выход одного элемента как вход к другому, подобно тому, как электрики соединяют выход сопротивления со входом конденсатора».
- Ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения заданного условия.
- Цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется заданное условие (условие продолжения цикла).
Принцип 3. В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом. Никаких других средств управления последовательностью выполнения операций не предусматривается.
Принцип 4. Повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций). Таким же образом (в виде подпрограмм) можно оформить логически целостные фрагменты программы, даже если они не повторяются.
- В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция «Вызов подпрограммы». При выполнении такой инструкции работает вызванная подпрограмма. После этого продолжается исполнение основной программы, начиная с инструкции, следующей за командой «Вызов подпрограммы».
- Бертран Мейер поясняет: «Преобразуйте элемент, возможно, с внутренними элементами, в подпрограмму, характеризуемую одним входом и одним выходом в потоке управления».
Принцип 5. Каждую логически законченную группу инструкций следует оформить как блок (block). Блоки являются основой структурного программирования. Блок — это логически сгруппированная часть исходного кода, например, набор инструкций, записанных подряд в исходном коде программы. Понятие блок означает, что к блоку инструкций следует обращаться как к единой инструкции.
Блоки служат для ограничения области видимости переменных и функций. Блоки могут быть пустыми или вложенными один в другой. Границы блока строго определены. Например, в if-инструкции блок ограничен кодом BEGIN..END (в языке Паскаль) или фигурными скобками <. >(в языке C) или отступами (в языке Питон). Принцип 6. Все перечисленные конструкции должны иметь один вход и один выход.
Произвольные управляющие конструкции (такие, как в блюде спагетти) могут иметь произвольное число входов и выходов. Ограничив себя управляющими конструкциями с одним входом и одним выходом, мы получаем возможность построения произвольных алгоритмов любой сложности с помощью простых и надежных механизмов.
Принцип 7. Разработка программы ведётся пошагово, методом «сверху вниз» (top–down method)
Источник: studfile.net
Средства структурного программирования
Как известно, любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл. Последовательность — однократное выполнение операций в том порядке, в котором они записаны в тексте программы. Ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения заданного условия. Цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется заданное условие (условие продолжения цикла). Все перечисленные конструкции должны иметь один вход и один выход.
Повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций). Таким же образом (в виде подпрограмм) можно оформить логически целостные фрагменты программы, даже если они не повторяются.
Перечисленные конструкции позволяют наглядно описывать любые алгоритмы и положены в основу реализации главных принципов структурного программирования.
В языке графического программирования LabVIEW имеется пять возможных способов изменения следования программных операций (пять структур):
1. Sequence Structure (последовательная структура) – это инструмент типа многостраничного блокнота. При вызове структуры устанавливается одна страница. Для добавления страниц из контекстного меню вызывается команда Add Frame After (добавить кадр после) или Add Frame Before (добавить кадр перед). Структура позволяет четко определять последовательность отдельных вычислений.
На рисунке 13.1 показан простейший пример , в котором сформированы 2 кадра. На одном вводится А и передается для обработки и вывода.

2. Case Structure(структура с выбором) – это инструмент типа условного оператора текстовых программ используется для создания разветвляющих процессов в зависимости от выполняемого условия, подключаемого к терминалу выбора (рисунок 13.2)..

При вызове структуры по умолчанию устанавливаются сразу две страницы –TrueиFalse(истина и ложь), которые переключаются между собой стрелками вверху рамки или левым щелчком на прямоугольнике и выбором нужной позиции. При работе программы сначала проверяется некоторое условие, а затем по результату проверки выбирается нужная страница, что соответствует условному оператору ifthen оператор> else оператор>в текстовых языках программирования.

Управлять номером рабочей страницы можно не только логическими, но и цифровыми переменными, в этом случае логическая структура Case автоматически поменяется на числовую с двумя страницами. Подключение цифрового прибора к терминалу выбора структуры дает возможность управлять любым числом страниц.
При нажатии правой клавиши мыши по контекстному меню можно добавлять страницу после (Add Case After), дублировать страницу (Duplicate Case), удалять данную страницу (Delete This Case), удалить пустые страницы (Remov Empty Cases), показывать страницу (Show Case), назначить страницей по умолчанию (Make This The Default Case).
Ниже на рисунке 13.3 показано применение структуры Case для определения при генерации 1000 случайных чисел с равномерным распределением их количества по величмне меньше 0,5 и больше.

3. For Loop(цикл определенный) – это оператор цикла, в котором заранее указывается количество повторяемых итераций (цикл с заданным числом проходов). На пиктограмме цикла обязательны терминалы для установки
числа повторенийNи счетчика циклов i (i=0,1,2, … , N).
В поле цикла записываются операции, которые должны выполняться при каждом значении переменной цикла i.В цикле предусмотрена возможность начинать работу с некоторых начальных условий, а также сохранять значения результатов операций на текущем шаге для передачи их на следующий шаг. Для этого существуют сдвиговые регистры (Shift Registrs).
Следует отметить, что в цикле по умолчанию включена возможность индексации, т.е. создание на выходе цикла массива из тех переменных, которые вычисляются на каждом шаге. Существует команда Disable Indexing, отменяющая индексацию.
На рисунке 13.4 приведен пример использования цикла для генерации N случайных чисел с равномерным распределением ri=0÷1. определения математическое ожидание и вывода их в виде массива и на графики двух типов.


Ниже приведены примеры использования цикла для вычисления факториала (рисунок 13.5) и последовательности Фибоначи (рисунок 11). В последнем примере из регистра выбирается предыдущее значение и используется для суммирования. Для этого используется опция Add Element из контекстного меню.

4. While Loop(цикл по условию) – это оператор цикла, в котором количество итераций заранее неизвестно, но имеется дополнительное условие для выхода из цикла, определяемое значением логической переменной, присоединенной к терминалу условия выхода из цикла. При этом операции внутри цикла выполняются, пока на терминале True(истина). Если в ходе проверки контрольного условия на терминале окажется False( ложь), то цикл завершается.
Этот цикл часто используется для алгоритмизации итеративных процессов. В качестве приемра рассмотрим процесс вкючения катушки индуктивности (рисунок 13.6).

Уравнение переходного процесса записывается в форме Коши
и решается, начиная из начального состояния t=0, i0 = 0, используя формулы tk+1 = tk+Δt;

Еще один пример. При расчете звена передачи, когда известно напряжение в начале U1, а мощность в конце P2, приходится подбирать такое U2, при котором расчет звена с конца позволяет получить в начале заданное напряжение с определенной точностью. Применительно к цепи постоянного тока последовательность расчета: принимается исходное U2o, затем J=P2/U2o, потом потеря напряжения dU=R×J. далее U1p=U2o+dU и, наконец, проверка условия | U1-U1p|£ eps.
Виртуальное устройство, реализующее алгоритм, показано на рисунке 13.7. Все промежуточные результаты индексированы с помощью Enable Indexing.

5. Formula Node(формульный узел) – это окантованное рамкой поле, в которое можно текстовым курсором записывать формулы для вычислений по определённым правилам (рисунок 13.8). При вызове структуры устанавливается только рамка, размер которой может меняться курсором стрелка. В поле можно записать несколько арифметических выражений, завершая каждое знаком «;».
Для обмена данными на рамке с помощью контекстного меню устанавливается набор входных (Add Input) и выходных или промежуточных (Add Output) переменных. В появившиеся курсоры латинскими буквами вписываются идентификаторы переменных. При записи формул используются стандартные арифметические знаки (+ — * / **) и функции.

Дата добавления: 2016-11-29 ; просмотров: 1673 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ
Источник: poznayka.org